Professional Documents
Culture Documents
START: LXI SP,STACK (say 2000H) LXI H,INBUF (say 3000H) LXI B,OUTBUF (say 4000h) MOV A,M CALL BCDBIN STAX B HLT BCDBIN: PUSH B PUSH D MOV B,A ANI 0Fh MOV C,A MOV A,B ANI F0h JZ BCD1 RRC RRC RRC RRC MOV D,A XRA A MVI E,0Ah SUM: ADD E DCR D JNZ SUM BCD1: ADD C POP d POP B RET
(say 4000H)
(say 2090H)
NXTBCD: CALL BCDADD INX H DCR C JNZ NXTBCD LXI H,XX63H CALL UNPACK HLT BCDADD: ADD M DAA RNC MOV D,A MOV A,B ADI 01h DAA MOV B,A MOV A,D RET
UNPACK: MOV D,A ANI 0Fh MOV M,A DCX H MOV AD ANI F0h RRC RRC RRC RRC MOV M,A DCX H RET
PROGRAM:8
MULTIPLICATION
LXI SP,STACK LHLD XX50h XCHG CALL MLTPLY SHLD XX90h HLT
(Say 1000H) (XX50 in L register & XX51 in H register) (Multiplier in D & multiplicand in E) (Store product in xx90)
MLTPLY: MOV A,D MVI D,00H LXI H,0000H MVI B,08H NXTBIT: RAR JNC NOADD DAD D NOADD: XCHG DAD H XCHG DCR B JNZ NXTBIT RET NOTE: XCHG: Exchange the top of stack with HL SHLD: Store HL registers direct
NEXT: CALL SBTRAC INX D INX H DCR B JNZ NEXT HLT SBTRAC: MOV A,M XCHG SUB M MOV M,A XCHG INX H INX D MOV A,M XCHG SBB M CC INDIKET (Call MOV M,A RET
higher
NOTE:
CC INDIKET: Call indicate subroutine if reading is than the maximum limit higher
XCHG: Change the index pointer alternately between the set of readings & maximum limits