home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
utils
/
asmutl
/
z80asm24.lbr
/
TEST2.AZM
/
TEST2.ASM
Wrap
Assembly Source File
|
1987-10-13
|
1KB
|
37 lines
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;