; SUBROUTINE TO MULTIPLY AN UNSIGNED 16-BIT # BY AN UNSIGNED 8-BIT #. ; ENTRY: (DE) = MULTIPLICAND, UNSIGNED ; (B) = MULTIPLIER, UNSIGNED. ; CALL MUL16. ; EXIT: (HL) = PRODUCT. ; (DE) = DESTROYED. ; (B) = 0. ; .org 0000h LD SP, 0080h ; ADDED FOR TESTING PURPOSES. LD DE, 1234h ; ADDED FOR TESTING PURPOSES. LD B, 06H ; ADDED FOR TESTING PURPOSES. CALL MUL16 ; ADDED FOR TESTING PURPOSES. HALT ; ADDED FOR TESTING PURPOSES. MUL16: LD HL, 0 ; CLEAR PARTIAL PRODUCT. LOOP: SRL B ; SHIFT OUT MULIPLIER BIT. JP NC, CONT ; GO IF NO CARRY (1 BIT). ADD HL, DE ; ADD MULTIPLICAND. CONT: RET Z ; GO IF MULTIPLIER. EX DE, HL ; MULTIPLICAND TO HL. ADD HL, HL ; SHIFT MULTIPLICAND. EX DE, HL ; SWAP BACK JP LOOP ; CONTINUE. .END