十进制调整指令c语言,十进制调整指令

十进制调整指令对二进制运算结果进行十进制调整,以得到十进制的运算结果。十进制在计算机中也要用二进制表示,这就是十进制编码的十进制数: 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

即把非压缩型十进制数变成二进制数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值