You are on page 1of 2

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> MOV CH,B_COLUMNS; NUMBER OF COLUMNS IN 2ND MATRIX(MATRIX B) MOV AL,B_COLUMNS; SUB AL,CH CBW ADD DI,AX MOV CL,A_COLUMNS; NUMBER OF COLUMNS IN MTRIX A 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 resul 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;

L3: L2:

L1:

ting

MOV CBW ADD DEC JNZ HLT ret

AL,A_COLUMNS SI,AX; SP; L3;

You might also like