MCT_Programmieraufgaben

Werbung
Mikrocomputertechnik
Fachbereich Elektrotechnik
Prof. Dr. Bayer
Programmierbeispiele
Lauflicht:
Mit Hilfe des Timerinterrupts des IDE68K-Simulators soll ein Lauflicht programmiert werden,
das jede Sekunde eine LED weiterschaltet.
Die Interruptpriorität des Timerinterrupts wid auf 5 gesetzt.
Im Hauptprogramm werden in einer Schleife zyklisch die Schalter des Simulators abgefragt und
auf der 7-Segment Anzeige die Segmente 0 bis 7 der Reihe nach aktiviert und deaktiviert, so
dass die Aktivitäten des Hauptprogramms sichtbar gemacht werden. Ist der Schalter 0 betätigt,
so soll das Hauptprogramm die Interruptmaske des Prozessors auf 4 setzen, sonst auf 6.
PrintInteger:
Schreiben Sie ein Programm, das eine Integerzahl am Bildschirm ausgibt. Schreiben Sie dazu
zunächst ein Unterprogramm PrintPos, das eine positive Zahl mit Hilfe des Systemcall 1
( Putch) ausgibt. Wichtige Befehle dabei sind DIVU und SWAP. Ein weiteres Unterprogramm
PrintInt soll dann entscheiden, ob die Zahl positiv oder negativ ist und sie mit Hilfe des
Programms PrintPos ausgeben.
Tabelle (Excel):
In einer Tabelle sind Länge, Breite und Höhe eines Quaders gegeben. Sie sollen nun die
Kantenlängen und das Volumen der Quader berechnen und in die Tabelle eintragen.
In diesem Programm soll die Adressierungsart „Adressregister indirekt mit Displacement“
angewendet werden.
-Programmieraufgaben
Mikrocomputertechnik
Fachbereich Elektrotechnik
Prof. Dr. Bayer
PrintInteger:
Schreiben Sie ein Programm, das eine Integerzahl am Bildschirm ausgibt.
Schreiben Sie dazu zunächst ein Unterprogramm PrintPos, das eine
positive Zahl mit Hilfe des Systemcall 1 ( Putch) ausgibt. Wichtige Befehle
dabei sind DIVU und SWAP. Ein weiteres Unterprogramm PrintInt soll
dann entscheiden, ob die Zahl positiv oder negativ ist und sie mit Hilfe des
Programms PrintPos ausgeben.
1. PrtPos (positive Zahl ausgeben)





Zahl durch 10 dividieren
Rest in einem Puffer speichern
Wiederholen, bis Ergebnis = 0
Puffer in umgekehrter Reihenfolge ausgeben
Aus Zahl ASCII-Ziffer erzeugen
add.b #$30,D0
DIVU / DIVS
z.B. DIVU #10, D0
; D0 / 10 => D0
SWAP
vertauscht Highword mit Lowword
-Programmieraufgaben
Mikrocomputertechnik
Fachbereich Elektrotechnik
Prof. Dr. Bayer
Tabelle (Excel):
In einer Tabelle sind Länge, Breite und Höhe eines Quaders gegeben. Sie
sollen nun die Kantenlängen und das Volumen der Quader berechnen und
in die Tabelle eintragen.
In diesem Programm soll die Adressierungsart „Adressregister indirekt mit
Displacement“ angewendet werden.
*
* Eine Tabelle befindet sich ab der Adresse TABVAR.
* Die Tabelle ist folgend strukturiert:
* Datenformat: Wort
* Aufbau:
Länge (L), Breite (B), Höhe (H), Fläche (F), Volumen (V)
*
Anzahl der Zeilen steht in ZEILEN
*
* Funktion: Tabelle TABV wird mit Werten initialisiert
*
In jeder Zeile wird F und V berechnet und eingetragen
*
in SVOL wird die Summe aller V-Werte eingetragen
*
in SFLAE wird die Summe aller F-Werte eingetragen
Tabelle:
L
3
3
5
3
1
3
1
TAB
ZEI
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
-Programmieraufgaben
B
5
4
5
3
1
2
1
3,5,7
3,4,5
6,5,4
3,3,2
1,1,2
3,2,1
1,1,2
1
H
7
5
4
2
2
1
2
F
V
SFLAE
SVOL
Mikrocomputertechnik
Fachbereich Elektrotechnik
Prof. Dr. Bayer
;Platz fuer Tabelle + Flaeche + Volumen
TABVAR DS.W (ZEI-TAB)/6*(6+2+2)
Zei – TAB => Anzahl der Worte fuer Tabelle
(Zei – TAB)/6
=> Anzahl der Zeilen fuer Tabelle
DS.W (ZEI-TAB)/6*(6+2+2) => Anzahl der Worte für die neue
Tabelle
-Programmieraufgaben
Herunterladen