c语言将两个16位变为一个32位,16位汇编第六讲汇编指令详解第第三讲(示例代码)...

16位汇编第六讲汇编指令详解第第三讲1.十进制调整指令1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果2.分成压缩BCD码和非压缩BCD码调整简而言之:以前的时候你有个手表,里面的数字是九,如果加一个1就是0了,就会产生进位,不过这个是10进制进位的,所以应该是 a了,但是a的话就出错了.所以我们就出来了这个调整指令直接变为零,然后进位,也就是16进制码当做10进制使...
摘要由CSDN通过智能技术生成

16位汇编第六讲汇编指令详解第第三讲

1.十进制调整指令

1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果

2.分成压缩BCD码和非压缩BCD码调整

简而言之:

以前的时候你有个手表,里面的数字是九,如果加一个1就是0了,就会产生进位,

不过这个是10进制进位的,所以应该是 a了,但是a的话就出错了.所以我们就出来了这个调整指令直接变为零,然后进位,也就是16进制码当做10进制使用

压缩BCD

压缩BCD就是4位表示一个数字

非压缩BCD

非压缩就是一个字节表示一个数字(高4位通常为零)

例子

真值               8        64

二进制编码       08H        40H

压缩BCD码      08H        64H

非压缩BCD码  08H        0604H

可以看出,8如果是个位数,是不变的

如果64那么压缩的是4位表示一个数字非压缩的就是1个字节表示,高位为零.

压缩BCD吗的加减调整指令

DAA(加法的调整指令) DAS (减法的调整指令)

DAA 后缀A是Add的意思,后缀s是Sub的意思

例子

mov al,68h

;压缩的BCD码是68

mov bl,28h 压缩的BCD码28

add al,bl 二进制加法,al+bl 赋值为al

daa (十进制调整)

al= 68h + 28h = 90h

但是因为daa了,所以是十进制进位 是96

简单理解就是,本来16进制 9+1 = A的,但是十进制调整,就不能是A了,需要变为0,结果是10了

DAA的内部原理就是遇到a(….) +6

同理DAS也是-6

只不过是通过标志位完成的(辅助标志位)

减法例子:

mov al,68h

mov bl,28h

sub al,bl

das ;十进制调整:al=40h

;实现压缩BCD码加法:68-28=40

非压缩BCD的加,和减法的调整指令

AAA,AAS

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值