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