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

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

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保护,因为后面有操作会破坏其值

更多

获取更多资料、代码,微信公众号:海轰Pro
回复 海轰 即可

    原文作者:海轰Pro
    原文地址: https://blog.csdn.net/weixin_44225182/article/details/102310020
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞