Professional Documents
Culture Documents
model small
.stack 100h
.data
I DB 0
J DB 0
K DB 0
TEMP DW ?
MATRIX1 DB 50 DUP(1,1,1)
MATRIX2 DB 50 DUP(1,2,3)
ANSWER DB 50 DUP(48)
ROW DW ?
COLUMN DW ?
SEN1 DB "INPUT NUMBER OF ROWS: $"
SEN2 DB "INPUT NUMBER OF COLUMNS: $"
SUM DB 0
.code
JMP MAIN
LOO1:
MOV DX, 0000H ;Clears DX during jump
div BX ;Divides AX by BX
PUSH DX ;Pushes DX(remainder) to stack55
INC CX ;Increments counter to track the number of digits
CMP AX, 0 ;Checks if there is still something in AX to divide
JNE LOO1 ;Jumps if AX is not zero
LOO2:
POP DX ;Pops from stack to DX
ADD DX, 30H ;Converts to it's ASCII equivalent
MOV AH, 02H
INT 21H ;calls DOS to display character
LOOP LOO2 ;Loops till CX equals zero
RET ;returns control
display ENDP
L1:
L2:
MOV SUM,0
L3:
PUSH BX
MOV AX,BX
MOV DX,ROW
MUL DX
MOV BX,AX
MOV CL,MATRIX1[BX+SI]
POP BX
PUSH SI
PUSH BX
MOV BX,SI
MOV AX,BX
MOV DX,ROW
MUL DX
MOV BX,AX
MOV SI,BX
MOV AL,MATRIX2[BX+DI]
POP BX
POP SI
MUL CL
ADD SUM,AL
INC K
INC SI
MOV CX,ROW
CMP K,CL
JNE L3
MOV CL,SUM
PUSH BX
MOV AX,BX
MOV DX,ROW
MUL DX
MOV BX,AX
MOV ANSWER[DI+BX],CL
POP BX
MOV SI,0
MOV K,0
INC J
INC DI
MOV CX,ROW
CMP J,CL
JNE L2
INC I
INC BX
MOV J,0
MOV DI,0
MOV CX,ROW
CMP I,CL
JE H1
JMP L1
H1:
PP:
RET
MULTI ENDP
MAIN PROC
MOV AX,@DATA
MOV DS,AX
SUB ROW,48
SUB COLUMN,48
CALL MULTI
MOV BX,0
MOV BX,COLUMN
MOV AX,BX
MUL BL
MOV CH,0
MOV CL,AL
MOV SI,0
PRINTLOOP:
MOV AH,0
MOV AL,ANSWER[SI]
PUSH SI
PUSH CX
CALL display
POP CX
POP SI
MOV DL,32
MOV AH,02H
INT 21H
INC SI
MOV BX,SI
MOV AX,BX
MOV BX,COLUMN
DIV BL
CMP AH,0
JE PRINTNEWLINE
JMP EW
PRINTNEWLINE:
CALL NEWLINE
EW:
LOOP PRINTLOOP
EXIT:
MOV AH,4CH
INT 21H
END
MAIN ENDP