蹲一个解答!
例题1-4中,答案两行为什么两个BCD转化结果不一样?
BCD码是用二进制码逐位表示十进制数(0~9十个数字);十进制数的二进制码是是所有二进制码连在一起表示一个十进制数。
原理,请看百科词条截屏图片
[876]BCD与876二进制码的区别
BCD码[876]
代码运行效果截屏图片
python 代码
#!/sur/bin/nve python
# coding: utf-8
print('\n二进制数1101101100的十进制值是:', int('1101101100', 2))
```
1:876 这3个BCD码 8=1000,7=0111,6=0110,[876]BCD=1000_0111_0110
2:876 这个数等于16进制的0x36C = 0011_0110_1100
强调一下 1 中的 876 是3个BCD码,2中的876是一个10进制的数
如有帮助请帮忙采纳,谢谢!
BCD(Binary-Coded Decimal)码是一种二进制编码方式,可以用于表示十进制数。每个十进制数位使用四个二进制位来进行编码,其中最高位的二进制位为 0。
因此,十进制数 876 的 BCD 码可以表示为:
1000 0111 0110
其中,最高位的 1 表示数值 8,接下来的 7 表示数值 7,最后的 6 表示数值 6。注意,BCD 码中的每个十进制数位都使用四个二进制位进行编码,因此总共需要 12 个二进制位来表示三位十进制数。
在微处理器中,没有专用的BCD码运算指令,使用二进制运算指令进行BCD码数的运算后,要用BCD码运算调整指令进行调整,重新得到BCD码的结果。举例如下:
1、34H+29H 按照二进制加法得到的结果是 5DH
2、用调整指令DAA调整成BCD码,规则是
3、调整以后得到:5DH + 06H = 63H,这是BCD码运算的结果。
压缩型BCD码的调整指令:
DAA加法调整
DAS减法调整
非压缩格型BCD码的调整指令:
AAA加法调整
AAS减法调整
AAM乘法调整
AAD除法调整
这类指令的操作数隐含为AL或AX
AAA指令的操作为:
如果 (AL) ∧0FH>9 或 (AF)=1
则 (AL) ←(AL)+06H
(AH) ←(AH)+1
(AF) ← 1
(CF) ←(AF)
(AL) ←((AL) ∧ 0FH)
否则 (AL) ←((AL) ∧ 0FH)
DAA指令的操作为:
如果 (AL) ∧0FH>9, (AF)=1
则 (AL) ←(AL)+06H
(AF) ← 1
如果 (AL) > 9FH 或 (CF)=1
则 (AL) ←(AL)+60H
(CF) ← 1
例]要求计算两个十进制数之和,7+8=?。可用以下指令实现:
MOV AX, 0007H ;(AL)=07H,(AH)=00H
MOV BL, 08H ;(BL)=08H
ADD AL, BL ;(AL)=0FH
AAA ;(AL)=05H,(AH)=01H
;(CF)=(AF)=1
MOV AX, 0007H ;(AL)=07H,(AH)=00H
MOV BL, 08H ;(BL)=08H
ADD AL, BL ;(AL)=0FH
DAA ;(AL)=15H,(AH)=00H
;(CF)=0,(AF)=1
AAS指令的操作为: (非压缩型BCD码调整)
如果 (AL) ∧0FH>9 或 (AF)=1
则 (AL) ←(AL)-06H
(AH) ←(AH)-1
(AF) ← 1
(CF) ←(AF)
(AL) ←((AL) ∧ 0FH)
否则 (AL) ←((AL) ∧ 0FH)
DAS指令的操作为: (压缩型BCD码调整)
如果 (AL) ∧0FH>9, (AF)=1
则 (AL) ←(AL)-06H
(AF) ← 1
如果 (AL) > 9FH 或 (CF)=1
则 (AL) ←(AL)-60H
(CF) ← 1
AAM指令的操作为:(将二进制数转换成十进制数)
(AH)←(AL)/0AH的商;即AL除以10,商送AH
(AL)←(AL)/0AH的余数;即AL除以10,余数送AL
例:要求进行以下十进制乘法运算:7*9=?
解:可编程序段如下
MOV AL,07H ;(AL)=07H
MOV BL,09H ;(BL)=09H
MUL BL ;(AX)=07H09H=003FH
AAM ;(AH)=06H,(AL)=03H
AAD指令的操作为:(将十进制数转换成二进制数)
(AL)←(AH)0AH+(AL)
(AH)←0
例:要进行以下十进制除法运算:73÷2=?
解:可编程序段如下:
MOV AH,07H ;(AH)=07H,(AL)=03H
MOV AL,03H ;(AH)=07H,(AL)=03H
MOV BL,02H ;(BL)=02H
AAD ;(AL)=49H(即十进制数73)
DIV BL ;(AL)=24H(商),(AH)=01H(余数)
AAM ;(AH)=03H,(AL)=06H
根据题目要求,我们需要求出十进制数876的BCD码,并解释为什么例题1-4中的两个BCD转化结果不一样。
BCD码是二进制编码,用于表示十进制数。每个十进制数使用四位二进制数来进行编码。在BCD码中,每个十进制数的范围是0000到1001,它的对应关系是:
0 -> 0000 1 -> 0001 2 -> 0010 3 -> 0011 4 -> 0100 5 -> 0101 6 -> 0110 7 -> 0111 8 -> 1000 9 -> 1001
因此,我们可以将十进制数876转化为BCD码的过程如下:
至于为什么例题1-4中的两个BCD转化结果不一样,可能是因为例题中使用了压缩型BCD码的调整指令和非压缩型BCD码的调整指令,导致处理方式不同。具体的解释需要参考例题中的指令和相关规则,而题目并未提供这些信息,因此无法给出确切的解释。
综上所述,十进制数876的BCD码是100001110110。对于例题中的BCD转化结果不一样的情况,需要参考具体的指令和规则进行解释。