📄 02c.asm
字号:
DATA SEGMENT
H1 DB "The addends all must be two figures, insufficient adds 0 in front.",13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
MOV AX,DATA
MOV DS,AX
LEA DX,H1 ;打印注释:加数和被加数都必须为两位数,不够的前面补0
MOV AH,09H
INT 21H
SUB CX,CX ;CX清零
SUB DX,DX ;DX清零
CLC ;清CF
MOV AH,1 ;输入第1个数
INT 21H
MOV CH,AL ;放入CH
SUB CH,30H ;ASCII码调整
INT 21H ;输入第2个数
MOV CL,AL ;放入CL
SUB CL,30H ;ASCII码调整
MOV AH,2 ;打印加号
MOV DL,2BH
INT 21H
MOV AH,1 ;输入第3个数
INT 21H
MOV DH,AL ;放入DH
SUB DH,30H ;ASCII码调整
INT 21H ;输入第4个数
MOV DL,AL ;放入DL
SUB DL,30H ;ASCII码调整
ADD CL,DL ;ASCII码个位加法
CMP CL,10 ;比较个位数结果是否大于10
JNC AA ;大于等于10则跳至AA
ADD CH,DH ;个位不向十位进位的十位加法
JMP BB
AA: ADD CH,DH ;个位向十位有进位的十位加法
ADD CH,1
SUB CL,10
BB: MOV DL,3DH ;打印等号
MOV AH,2
INT 21H
CMP CH,10 ;比较十位数结果是否大于10
JNC CC
MOV DL,0 ;打印十位不向百位进位的百位=0
INT 21H
JMP CCC
CC: MOV DL,31H ;打印十位向百位进位的百位=1
INT 21H
SUB CH,10
CCC:ADD CH,30H ;ASCII码调整
MOV DL,CH ;打印结果中的十位
INT 21H
ADD CL,30H ;ASCII码调整
MOV DL,CL ;打印结果中的个位
INT 21H
MOV AH,1 ;暂停
INT 21H
;==============================
RET
START ENDP
CODE ENDS
END STT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -