作业帮 > 综合 > 作业

ARM指令集中的ADDC是什么意思?已知C=1,R1=100,R2=90,执行指令ADDCR0,R1,R2后,R0=__

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/18 22:15:55
ARM指令集中的ADDC是什么意思?已知C=1,R1=100,R2=90,执行指令ADDCR0,R1,R2后,R0=______
ARM指令集中的ADDC是什么意思?已知C=1,R1=100,R2=90,执行指令ADDCR0,R1,R2后,R0=__
ARM 指令集中没有“ADDC”的指令,看题目,你应该是说的 ADC 指令,意思是“带进位加法”,就是普通的加法再加上 C 标志(进位).
C = 1,R1 = 100,R2 = 90,执行指令“ADC R0,R1,R2”后,R0 = 191,即 R0 = R1 + R2 + C.
再问: 那带进位加法是什么意思啊?怎么判断呢?
再答: 上面已经解释了啊,带进位的加法,就是普通加法再加上 C 标志。
你要“判断”什么?
再问: 就是什么叫进位呢?
再答: 进位,就是 C 标志位,用于超过了寄存器宽度的数据的加法。
比如寄存器宽度是 32 位,当需要进行 64 位数的加法时,需要分两步:“低 32 位数据相加”和“高 32 位数据相加”,就像我们最熟悉的十进制两位数相加一样,要分为“个位”和“十位”两步相加,而个位相加后可能发生“进位”,这个进位的数据需要加到十位上。
对计算机来说,就使用了 C 标志作为进位的“暂存”位置。举例来说:两个 64 位数据相加:8C92B80A23h + 6DB0C81F9458h
先各自分为低 32 位部分:
92B80A23h
C81F9458h
和高 32 位部分:
8Ch
6DB0h
低 32 位部分相加(92B80A23h + C81F9458h)得 15AD79E7Bh,这个得数已经超过了 32 位,寄存器装不下,于是超过 32 位的部分(只有 1)被放进了 C 标志表示“进位了”,剩余的 32 位(5AD79E7Bh)放进了寄存器。
然后进行高 32 位部分相加,注意,高 32 位数的相加,就必须使用“带进位的加法”,把刚才进位的值一起加上(8Ch + 6DB0h + 1),才能得出正确的结果 6E3Dh。
高 32 位结果和低 32 位结果联合起来就是正确的 64 位结果了:6E3D5AD79E7Bh。
再问: 哦,懂了,特别感谢~