MezData-Logo 247 Creative Commons License Lösungen Button :AVR: Addition mit AVR

Synopsis: [ wikipedia.org/wiki/Arithmetic_Logical_Unit ]

Problem: Die Gleichung c = a + b mit den Werten a = 11 und b = 26 soll mit AVR-Assembler gelöst werden.

Folgender Quelltext ist bereits gegeben:

.include "2313def.inc"

.def a = R16 ;R16 als Variable a
.def b = R17 ;R17 als Variable b
.def c = R18 ;R18 als Variable c

  ldi a,11 ;lade 11 in a
  ldi b,26 ;lade 26 in b

FrageWelche Bedeutung haben die Assembler-Anweisungen .include, .def und ; ? Nutzen Sie hierzu Schnelleinstieg in AVR-Assembler.

FrageErgänzen Sie den Quellcode zu einer Lösung für c = a+b, wobei a und b nicht verändert werden dürfen! Nutzen Sie hierzu AVR Befehlssatz.

Ihre Lösung soll mittels Simulation überprüft werden, dazu benötigen Sie die Software AVR-Studio und müssen ein neues Projekt erstellen:

1. Programm starten 2. Neues Projekt erstellen
3. Projekt richtig speichern
  1. Guten Projektnamen vergeben.
  2. Haken in "Create Folder" damit ein eigener Projekt-Ordner erstellt wird.
  3. Location ändern: Ordner für "AVR-Projekte" anlegen unter "Eigene Dateien".
  4. Unten auf "Next" klicken.
4. Simulator und Device wählen
  1. Wir machen Trockenübungen und verwenden deshalb den AVR-Simulator.
  2. Den verwendeten Baustein wählen (AT90S2313).
  3. Auf "Finish" klicken.
5. Quelltext einfügen Simulation
Kopieren Sie einfach den Quelltext von oben und setzen Sie ihn ein, ergänzen Sie ihn um Ihre Lösung..

Iconleiste

Mit Build (F7) kann das Programm assembliert und simuliert werden:

Mit Start Debugging kann die Simulation gestartet werden:

Der gelbe Pfeil zeigt nun auf die erste Anweisung die als nächstes ausgeführt werden soll.

Nun Step Into (F11) ausführen:

In Register 16 wurde 0x0B = 11 geladen.. Sie besitzen nun das Handwerkszeug um die Aufgabe zu lösen.

FrageWelchen Wert hat c (Register 18) wenn das Ergebnis der Addition größer als 255 ist?

FrageErinnern Sie sich an den Volladdierer, wie wird die Übertragsleitung auf Englisch genannt? Suchen Sie im Befehlssatz nach diesem Begriff.

Erweitern Sie Ihr Programm so, dass mit Register 19 als "HighByte" eine 16 Bit Summe möglich wird.

FrageWelche weiteren ALU-Flags [ wikipedia.org/wiki/Arithmetic_Logical_Unit ] gibt es und wozu werden sie gebraucht, Beispiele von Befehlen siehe AVR Befehlssatz..

© Oliver Mezger 09.02.2006 MezData.de Den Kontakt herstellen...