MULT:; UNSIGNED SIXTEEN BIT INTEGER MULTIPLY. ; ON ENTRANCE: MULTIPLIER IN DE. ; MULTIPLICAND IN HL. ; ; ON EXIT: RESULT IN HL. ; ; REGISTER USES: ; ; ; H HIGH ORDER PARTIAL RESULT ; L LOW ORDER PARTIAL RESULT ; D HIGH ORDER MULTIPLICAND ; E LOW ORDER MULTIPLICAND ; B COUNTER FOR NUMBER OF SHIFTS ; C HIGH ORDER BITS OF MULTIPLIER ; A LOW ORDER BITS OF MULTIPLIER ; LD B,16; NUMBER OF BITS- INITIALIZE LD C,D; MOVE MULTIPLIER LD A,E; LD X,Y ;SHOULD GET 'U' ERROR LOAD A,B ;SHOULD GET 'O' ERROR CP 'A' ;TEST 'X' FORMAT EX DE,HL; MOVE MULTIPLICAND LD HL,0; CLEAR PARTIAL RESULT EJECT ;TEST EJECT PROCESSING MLOOP: SRL C; SHIFT MULTIPLIER RIGHT RRA; LEAST SIGNIFICANT BIT IS IN CARRY JR NC,NOADD-$; IF NO CARRY SKIP THE ADD ADD HL,DE; ELSE ADD MULTIPLICAND TO PARTIAL RESULT NOADD: EX DE,HL; SHIFT MULTIPLICAND LEFT ADD HL,HL; BY MULTIPLYING IT BY TWO EX DE,HL; DJNZ MLOOP-$; REPEAT UNTIL NO MORE BITS RET; END;