Problem beim Assembler Programmieren

Gast #470041
Lesenswert?

Hallo an alle.

Wir machen in der Schule gerade Assembler Programmieren durch.

Dabei hat er uns Aufgaben zum üben gegeben. Die leichteren hab ich 
geschafft, aber bei dieser scheitere ich.

Kann mir jemand sagen wie man lösen kann?

Wir arbeiten mit Keil Vision 2.

Aufgabe:
Addieren Sie zwei 16-Bit-Zahlen, die sich ab Adresse 0A0H bzw. ab 
Adresse 0B6H im internen Daten- Speicher befinden.
Die Speicherung der 16-Bit-Zahlen liegt in der Form zuerst High-Byte, 
danach Low-Byte vor.
Das Ergebnis soll ab Adresse 09DH im internen Datenspeicher abgelegt 
werden

Vielen Dank für die Hilfe.


greetz sifex
Gast #470117
Lesenswert?

MOV    r1,  #0A1h           ; pointer to first value, low byte
MOV    r0,  #09Eh           ; pointer to result low byte

MOV    A ,  @r1             ; fetch first low byte
MOV    r1,  #0B7h           ; pointer to second value, low byte
ADD    A ,  @r1             ; add low values
MOV    @r0, A               ; save result low byte

MOV    r1,  #0A0h           ; pointer to second value, high byte
MOV    r0,  #09Dh           ; pointer to result high byte

MOV    A ,  @r1             ; fetch first high byte
MOV    r1,  #0B6h           ; pointer to second value, high byte
ADDC   A,   @r1             ; add with carry high values
MOV    @r0, A               ; save result high byte


Wir hatten diesen komischen µC auch in nem Praktikum.. Das sollte gehen, 
weiß aber ne obs vielleicht kürzer geht oder schneller. Bin den 
schöneren Befehlssatz der AVR's gewohnt...

Gruß
Gast #470128
Lesenswert?

Hey Matthias, vielen Dank.

Ich versteh zwar großteils nur Bahnhof, aber ich werd das morgen mal 
ordentlich durchkauen. Das wird wahrscheinlich auch daranb liegen, dass 
ich etwas schlaf nachholen sollte.

Wenn du mir zu dieser Fragestellung auch nochmal helfen könntest, dann 
wäre das spitze. Dann könnte ich diese morgen in Ruhe durcharbeiten.

Aufgabe:
Eine 16-Bit-Zahl, die ab Adresse 0A0H des internen Datenspeichers liegt 
soll mit 2 multipliziert werden. Das Ergebnis soll ab Adresse 0A4H im 
internen Datenspeicher stehen.

Das sind nämlich die beiden einzigen Aufgaben, die ich nicht hinbekam.

Du bist wirklich mein Retter. Danke nochmal für deine Hilfe.
Gast #470284
Lesenswert?

Danke danke danke danke danke danke danke.

Hab ich danke schon erwähnt. :)

Du bist echt spitze. Du hast mir den Tag gerettet.

Vielleicht darf ich dich mal per Mail Kontaktieren falls ich wieder ein 
Brett vorm Kopf habe?

greetz sifex

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren