Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Design Program that simulate operation of a 16-bit signed matrix calculator: Ass

ID: 3680088 • Letter: D

Question

Design Program that simulate operation of a 16-bit signed matrix calculator: Assumed 3X3 matrix.

1- Raise matrix A to the Power of the Scalar value (Enter by the user).

2- Calculate matrix addition (Matrix C = Matrix A + Matrix B).

3- Calculate matrix subtraction (Matrix C = Matrix A - Matrix B).

- solve it only in 8086 assembly language; do not use any other assembly language , explane every setp in the code .

- You have to MASM assembler to create your segment, constant, variable.

= - The program take 16-bit signed operands, all operands have to entered in decimal form and outputted in decimal from (-32768 to + 32767)

Explanation / Answer

Matrix addition

DATA SEGMENT

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$'

M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$'

M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$' M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$' M5 DB 0AH,0DH,0AH,' SUM OF TWO MATRICES: ',0AH,0DH, '$'

M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$'

MAT1 DB 10 DUP(0)

MAT2 DB 10 DUP(0)

MAT3 DB 30 DUP(0)

ROW DB 00H

COL DB 00H

DATA ENDS

MESSAGE MACRO MESS

LEA DX,MESS

MOV AH,09H

INT 21H

BSPCE MACRO ASC

MOV DL,ASC

MOV AH,06H

INT 21H

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MESSAGE M1

CALL READO

MOV BX,DX

MOV ROW,DH

MOV COL,DL

MESSAGE M2

CALL READO

CMP BX,DX

JZ L1

MESSAGE M6

JMP L7

L1:MESSAGE M3

LEA SI,MAT1

CALL READ1

MESSAGE M4

LEA SI,MAT2

CALL READ1

MESSAGE M5

BSPCE 0AH

LEA DI,MAT1

LEA SI,MAT2

LEA BX,MAT3

MOV CH,ROW

L6:MOV CL,COL

L2:MOV DH,00H

MOV DL,[SI]

ADD DL,[DI]

JNC L5

INC DH

L5:MOV [BX],DH

INC BX

MOV [BX],DL

INC DI

INC SI

INC BX

DEC CL

JNZ L2

DEC CH

JZ L3

JMP L6

L7: MOV AH,4CH

INT 21H

READO PROC NEAR

PUBLIC READO

MOV AH,01H

INT 21H

MOV DH,AL

SUB DH,30H

BSPCE ' '

MOV AH,01H

INT 21H

MOV DL,AL

SUB DL,30H

   

READ1 PROC NEAR

PUBLIC READ1

BSPCE 0AH

N2:MOV BH,COL

N1:CALL READ

MOV [SI],DL

INC SI

BSPCE ' '

DEC BH

JNZ N1

DEC CH

JZ N3

BSPCE 0AH

BSPCE 0DH

JMP N2

READ1 ENDP

READ PROC NEAR

PUBLIC READ

MOV AH,01H

INT 21H

MOV CL,04H

MOV DL,AL

SUB DL,30H

CMP DL,0AH

JC R1

SUB DL,07H

R1:SHL DL,CL

MOV AH,01H

INT 21H

SUB AL,30H

CMP AL, 0AH

JC R2

SUB AL,07H

AND AL,0FH

R2:OR DL,AL

READ ENDP

DISP PROC NEAR

PUBLIC DISP

LEA BX,MAT3

MOV CH,ROW

D4:MOV DH,COL

LOP:MOV CL,04H

MOV DL,[BX]

ADD DL,30H

MOV AH,06H

INT 21H

INC BX

MOV CL,04H

MOV DL,[BX]

SHR DL,CL

CMP DL,0AH

JC D1

ADD DL,07H

D1: ADD DL,30H

MOV AH,06H

INT 21H

MOV DL,[BX]

AND DL,0FH

CMP DL,0AH

JC D2

ADD DL,07H

D2: ADD DL,30H

MOV AH,06H

INT 21H

INC BX

BSPCE ' '

DEC DH

JNZ LOP

DEC CH

JZ D3

BSPCE 0AH

BSPCE 0DH

JMP D4

       

D3: RET

DISP ENDP

CODE ENDS

END START

M1 DB 'ENTER THE ORDER OF FIRST MATRIX:','$'

M2 DB 0AH,0DH,0AH,'ENTER THE ORDER OF SECOND MATRIX:','$'

M3 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF FIRST MATRIX:',0AH,0DH,'$'

M4 DB 0AH,0DH,0AH,'ENTER THE ELEMENTS OF SECOND MATRIX:',0AH,0DH,'$'

M5 DB 0AH,0DH,0AH,' DIFFERENCE OF TWO MATRICES: ',0AH,0DH, '$'

M6 DB 0AH,0DH,0AH,' MATRICES CANNOT BE ADDED: ','$'

MAT1 DB 10 DUP(0)

MAT2 DB 10 DUP(0)

MAT3 DB 30 DUP(0)

ROW DB 00H

COL DB 00H

DATA ENDS

MESSAGE MACRO MESS

LEA DX,MESS

MOV AH,09H

INT 21H

BSPCE MACRO ASC

MOV DL,ASC

MOV AH,06H

INT 21H

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MESSAGE M1

CALL READO

MOV BX,DX

MOV ROW,DH

MOV COL,DL

MESSAGE M2

CALL READO

CMP BX,DX

JZ L1

MESSAGE M6

JMP L7

L1:MESSAGE M3

LEA SI,MAT1

CALL READ1

MESSAGE M4

LEA SI,MAT2

CALL READ1

MESSAGE M5

BSPCE 0AH

LEA DI,MAT1

LEA SI,MAT2

LEA BX,MAT3

MOV CH,ROW

L6:MOV CL,COL

L2:MOV DH,' '

MOV DL,[DI]

SUB DL,[SI]

JNC L52

NEG DL

MOV DH,'-'

L5:MOV [BX],DH

INC BX

MOV [BX],DL

INC DI

INC SI

INC BX

DEC CL

JNZ L2

DEC CH

JZ L3

JMP L6

L7: MOV AH,4CH

INT 21H

READO PROC NEAR

PUBLIC READO

MOV AH,01H

INT 21H

MOV DH,AL

SUB DH,30H

BSPCE ' '

MOV AH,01H

INT 21H

MOV DL,AL

SUB DL,30H

READ1 PROC NEAR

BSPCE 0AH

N2:MOV BH,COL

N1:CALL READ

MOV [SI],DL

INC SI

BSPCE ' '

DEC BH

JNZ N1

DEC CH

JZ N3

BSPCE 0AH

BSPCE 0DH

JMP N2

READ1 ENDP

READ PROC NEAR

PUBLIC READ

MOV AH,01H

INT 21H

MOV CL,04H

MOV DL,AL

SUB DL,30H

CMP DL,0AH

JC R1

SUB DL,07H

AND DL,0FH

R1:SHL DL,CL

MOV AH,01H

INT 21H

SUB AL,30H

CMP AL, 0AH

JC R2

SUB AL,07H

AND AL,0FH

R2:OR DL,AL

READ ENDP

DISP PROC NEAR

PUBLIC DISP

LEA BX,MAT3

MOV CH,ROW

D4:MOV DH,COL

LOP:MOV CL,04H

MOV DL,[BX]

MOV AH,06H

INT 21H

INC BX

MOV DL,[BX]

SHR DL,CL

CMP DL,0AH

JC D1

ADD DL,07H

D1: ADD DL,30H

MOV AH,06H

INT 21H

MOV DL,[BX]

AND DL,0FH

CMP DL,0AH

JC D2

ADD DL,07H

D2: ADD DL,30H

MOV AH,06H

INT 21H

INC BX

BSPCE ' '

DEC DH

JNZ LOP

DEC CH

JZ D3

BSPCE 0AH

BSPCE 0DH

JMP D4

       

D3: RET

DISP ENDP

   CODE ENDS

END START