www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Problem beim Assembler Programmieren


Autor: sifex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sifex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vergessen anzufügen dass es für einen 8051 Microcontroller ist.

Ich programmiere mit Keil u Vision 2.

Ich hoffe, dass das weiterhilft.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: sifex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm..

MOV    r1,   #0A1h
MOV    r0,   #0A5h

MOV    A,    @r1
CLR    C
RLC    A
MOV    @r0,  A

MOV    r1,   #0A0h
MOV    r0,   #0A4h

MOV    A,    @r1
RLC    A
MOV    @r0,  A

vielleicht hilft dir das:
http://www.csd.uoc.gr/~hy325/spring-2006/docs/m80517.pdf

Ab Seite 167ff findet man eine ganz passable Erklärung jedes Befehls

Autor: sifex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt aber alles ohne garantie
matthiaslipinsky@gmx.de

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.