【发布时间】:2012-02-09 20:58:01
【问题描述】:
我正在使用 ATmega128 微控制器,据说需要添加两个 16 位数字。我正在使用 AVR Studio,这就是我目前所得到的:
.include "m128def.inc";
.equ ramstart = 0x100
.def temp = r16
.dseg
.org ramstart
number1: .byte 2
number2: .byte 2
.cseg
.org 0
rjmp start
start:
; number1 := 0x7856
ldi temp, low(number1)
sts number1, temp
ldi temp, high(number1)
sts number1+1, temp
; number2 := 0x34B2
lds temp, number1
sts number2, temp
lds temp, number1+1
sts number2+1, temp
slutt:
rjmp slutt
这与我第一次使用任何类型的程序集相距不远,我知道我做错了什么,但似乎无法弄清楚是什么。我错过了进位标志吗?
【问题讨论】:
-
这是家庭作业吗?如果是这样,请将其标记为这样。是的,首先您需要加载一些寄存器,然后您需要将它们全部相加或相减。您总是可以退回到 add/adc 或 sub/sbc 来执行大量的位/字节加减。
-
如果我使用 add 或 adc,如何正确存储结果?
标签: assembly microcontroller atmel