汇编语言--键盘输入两个一位十进制数 ,以十进制数的形式输出其和

键盘输入两个一位十进制数 ,以十进制数的形式输出其和

stack segment
db 10 dup(?)
stack ends

data segment
;显示提示语句
string_1 db 'input num a: $'
string_2 db 0ah,0dh,'input num b: $'
string_3 db 0ah,0dh,'a+b= $'
data ends

code segment
assume cs:code,ds:data,ss:stack
start:
mov ax,data
mov ds,ax

;显示提示
lea dx,string_1
mov ah,09h
int 21h

;读取第一个数 
mov ah,01h
int 21h
sub al,30h
mov bl,al

lea dx,string_2
mov ah,09h
int 21h

;读取第二个数
mov ah,01h
int 21h
sub al,30h



lea dx,string_3
mov ah,09h
int 21h

;将最后的结果放入al中 AAA是关键 
xor ah,ah
add al,bl
AAA

push ax; 保护ax

;输出结果的高位
add ah,30h
mov dl,ah
mov ah,02h
int 21h

pop ax

;输出结果的低位
add al,30h
mov dl,al
mov ah,02h
int 21h

mov ax,4c00h
int 21h


code ends
end start

结果
在这里插入图片描述
在这里插入图片描述
思路

  1. 分别从键盘上读入两个数
  2. 相加 结果放入al中(AAA那里要求是al)
  3. 利用AAA转换为十进制数
  4. 分别输出结果

总结

  1. 从键盘上读入的数存入计算机的其实是其对应的ASCII值。比如输入 9 其实存的是 39h 所以我们在读入9后,为了更好的进行加法运算,先减去30h,这样计算机中存的就是9h了,便于我们平常的加法运算。
  2. 两个数相加后,结果放入al中,从十进制角度看,9+9=18,其实计算机存储的是12h,存在al中,为了输出的是18 我们需要用到AAA(不清楚AAA的用法,自行百度)
  3. AAA的作用简单说来就是把十六进制转换为十进制,比如al存的是12h,运用AAA后,ah存的为1h,al存的就是8h。
  4. 最后分别输出ah、al中的值,记得+30h,输出也是ASCII输出啊!
  5. 主要对变量的保护,运用栈 这里是对ax保护,因为后面有操作会破坏其值

你可能感兴趣的:(汇编语言,两个十进制数相加,汇编语言)