0% found this document useful (0 votes)
13 views

Assignment 2 Solution

Coal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Assignment 2 Solution

Coal
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 2

Assignment 2 Solution

.MODEL SMALL
ORG 0x0100
.STACK 100H
.DATA
MULTIPLICAND DB 0x45 ,0xD5 ,0x17 , 0x12
MULTIPLIER DB 0x45 ,0xAB ,0x90 , 0x87
PRODUCT DB 8 DUP(?)
.CODE
MOV AX,@DATA
MOV DS,AX
MOV SI,3 ; FOR MULTIPLIER
MOV DI,7 ; FOR PRODUCT
MOV CX,4 ; SIZE OF LOOP FOR EACH BYTE OF MULTIPLIER IN
ARRAY
; NEXT MULTIPLIER IS LOOP TO SWITCH BETWEEN VALUES OF
;MULTIPLIER ARRAY
NEXTMULTIPLIER:
PUSH CX ; SAVING CX OF IN STACK
PUSH DI ; SAVING DI OF IN STACK
MOV BX,3 ; FOR MULTIPLICAND
MOV CX,4 ; SIZE OF LOOP FOR EACH BYTE OF MULTIPLICAND IN ARRAY
; NEXT MULTIPLICAND IS LOOP TO SWITCH BETWEEN VALUES OF
;MULTIPLICAND ARRAY
NEXTMULTIPLICAND:
PUSH CX ; SAVING CX OF NEXTMULTIPLICAND LOOP IN STACK
XOR AX,AX ; CLEARING AX
MOV AL,[MULTIPLICAND+BX] ; STORING BYTE OF MULTIPLICAND
MOV DL,[MULTIPLIER+SI] ; STORING BYTE OF MULTIPLIER
MOV CX,8 ; SIZE OF LOOP FOR BYTE MULTIPLICATION
; MAIN CODE FOR MULTIPLICATION USING SHIFT MANIPULATION
COMMANDS
MULTIPLYBYTE: ; LOOP FOR BYTE MULTIPLICATION STARTS HERE
CMP DL,0 ; CHECKING IF MULTIPLIER IS 0 OR NOT
JE END_MULTIPLICATION
CMP AX,0 ; CHECKING IF MULTIPLICAND IS 0 OR NOT
JE END_MULTIPLICATION
SHR DX,1 ; SHIFTING MULTILIER RIGHT TO CHECK IF LSB IS 1 0R 0
JNC SKIP
TEST AX,0 ; RESETTING CF FLAG AFFECTED BY SHR
ADC [PRODUCT+DI],AL
ADC [PRODUCT+DI-1],AH
SKIP:
SHL AX,1 ; SHIFTING MULTIPLICAND LEFT
LOOP MULTIPLYBYTE ; LOOP FOR BYTE MULTIPLICATION ENDS HERE
END_MULTIPLICATION:
DEC DI
DEC BX
POP CX ; RESTORING VALUE OF CX FROM STACK
LOOP NEXTMULTIPLICAND
POP DI ; RESTORING VALUE OF DI FROM STACK
POP CX ; RESTORING VALUE OF CX FROM STACK
DEC SI
DEC DI
LOOP NEXTMULTIPLIER
ENDLOOP:
.EXIT

You might also like