ATmega128: Addition und Subtraktion von 16-bit-zahlen (Montage)

Ich arbeite mit einem ATmega128 mikrocontroller und angeblich müssen zwei 16-bit-zahlen. Ich bin mit AVR Studio und dieses ist, was ich so weit gekommen:

.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

Dies ist nicht weit von der ersten Zeit bin ich über jede Art von Montage, ich weiß, ich mache etwas falsch, aber kann nicht scheinen, um herauszufinden, was. Bin ich fehlt das carry-flag?

ist das eine Hausaufgabe? Wenn ja, bitte markieren Sie Sie als solche. ja, zuerst müssen Sie laden einige Register, dann müssen Sie Sie alle auf oder zu subtrahieren. Sie fallen immer wieder auf add/adc-oder sub/sbc durchführen große Anzahl der bit/byte addiert oder subtrahiert.
Wenn ich mit add-oder adc, wie Speichere ich das Ergebnis der richtige Weg?

InformationsquelleAutor Lasse A Karlsen | 2012-02-09

Schreibe einen Kommentar