📄 matrix.asm
字号:
MYDATA SEGMENT
LEN DW 0,'$'
MA DB 16
DB ?
DB 16 DUP(0)
DB 0DH,0AH,'$'
MB DB 16
DB ?
DB 16 DUP(0)
DB 0DH,0AH,'$'
INFO DB 'Mutiply two matrix.'
DB 0DH,0AH,'Now input the ranks of the matrix:$'
INFOA DB 0DH,0AH,'Now input the first matrix in a line:$'
INFOB DB 0DH,0AH,'Input the second matrix:$'
RESULT DB 0DH,0AH,'The result is:$'
ANS DB 32 DUP(0),0DH,0AH,'$'
TEMP DW 0
A1 DW 0
A2 DW 0
MYDATA ENDS
EDATA SEGMENT
EDATA ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:MYDATA,SS:STACKS
START:
MOV AX,MYDATA
MOV DS,AX
MOV AX,EDATA
MOV ES,AX
LEA DX,INFO
MOV AH,09H
INT 21H ;print the information
;LEA DX,LEN
MOV AH,01H
INT 21H ;receive the rank
MOV SI,OFFSET LEN
;MOV AX,[SI]
SUB AL,30H
MOV [SI],AL ;save the rank
LEA DX,INFOA
MOV AH,09H
INT 21H
LEA DX,MA
MOV AH,0AH
INT 21H
MOV SI,OFFSET MA
INC SI
XOR CX,CX
MOV CL,[SI]
INC SI
AGAIN: MOV AL,[SI]
SUB AL,30H
MOV [SI],AL
INC SI
LOOP AGAIN ;store first matrix
LEA DX,INFOB
MOV AH,09H
INT 21H
LEA DX,MB
MOV AH,0AH
INT 21H
MOV SI,OFFSET MB
INC SI
XOR CX,CX
MOV CL,[SI]
INC SI
LOP: MOV AL,[SI]
SUB AL,30H
MOV [SI],AL
INC SI
LOOP LOP ;store second matrix
MOV BP,OFFSET ANS
MOV SI,OFFSET MA
ADD SI,2
MOV A1,SI
MOV DI,OFFSET MB
ADD DI,2
MOV A2,DI
LOP1: MOV BX,0
LOP2: MOV DX,0
MOV CX,LEN
LOP3: MOV AL,[SI]
INC SI
MOV AH,[DI]
ADD DI,LEN
MUL AH
ADD DX,AX
LOOP LOP3
B2A: SUB DL,10
JS NEXT
INC DH
JMP B2A
NEXT: ADD DL,10
ADD DH,30H
MOV [BP],DH
INC BP
ADD DL,30H
MOV [BP],DL
INC BP
MOV SI,A1
MOV DI,A2
INC BX
ADD DI,BX
CMP BX,LEN
JS LOP2
MOV AX,LEN
ADD A1,AX
MOV SI,A1
MOV DI,A2
ADD TEMP,1
MOV AX,TEMP
CMP AX,LEN
JS LOP1
LEA DX,RESULT ;print the result
MOV AH,09H
INT 21H
LEA DX,ANS
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -