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