📄 4.asm
字号:
;九九乘法表
CR MACRO ;换行宏
MOV AH,2 ;显示输出
MOV DL,0AH ; 输出换行
INT 21H ;DOS调用
MOV DL,0DH ;输出回车
INT 21H ;DOS调用
ENDM
SHOW MACRO ;显示乘积的宏
LOCAL NEXT1 ;给NEXT1建立标号
MOV AH,0
AAM ;因为乘积最大为81,所以可采用BCD码乘法调整
MOV DX,AX
MOV AH,2
OR DX,3030H
XCHG DH,DL
CMP DL,30H ;这里加了个判断,用于判断10位是否为零,例如乘积为09
;则打头的零就不用输出
JZ NEXT1
INT 21H
NEXT1:
XCHG DH,DL
INT 21H
MOV DL,20H
INT 21H
ENDM
DSEG SEGMENT
SEN DB ?,'*',?,'= $' ;为输出乘式做准备,第一个问号处存放被乘数
;第二个放乘数
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV BL,1 ;在控制行数的同时,控制乘数的最大值(1-9)
NEXT: MOV BH,BL
INC BH ;这里的BH用于存放(BH)+1,用于控制被乘数的循环乘积
MOV CL,1 ;CL存放被乘数,从1开始乘直到等于(BH)的值
NEXT0: MOV AL,BL
MOV AH,0
MUL CL
PUSH AX
MOV AH,09H
MOV SEN,CL ;在这里开始存放显示的乘数、被乘数
ADD SEN,30H
MOV SEN+2,BL
ADD SEN+2,30H
LEA DX,SEN
INT 21H ;输出乘式
POP AX
SHOW ;显示乘积
INC CL
CMP CL,BH
JB NEXT0
CR
INC BL
CMP BL,10
JB NEXT
MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -