| |
|
|
Kapitel 3.3
3.3 Programmierbeispiele:
Addition von 3 Zahlen C-like: ergebnis = wert1 + wert2 + wert3;
|
symbolisch: |
mit festen Adressen: |
| |
|
|
|
|
|
| |
LDA |
WERT1 |
0: |
LDA |
7 |
| |
LDB |
WERT2 |
1: |
LDB |
8 |
| |
ADD |
|
2: |
ADD |
|
| |
LDB |
WERT3 |
3: |
LDB |
9 |
| |
ADD |
|
4: |
ADD |
|
| |
MOV |
ERGEBNIS |
5: |
MOV |
10 |
| |
HLT |
|
6: |
HLT |
|
|
WERT1: |
DEF |
|
7: |
DEF |
|
|
WERT2: |
DEF |
|
8: |
DEF |
|
|
WERT3: |
DEF |
|
9: |
DEF |
|
|
ERGEBNIS: |
DEF |
|
10: |
DEF |
|
Der Assembler übersetzt die Mnemonik in Code und die symbolischen Informationen in konkrete physische Adressen.
Bestimmung des Maximums von 10 natürlichen Zahlen:
|
START: |
LDA |
AKTWERT |
; Hole ersten Wert |
| |
LDB |
MAX |
; Hole bisheriges Maximum |
| |
SUB |
|
; Vergleich durch Subtraktion |
| |
JPS |
WEITER |
; wenn neg. VZ, kein neues Max. |
| |
ADD |
|
; sonst Aktwert wieder herstellen |
| |
MOV |
MAX |
; Aktwert ist neues Max. |
|
WEITER: |
LDA |
START |
; Hole Ladebefehl |
| |
LDB |
C1 |
; Hole 1 nach Reg. B |
| |
ADD |
|
; Addition |
| |
MOV |
START |
; Schreibe Befehl zurück |
| |
LDA |
ZAEHLER |
; Hole Zähler |
| |
LDB |
C1 |
; Hole 1 |
| |
SUB |
|
; Dekrementiere Zähler |
| |
JPS |
ENDE |
; alle Werte bearbeitet |
| |
MOV |
ZAEHLER |
; sonst Zähler zurückschreiben |
| |
JMP |
START |
; zurück zum Start |
|
ENDE: |
HLT |
|
; Programmende |
|
C1: |
DEF |
1 |
; Konstante |
|
ZAEHLER: |
DEF |
9 |
; Zyklenzähler |
|
MAX: |
DEF |
0 |
; aktuelles Maximum |
|
AKTWERT: |
DEF |
5 |
; Startwert |
| |
DEF |
18 |
; weitere Werte .... |
Achtung: dynamische Codemanipulation (markierte Felder)
Da der von-Neumann-Rechner Programmcode und Daten nicht unterscheidet, wird die Codezeile wie ein Datum manipuliert.
Zum Programmstart hat die Zeile START folgenden Code:
0000 010011 Lade das Datum von Adresse 19 (AKTWERT) nach A
OPC Adresse
Durch Addition von1 und zurückspeichern entsteht folgender Code:
0000 010100 Lade das Datum von Adresse 20 nach A
OPC Adresse
zum Inhaltsverzeichnis
zurück weiter
|
| |
 |
© CLUG 2000. Layout: tisc, pad |
 |
 |