.model small
.stack
.data
.code
.startup
mov ah,01h
int 21h ; 输入第一个数的十位数字,得到该数字对应的ASCII值,存放在AL中
mov bl,al
sub bl,30h ; 由数字的ASCII码得到对应的数字,并将该数字存放在BL中
int 21h ; 输入第一个数的个位数字,得到该数字对应的ASCII值
sub al,30h
mov bh,al ; 由数字的ASCII码得到对应的数字,并将该数字存放在BH中,至此,BL存放第一个数的十位数字,BH存放第一个数的个位数字
mov al,10
mul bl ; 十位数字乘以10,结果保存在AL中
add al,bh ; 加上个位数字,至此输入的第一个数据保存在AL中
mov cl,al ; 将AL中内容保存在CL中,即CL中存放第一个数据
mov ah,02h
mov dl,0Dh ; 回车
int 21h
mov dl,0ah ; 换行
int 21h
mov ah,01h
int 21h ; 输入第二个数的十位数字,得到该数字对应的ASCII值,存放在AL中
mov bl,al
sub bl,30h ; 由数字的ASCII码得到对应的数字,并将该数字存放在BL中
int 21h ; 输入第二个数的个位数字,得到该数字对应的ASCII值
sub al,30h
mov bh,al ; 由数字的ASCII码得到对应的数字,并将该数字存放在BH中,至此,BL存放第二个数的十位数字,BH存放第二个数的个位数字
mov al,10
mul bl ; 十位数字乘以10,结果保存在AL中
add al,bh ; 加上个位数字,至此输入的第二个数据保存在AL中
add cl,al ; 第一个数据与第二个数据相加,和存放在CL寄存器中
mov ah,02h
mov dl,0Dh
int 21h ; 回车
mov dl,0ah
int 21h ; 换行
mov al,cl ; 将两个数据相加的和传送到AL中
mov ah,0
mov bl,100
div bl ; 和除以100,得到和的百位数字, 存放在AL中,余数即对应的十位和个位数字,存放在AH中
mov cl,al ; 将百位数字传送到CL中
add cl,30h ; 得到百位数字对应的ASCII码
mov al,ah ; 将十位和个位数字传送到AL中
mov ah,0
mov bl,10
div bl ; 除以10,得到和的十位数字,存放在AL中,余数即对应的个位数字,存放在AH中
add al,30h ; 得到十位数字对应的ASCII码
add ah,30h ; 得到个位数字对应的ASCII码
mov bx,ax ; 十位数字对应的ASCII码存放在BL中,个位数字对应的ASCII码存放在BH中
mov ah,2
mov dl,cl
int 21h ; 输出百位数字
mov dl,bl
int 21h ; 输出十位数字
mov dl,bh
int 21h ; 输出个位数字
.exit 0
end
这是我自己写的 注释在后面 不知道这个可以不