【发布时间】:2016-02-21 15:16:20
【问题描述】:
我需要使用指令 add 和 adc 添加两个 16 位数字。我使用的微控制器是 AtMega32,它的最大寄存器大小为 8 位
这是我到目前为止所尝试的,例如我正在添加数字 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 .我不知道,也许我做错了什么
【问题讨论】:
-
你应该检查包含高位的寄存器是否溢出,除非你确定数字加起来不会超过 2^16 无符号和 2^15 有符号。