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

Die Chemnitzer Linux-Tage sind ein Projekt des IN-Chemnitz e.V. | Impressum | Datenschutzerklärung