📄 ex3mul.asm
字号:
;******************************************************
;* 数据段
;******************************************************
DATA_SEG SEGMENT PARA
;------------------------------------------------------
; TODO: 数据的定义及存储器的分配
;------------------------------------------------------
BEGIN DB 9
INTER DB 9
RESULT DW ?
DATA_SEG ENDS
;******************************************************
;* 代码段
;******************************************************
CODE_SEG SEGMENT PARA
;------------------------------------------------------
MAIN PROC FAR
ASSUME CS:CODE_SEG,DS:DATA_SEG
START:
MOV AX,DATA_SEG
MOV DS,AX
;------------------------------------------------------
; TODO: 从这里开始您的代码
;------------------------------------------------------
MOV CX,9
L2: MOV BL,BEGIN ;BL为低位
MOV BH,INTER ;BH为高位
L1: MOV AL,BH ;二数相乘,并调整为非压缩型BCD码
MUL BL
AAM
MOV RESULT,AX
MOV DL,BH
ADD DL,30H ;显示乘数
MOV AH,02H
INT 21H
MOV DL,2AH ;显示乘号
MOV AH,02H
INT 21H
MOV DL,BL ;显示被乘数
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,3DH ;显示等号
MOV AH,02H
INT 21H
MOV DX,RESULT ;一位数时不显示0
CMP DH,0
JE L3
ADD DX,3030H ;显示结果的十位数
XCHG DH,DL
MOV AH,02H
INT 21H
XCHG DH,DL ;显示结果的个位数
MOV AH,02H
INT 21H
JMP L4
L3: ADD DL,30H ;显示结果的个位数
MOV AH,02H
INT 21H
L4: MOV DL,32 ;显示空格
MOV AH,02H
INT 21H
CMP BL,01H
JZ L5
DEC BL ;内部循环,当低位小于高位时跳转
CMP BH,BL ; 被乘数增1
JAE L1
L5: MOV AL,INTER ; 被乘数数目多一
DEC AL
MOV INTER,AL
; SUB BEGIN,01H
; MOV AL,BEGIN ; 被乘数数目多一
; DEC AL
; MOV BEGIN,AL
DEC BEGIN
MOV DL,0DH ;换行,回车
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
LOOP L2
MOV AX,4C00H
INT 21H
MAIN ENDP
;------------------------------------------------------
CODE_SEG ENDS
;******************************************************
END START ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -