
请问:请简要解释一下汇编指令DAA
两个组合BCD码的加法运算MOVAL,37HMOVBL,35HADDAL,BL;两个16进制数相加,AL此时为37H+35H=6CDAA;DAA调整,这时AL为72H。这...
两个组合BCD码的加法运算
MOV AL,37H
MOV BL,35H
ADD AL,BL ;两个16进制数相加,AL此时为37H+35H=6C
DAA ;DAA调整,这时AL为72H。
这个DAA指令怎么使16进制的加法最终结果却与10进制加法相同,即:37D+35D==72D。
另外,有个说法:汇编语言编写时,如果后面不加字母表示编译器默认它是十进制,所以这个D加与不加没影响,都是十进制,但是我发现在E指令之中并非如此,如果什么都不加,系统实际是按16进制记录的。 展开
MOV AL,37H
MOV BL,35H
ADD AL,BL ;两个16进制数相加,AL此时为37H+35H=6C
DAA ;DAA调整,这时AL为72H。
这个DAA指令怎么使16进制的加法最终结果却与10进制加法相同,即:37D+35D==72D。
另外,有个说法:汇编语言编写时,如果后面不加字母表示编译器默认它是十进制,所以这个D加与不加没影响,都是十进制,但是我发现在E指令之中并非如此,如果什么都不加,系统实际是按16进制记录的。 展开
3个回答
展开全部
MOV AL,37H
MOV BL,35H
ADD AL,BL ;
执行以上3步后,AL = 6CH
DAA的功能:将AL的内容调整为两位组合型的二进制数。DAA的用法: 如果AL的低4位大于9或AF=1,则AL的内容加06H,并将AF置1;然后如果AL的高4位大于9或CF=1,则AL的内容加60H,且将CF置1。如果两个都不满足,则将AF,CF清零。
首先AL = 6CH = 0110 1100B因为AL的低四位1100B大于9,所以AL = AL+06H = 72H,且AF = 1;
这个DAA指令怎么使16进制的加法最终结果却与10进制加法相同,即:37D+35D==72D。
另外,有个说法:汇编语言编写时,如果后面不加字母表示编译器默认它是十进制,所以这个D加与不加没影响,都是十进制
但是我发现在E指令之中并非如此,如果什么都不加,系统实际是按16进制记录的。
首先,楼主的观察力很强,赞一个.
因为DEBUG XXX.EXE后,程序就载入了内存中,而数据在内存中都是以十六进制数表示的哦; 所以,如果你编写的程序有十进制数的话,程序载入内存后,会自动转换成十六进制数哦
PS:若有不明白的地方,可以追问
来自:求助得到的回答

2025-07-02 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
展开全部
MOV AL,37H
MOV BL,35H
ADD AL,BL ;两个16进制数按二进制相加,即ADD是二进制加法指令 AL此时为37H+35H=6C
DAA;调整,根据程序状态字的进位、辅助进位的调整
将 6CH 调整为72H。
呵呵 满意就给加分哦
MOV BL,35H
ADD AL,BL ;两个16进制数按二进制相加,即ADD是二进制加法指令 AL此时为37H+35H=6C
DAA;调整,根据程序状态字的进位、辅助进位的调整
将 6CH 调整为72H。
呵呵 满意就给加分哦
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询