电工学习网

 找回密码
 立即注册

十进制调整指令

2015-3-22 08:49| 编辑:电工学习网| 查看: 14217| 评论: 0

    十进制调整指令对二进制运算结果进行十进制调整,以得到十进制的运算结果。十进制在计算机中也要用二进制表示,这就是十进制编码的十进制数: BCD 码。 8086 支持压缩的 BCD 码和非压缩的 BCD 码,相应的十进制调整指令分为压缩 BCD 码调整指令和非压缩 BCD 码调整指令。
1 .压缩 BCD 码调整指令
(1)加法的十进制调整指令 DAA 语句
  格式: DAA
  功能:如果 AL 寄存器中低 4 位大于 9 或辅助进位( AF ) =1 ,则( AL ) = ( AL ) +6 且( AF ) =1 ;如果( AL ) >= 0A 0H 或( CF ) =1 ,则( AL ) = ( AL ) +60H 且( CF ) =1 。同时, SF 、 ZF 、 PF 均有影响。
  【例】压缩 BCD 码的加法运算。
  MOV AL , 68H ;( AL ) =68H ,表示压缩 BCD 码 68
  MOV BL , 28H ;( BL ) =28H ,表示压缩 BCD 码 28
  ADD AL , BL ;二进制加法 :( AL )=68H+28H=90H
  DAA ;十进制调整:( AL ) =96H
    ;实现压缩 BCD 码加法: 68+28=96
(2) 减法的十进制调整指令 DAS 语句
  格式: DAS
  功能:如果( AF ) =1 或 AL 寄存器中低 4 位大于 9 ,则( AL ) = ( AL )- 6 且( AF ) =1 ;如果( AL ) >= 0A 0H 或( CF ) =1 ,则( AL ) = ( AL )- 60H 且( CF ) =1 。同时 SF 、 ZF 、 PF 均受影响。
  【例】压缩 BCD 码的减法运算。
  MOV AL , 67H ;(AL)=67H, 表示压缩 BCD 码 67
  MOV BL , 28H ;(BL)=28H, 表示压缩 BCD 码 28
  SUB AL , BL ; ( AL )=67H-28H=3FH
  DAS ;十进制调整:( AL ) =39H;
   ;实现压缩 BCD 码减法: 67 - 28=39

2 .非压缩 BCD 码调整指令
(1)加法的非压缩 BCD 码调整指令 AAA
  语句格式: AAA
  功能:如果 AL 的低 4 位大于 9 或( AF ) =1 ,则:
( AL ) = ( AL ) +6 ( AH ) = ( AH ) +1 ( AF ) = ( CF ) =1
且 AL 高 4 位清零。
否则:( CF ) = ( AF ) =0 AL 高 4 位清零。

(2)减法的非压缩 BCD 码调整指令 AAS
  语句格式: AAS
  功能:如果 AL 的低 4 位大于 9 或( AF) =1 ,则:(AL) = ( AL )- 6
( AH ) = ( AH )- 1 ( AF ) = ( CF ) =1 AL 高 4 位清零。
否则:( CF ) = ( AF ) =0 AL 高 4 位清零。
其他标志位 OF 、 PF 、 SF 、 ZF 不确定。
(3)乘法的非压缩 BCD 码调整指令 AAM
  语句格式: AAM
  功能:被调整的乘积在 AX 中,对 AL 按 10 取模,则:
( AL )/ 0AH → AH (商): AL (余数)
其中 AH 为商, AL 为余数,标志位 AF 、 CF 、 OF 、 PF 、 SF 、 ZF 受影响。
(4)除法的非压缩 BCD 码调整指令 AAD
  语句格式: AAD
  功能:除法运算前,先调整被除数 AX 内容,使:
( AL ) = ( AL ) + ( AH ) *0AH ( AH ) =0
即把非压缩型十进制数变成二进制数。

看过《十进制调整指令》的人还看了以下文章:

发表评论

最新评论

电工学习网 ( )

GMT+8, 2021-12-6 20:45

Powered by © 2011-2021 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

返回顶部