我需要添加两个16位数字使用的指令添加和adc。我使用的微控制器是一个最大寄存器大小为8位的AtMega32。
这就是我到目前为止尝试的方法(如我正在加号码5438 + 6098 )。
.include "m32def.inc"
.org 0x0000
init:
ldi r16,54
ldi r17,38
ldi r18,60
ldi r19,98
start:
add r17,r19
adc r16,r18
rjmp init如果我把较低的字节38和98 = 136,这是一个8位的数字,所以它存储它非常好,没有进位,但我希望它结转,以便我可以添加54和60与进位得到115。我不知道,也许我做错了什么
发布于 2016-02-21 15:28:09
你混淆了十进制和二进制吗?
您的意思是要将小数点5438小数点加上6098小数?这意味着要添加0x153E + 0x17D2。如果是这样,那么添加0x3E + 0xD2 = 0x10,然后添加0x15 + 0x17 +进位= 0x2D,结果是0x2D10 = 11536,这也是在计算器上进行十进制加法时得到的结果。
如果这些是十六进制号0x5438 + 0x6098,那么您需要告诉汇编程序它们是十六进制0x54或54h或$54,无论您的汇编程序的语法是什么(0x54应该可以工作)。
因此,无论哪种情况,修复即时值,我认为您的程序将工作。
https://stackoverflow.com/questions/35537856
复制相似问题