You are on page 1of 5

Matrix Multiplication Program in 8086 Assembly Language

; PROGRAM FOR MATRIX MULTIPLICATION <MAT A X MAT B>


org 100h
MOV AX,1000H;
MOV DS,AX;
MOV AX,8000H
MOV ES,AX
MOV SI,2000H;
MOV DI,3000H;
MOV AX,6000H
MOV SS,AX;
MOV SP,0000H
A_ROWS EQU 02H
A_COLUMNS EQU 03H
B_ROWS EQU 03H
B_COLUMNS EQU 02H
MOV AL, A_ROWS
MOV BL,B_COLUMNS
MUL BL
MOV CX,AX;
MOV BP,4000H
LOOP2: MOV W.ES:[BP],00000H; ; To store 00h to the loations (DS:4000H)where
answer is to be stored
INC BP
INC BP ; the answer will be stored in 9*2=18 locations since each multiplication
can result
in
maaximum 16 bit value
LOOP LOOP2
MOV BP,4000H;
MOV BX,0000H
MOV DX,0000H
MOV AL,A_ROWS
CBW
MOV SP,AX; NUMBER OF ROWS IN 1ST MATRIX (MATRIX A>
L3: MOV CH,B_COLUMNS; NUMBER OF COLUMNS IN 2ND MATRIX(MATRIX B)
L2: MOV AL,B_COLUMNS;
SUB AL,CH
CBW
ADD DI,AX
MOV CL,A_COLUMNS; NUMBER OF COLUMNS IN MTRIX A
L1: MOV AL, DS:[SI+ BX]; take first element of A,i.e. a1
ADD DI,DX

IMUL DS:[DI];
multiply with element of B,i.e.b1
ADD W.ES:[BP],AX
; add and store the result to the location of resulting answer
matrix
INC BX;
point to next element in
MOV AL,B_COLUMNS
CBW
MOV DX,AX
MOV AH,00H
DEC CL
JNZ L1;
INC BP;
INC BP;
MOV BX,0000H;
MOV DI,3000H
MOV DX,0000H
DEC CH;
JNZ L2;
MOV AL,A_COLUMNS
CBW
ADD SI,AX;
DEC SP;
JNZ L3;
HLT
Ret

Mtx multiplication

MOV SI,1000
MOV BP,1020
MOV DI,1050
L2: MOV CX,00
L1: MOV AL,[SI]
MOV BL,[BP]
MUL BL
ADD CX,AX
ADD BP,03
INC SI
CMP BP,1029
JB L1
SUB SI,03
SUB BP,08
ADD DI,02

CMP BP,1023
JB L2
ADD SI,03
SUB BP,03
CMP DI,1051
JB L2
HLT

Matrix mult 3*3

MODEL SMALL
.DATA
M1 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H
M2 DB 01H,01H,01H,01H,01H,01H,01H,01H,01H
M3 DB 9 DUP(0)
M4 DB ' $'
MES1 DB "THE MULTIPLICATION OF TWO MATRIX IS $"
.CODE
.STARTUP
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
MOV CL,0
MOV CH,0
P1:XOR BX,BX
MOV BL,CH
MOV DL,M2[BX]
XOR BX,BX
MOV BL,CL
MOV AL,M1[BX]
MUL DL
ADD M3[BX],AL
XOR BX,BX
MOV BL,CH
MOV DL,M2[BX+1]
XOR BX,BX
MOV BL,CL
MOV AL,M1[BX+1]
MUL DL

ADD M3[BX+1],AL
XOR BX,BX
MOV BL,CH
MOV DL,M2[BX+2]
XOR BX,BX
MOV BL,CL
MOV AL,M1[BX+2]
MUL DL
ADD M3[BX+2],AL
ADD CH,3
CMP CH,8
JBE P1
ADD CL,3
CMP CL,8
JBE P1
MOV DX,0AH
MOV AH,02H
INT 21H
MOV CL,0
MOV CH,0
PP:XOR BX,BX
MOV BL,CL
MOV AL,M3[BX]
MOV DL,AL
ROL DL,4
AND DL,0FH
ADD DL,30H
CMP DL,'9'
JBE F1
ADD DL,7H
F1:MOV AH,02H
INT 21H
MOV AL,M3[BX]
AND AL,0FH
MOV DL,AL
ADD DL,30H
CMP DL,'9'
JBE F2
ADD DL,7
F2:MOV AH,02H
INT 21H
MOV DX,OFFSET M4
MOV AH,09H
INT 21H

INC CH
CMP CH,3
JNZ L1
MOV DX,0AH
MOV AH,02H
INT 21H
MOV CH,0
L1:INC CL
CMP CL,9
JNZ PP
MOV AH,4CH
INT 21H
END
OUTPUT:
THE MULTIPLICATION OF TWO MATRIX IS
03 03 03
03 03 03
03 03 03

You might also like