2025年4月27日 星期日 乙巳(蛇)年 正月廿八 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 汇编

汇编语言DAA指令:加法后的十进制调整

时间:03-05来源:作者:点击数:104

32 位模式下,ADD 或 ADC 指令在 AL 中生成二进制和数,DAA(加法后的十进制调整)指令将和数转换为压缩十进制格式。比如,下述指令执行压缩十进制数 35 加 48。二进制和数(7Dh)被调整为 83h,即 35 和 48 的压缩十进制和数。

mov al, 35h
add al, 48h        ; AL = 7Dh
daa                    ; AL = 83h (调整后的结果)

【示例】下面的程序执行两个 16 位压缩十进制整数加法,并将和数保存在一个压缩双字中。加法要求和数变量的存储大小比操作数多一个数字:

  • ; 压缩十进制示例 (AddPacked.asm)
  • ; 演示压缩十进制加法。
  • INCLUDE Irvine32.inc
  • .data
  • packed_1 WORD 4536h
  • packed_2 WORD 7207h
  • sum DWORD ?
  • .code
  • main PROC
  • ; 初始化和数与索引
  • mov sum,0
  • mov esi,0
  • ; 低字节相加
  • mov al,BYTE PTR packed_1[esi]
  • add al,BYTE PTR packed_2[esi]
  • daa
  • mov BYTE PTR sum[esi],al
  • ; 高字节相加,包括进位标志位
  • inc esi
  • mov al,BYTE PTR packed_1[esi]
  • adc al,BYTE PTR packed_2[esi]
  • daa
  • mov BYTE PTR sum[esi],al
  • ; 若还有进位,则加上该进位值
  • inc esi
  • mov al,0
  • adc al,0
  • mov BYTE PTR sum[esi],al
  • ; 用十六进制显示和数
  • mov eax,sum
  • call WriteHex
  • call Crlf
  • exit
  • main ENDP
  • END main
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门