25 lines
1.1 KiB
Text
25 lines
1.1 KiB
Text
PRMLEN: equ 4 ; length of permutation string
|
|
puts: equ 9 ; CP/M print string
|
|
org 100h
|
|
lxi d,perms ; Start with first permutation
|
|
perm: lxi h,mperm ; Missing permutation
|
|
mvi b,PRMLEN ; Length of permutation
|
|
char: ldax d ; Load character
|
|
ora a ; Done?
|
|
jz done
|
|
xra m ; If not, XOR into missing permutation
|
|
mov m,a
|
|
inx h ; Increment pointers
|
|
inx d
|
|
dcr b ; Next character of current permutation
|
|
jnz char
|
|
jmp perm ; Next permutation
|
|
done: lxi d,msg ; Print the message and exit
|
|
mvi c,puts
|
|
jmp 5
|
|
msg: db 'Missing permutation: '
|
|
mperm: db 0,0,0,0,'$' ; placeholder
|
|
perms: db 'ABCD','CABD','ACDB','DACB','BCDA','ACBD','ADCB','CDAB'
|
|
db 'DABC','BCAD','CADB','CDBA','CBAD','ABDC','ADBC','BDCA'
|
|
db 'DCBA','BACD','BADC','BDAC','CBDA','DBCA','DCAB'
|
|
db 0 ; end marker
|