汇编语言将十六进制数转换成十进制数_汇编语言--键盘输入两个一位十进制数 ,以十进制数的形式输出其和...

这篇博客介绍了如何使用汇编语言处理键盘输入的两个一位十进制数,并将它们相加,然后转换为十进制形式输出。在读取输入时,需要将ASCII值减去30h得到十进制数值。相加后,利用AAA指令将十六进制结果转换为十进制,最后通过加30h确保ASCII输出。整个过程涉及到了变量保护和栈的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

67ee9c8956fc43d1639c4ae379d51187.png

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

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

结果

ec7e373938f369cc510bbb6cfbe2393e.png

bf26f6673502d05393664e1f08c42915.png

思路

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

5107ab703a9b34bae0475f898f932d3f.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值