59
GESAMTÜBERBLICK I. Einleitung II. Assembler III. Zustandsflags IV. Adressierungen V. Strukturiertes Programmieren VI. PIA(T)

I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Embed Size (px)

Citation preview

Page 1: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

GESAMTÜBERBLICK

I.

EinleitungII.

Assembler

III.

ZustandsflagsIV.

Adressierungen

V.

Strukturiertes ProgrammierenVI.

PIA(T)

Page 2: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

I.

Einleitung

Page 3: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

INHALT

1.

Geschichtliche Entwicklung2.

Mikroprozessor

Prinzip und Aufbau3.

Grundlagen zum Praktikum

3.1 Praktikumsthemen3.2 R65023.3 Arbeitsschritte

Page 4: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

1. Geschichliche Entwicklung

Page 5: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

entnommen aus K. Wüst, Mikroprozessortechnik , Vieweg

(2003)

1948 Erfindung des Transistors(Bardeen

, Brattain

, Shockley

; Nobelpreis 1956)

1950 M.I.T. : erster Transistor-Computer , TX-01953 IBM : erster Röhrenrecher

(IBM 701)

Röhrenrechner nur bis 19581957 Gründung von DEC 1961 DEC : PDP-1

Nachfolgermodelle PDP-8 und -11 schon mit Buskonzept und 5μs Zykluszeiten

1964 DCD (Control

Data

Corporation) : CD6600IBM überholt bei alter Technik

Page 6: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Nächster Technologiesprung :

1958 Entwicklung integrierter Schaltkreise durchRobert Noyce

,

gründete mit Gordon Moore und Arthur Rockkleine Firma (Intel) zur Herstellung integrierterSchaltkreise

1964 IBM System/360 16 Mbyte

Adressraum,realer Magnetspeicher aber nur 512 kbyte, Prozessoreinheit noch nicht auf einem Chip.

1969 Erstes EPROM (Erasable

Programmable

ROM)

Page 7: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

1969 japanischer Tischrechner →Auftrag an Intel, entsprechende Schaltkreise zu entwickeln

Rechner nur noch 4 Chips, einer davon dieCPU (4004 , 4-Bit

Prozessor)

4 Bit ALU4 Bit Register4 Datenleitungen

12 Adressleitungen (Arbeitsspeicher 4 kbyte)2300 Transistoren

1971 Intel : 8008 als 8 Bit

Prozessor mit 16 kbyte

Arbeitsspeicher

Der Ausdruck Mikroprozessor wurde geprägt.1972 Intel : 8080 (8 Bit, 64 kbyte

und Interrupt-Eingang)

1978 Intel : 8086 als 16 Bit

Prozessor, der 1981 von IBM im ersten PC eingesetzt wurde.

Page 8: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum
Page 9: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum
Page 10: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

2. Mikroprozessor Prinzip und Aufbau

Page 11: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Grundbestandteile eines Mikrorechnersystems

Prozessor (CPU)•

Programm-

und / oder

Datenspeicher

Ein-

und Ausgabebausteine (I/O-Unit)•

Diese Elemente sind durch Busleitungen miteinander verbunden:

Steuer-, Adress-

und Datenbus•

Programmzähler

Page 12: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Vergleich Neumann-

und Harvard-Architektur

Harvard : zwei Bus-Systeme (getrennter Zugriff auf Progamm

und Datenspeicher)

Neumann : gemeinsamer Speicher für Daten undProgrammkode

Page 13: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Die Alu (arithmetic

and logical

unit) ist zentraler Teil des Operationswerk.

Page 14: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Prinzipielle Funktionsweise :

1.

Auslesen des nächsten Befehls aus dem Programmspeicher

2.

Programmzeiger weiterrücken 3.

Erkennen und Ausführen des Befehls

Ablauffrequenz wird durch einen Taktgenerator (clock) vorgegeben.Taktfrequenz etwa 1 MHz ( 1 μs )

Page 15: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

80er zwei Entwicklungsrichtungena)

PC

b)

Mikrorechner Computer gesteuerte Geräte,embedded

systems

Mikrokontroller Handy , MP3-Player , GPS

Was sind die besonderen Anforderungen an einen Mikrocomputer ?

i.a. wenig Platz ●

Schnelle Programmausführung

⇒ Maschinen nahes Programmieren

Page 16: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Warum Assembler ?Programm liegt im Programmspeicher byteweise als binärerKode vor (meist als hexadezimaler Kode geschrieben).

Schwer interpretierbarund daher ungeeignet zurProgrammentwicklung

Page 17: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Daher hat man für jeden Maschinenbefehl einemnemotechnische Bezeichnung definiert, die als Ganzesden

Mnemokode

darstellt.

„$“ bedeutet : Angabe im hexadezimalen Kode

Page 18: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Assembler hat die Aufgabe den Mnemokode

in den Maschinenkode umzuwandeln.

Der Assembler hängt vom Prozessor abEnthält die ALU eine integrierte Schaltung füreine Operation, so sollte auch eine Kodierung für diese Operation im Assembler definiert sein.

Anmerkung :

Assembler immer schneller als Compiler,durch Studien bewiesen

Page 19: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3. Grundlagen zum Praktikum

Page 20: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.1 Praktikumsthemen :

Teil I ( TI und AI ) :

arithmetischen Ausdruck (Arbeiten mit Speicher- adressen, Flags)

Tabellen (Adressierungsarten)•

Makros und Unterprogramme

Koroutinentechnik•

PIAT mit Interruptkonzept

Page 21: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Teil II ( TI ) :

Externe Interrupts•

Anwendung des Konzeptes der endlichen Maschinen

Kommunikation

Page 22: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.2 Prozessor R65C02

Rockwell

Page 23: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

MOSES als Mikrocomputer Plattform MOdulares

Sender und Empfanger

System

MOSES ist ein Host-Target

SystemHost : PCTarget

: Prozessor der Familie der R6500 (Rockwell

Ein-Chip Prozessoren), die in NMOS-

und in derschnelleren CMOS-Version

erhältlich waren.

CPU : R65C02 (CMOS-Technik) 4 MHz•

RAM : 32 kb

1-byte Speicher

ROM : 32 kb

Speicher•

BUS : 16 Bit Adressbus , 8 Bit Datenbus

I/O unit

: R65C24 PIAT (Timer und Interruptvorhanden , siehe später)

Betriebssystem : Blos

( Bus Link Operating

System

):

Kommunikation mit Shell auf dem PC,einige Dienstroutinen, wie z.B. DigEin

etc.

Page 24: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Blockschaltbild für die R65XX-Familie

Datenbus bi-direktional

(1 byte)

Adressbusuni-direktional(2 byte

: Lower

and higher

byte)

X-

und Y-registerIntel : nur Akkumulator

Page 25: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

CPU des 6502•

Speicheradressen 2 byte⇒ Befehlszähler

2 byte

zero - page $00xx Schneller Zugriff , wird bei indirekterAdressierung benutzt

one – page $01xx für Stapel (stack) reserviert

Stapelzeiger 1 byte

, da „01“ als Seite 1fest vorgegeben

Zustandsregister 1 byte•

Akkumulator 1 byte

X -

Register 1 byte•

Y -

Register 1 byte

Page 26: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.3 Arbeitsschritte

Page 27: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Erste Schritte●

login

: user

: Praktikant

PSW: Praktikum●

Shell starten (desktop)

Informationen unter HILFE→ Eingebundener Microrechner

Moses

Befehlssatz (Assembler Mnemokode)◦

Katagorische

Ordnung

Alphabetische Ordnung•

Betriebssystem des MOSES (Blos)◦

z.B. Unterprogrammaufrufe : DigEin

, DigAus

I/O am MOSESI : 4 Kippschalter für Eingabe einer Tetrade

(DigEin)

O : 7 Segmentanzeige für Ausg. von 15 Zeichen (DigAus)

Page 28: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Prinzipielle Arbeitsweise•

Programm wird auf dem Host im Mnemokode

geschrieben (i.a. in der Shell auf dem PC).Es können auch Vorarbeiten am Simulator zuhause durchgeführt werden), aber Vorsicht, beim Überspielen auf den PC können schwer auffindbare Fehler entstehen.

„Assemblieren“

(erzeugt eine .obj-

und eine .lst-Datei)

Auf den Prozessor übertragen : „herunterladen“•

Programm auf dem Prozessor laufen lassen : → „starten“

(Normalmodus)

→ „starten warten“

Ausgabe über DSchreibgewünscht

Gegebenenfalls „Speicher auslesen“

Page 29: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum
Page 30: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum
Page 31: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

II.

Assembler

Page 32: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

INHALT

1.

Grundlagen2.

Dateneingabe

3.

Strukturelemente3.1 allgemeine Programmstruktur3.2 Assembler Direktiven3.3 Unterprogramme und Macros

Page 33: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

1. Grundlagen

Page 34: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Befehlskategorien1.

Datentransfer

LDA lade in den Akkumulator•

TAX kopiere Akkumulatorinhalt ins x-Register

PHA Akkumulatorinhalt auf den Stapel legen2.

Arithmetische und logische Operationen

ADC Addiere zum akkumulator

mit Übertrag•

DEY Dekrementiere

Inhalt des Y-Registers um 1

AND bitweise konj. Verknüpfung mit Akku-Inhalt•

CMP virtuelle Subtraktion vom Akku mit

Entleihung•

ROL um ein Bit nach links rotieren über Carry-Bit

Page 35: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.

Programmablaufsteuerung•

BCC Verzweigung, falls C = 0 (Carry-Bit)

JMP Sprung zu angegebener Adresse•

JSR Sprung in Unterprogramm

RTS Rücksprung aus Unterprogramm•

CLC Carry-Bit

löschen

4.

Assembler –

Anweisungen (Direktiven)werden zur Übersetzungszeit ausgeführt

.if

Operand ab hier erfolgt Assemblierung nur, wenn Operand ≠

0

.cend

beendet Block, auf den sich .ifbezieht

.word

definiert Wort-Format für Variable als Operand

Page 36: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

OperandeneingabeDen Operanden werden Definitionszeichen vorangestellt

# Wert wird explizit eingelesen ; steht dieses Zeichen nicht , wird eine Adresse angegeben.

$ Operand wird hexadezimal eingegeben.% Operand wird dual eingegeben.

Beispiele :LDA # 92

; dezimale explizite

LDA #%01011100

; duale Eingabe LDA # $5C

; hexadezimale von 92

LDA $ 5010

; hexadezimale Angabe der Speicheradresse

Page 37: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

SpeicherplatzreservierungProgramm :

.org

$4000 legt Beginn

des Speicherbereichs

für den Programmkode

fest.

Ab Seite $40 für den Programmkode und Datenspeicherist sinnvoll, da vorherige Seiten zum Teil intern belegtwerden:

$02 : intern (z.B. Init. von IRQ-Vektoren)$20 -

$2F : Sendepuffer (4kb)

$30 -

$3F : Empfangspuffer (4kb)

$F7 -

$FF : BLOS ( Bus Link Operating

System )

Page 38: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

2. Dateneingabe

Page 39: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

(1)

Explizit für Variable A : A = $ 5001

(2)

mit Längenfestlegung und gleichzeitiger Eingabehierbei wird Nummer der Speicherzelle durch die Position im Programmkode automatisch festgelegt.A: .byte

$FA

; hexadezimale Werteingabe

B: .byte

%11111010

; duale Eingabe derselben ZahlC: .dbyte

$FA14

; Eingabe der 2-byte Zahl FA14

im doublebyte-FormatD: .word

$FA14

; oder im word-Format

Speicherbelegung im

dbyte

and

word

formatC C+1

D D+1

FA 14 14 FA

Tab: .byte

$04, $FA , … , $A8; Eingabe von Tabellenwerten

E: .byte

$00

; Initialisierung der Variablen E

Page 40: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Eingabe von DatenFALSCH :

S1 = $5000•••••

S1: .byte

$AC

; Für S1 werden zwei verschiedeneSpeicherzellen definiert.

Soll die Speicherzelle für die Eingangsvariable fest vorgegeben werden, ist folgendes möglich :

.org

$4000••

Programmkode••

.org

$5000

; AC wird als Variable S1 inS1: .byte

$AC

Speicherzelle $5000 abgelegt

Page 41: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Anderes Beispiel für falsche Dateneingabe.org

$4000

Tab: .byte

$AC, $0F, $7AStart: LDA …..

•••

Die .byte

Anweisung gehört nicht zum Programmkode,sondern ist eine „Directive“, die erst bei der Über-setzung

umgesetzt wird. Die Speicherzelle wird daher

zweimal beschrieben : mit $AC und mit dem Kode für den LDA-Befehl

besser : .org

$4000 Tab: .byte

$AC, $0F, $7A

.org

$4003

oder Start = $4003 Start: LDA …..

•••

Page 42: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Alternative Eingabemöglichkeit (oft für einfache Parameter eingesetzt)

N1 = $8F ; nur hier, ob hexadezimal, dual o. dezimalLDA #N1

; der Wert 8F wird in den Akku geladen

LDA N1

; der Inhalt der Speicherzelle $008F(zero-page) wird in den Akku geladen.

Beachte !A = 1

(dezimal) oder A = $5010

(hexadezimal)

sind keine Befehle des Assemblers, sondern nureinfache Gleichsetzungen,so auch auf voriger Folie Start = $4003Marken wie Start:

sind synonym zu Adressen des

Programmkodes

Page 43: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Vorsicht bei zero-Page

Adressierung

nachträgliche Korrektur des Programmspeichers aufgrund Zero-page

Benutzung

Page 44: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3. Strukturelemente

Page 45: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.1 Allgemeine Programmstruktur•

R6502 hat Neumannstruktur, daher Daten-

und

Programmspeicher vermischt.•

Festlegung der Speicheradresse, ab der das Programm gespeichert werden soll.zwei Möglichkeiten :

.org

$4000 Start = $4000Start: clc

Es gibt Unterprogramme , z.B. DigEin

oder DigAus

, deren Adressen in einer Bibliothek gegeben sind. Die entsprechende Bibliothek wird durch

.lib

“konst.lib“eingebunden.

Page 46: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Macros

(Einzelheiten siehe später) sollte man an den Anfang des Programmkodes setzen

Da das Assemblerprogramm aus dem Betriebssystem Blos

als Unterprogramm aufgerufen wird, muss auch

das Hauptprogramm mitrts

abgeschlossen werden.Das Fehlen kann zu fatalen Fehlern führen.

Es ist sinnvoll Unterprogramme hinter das Haupt- programm

zu setzen.

Für die Dateneingabe werden Anweisungen der ArtTabelle: .word

$12FB, $A35D, ……

empfohlen.Da die Speicheradressen automatisch durch Weiterzählen festgelegt werden, sollten diese Datenanweisungen an das Ende des Programmkodes gesetzt werden, um Speicherplatzkonflikte zu vermeiden.

Page 47: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Daraus ergibt sich folgende Programmstruktur :

.org

$4000.lib

“konst.lib“

MacrosHauptprogrammrts

;

Abschluss des Hauptprogramms

UnterprogrammeTabelle: .word

$12FB, $A35D, ……

; Dateneingabe

.end

; Abschluss des Programmkodes

Page 48: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Korrektur zum studentischem SkriptSeite 17 unter „3.2. hello

World“

Das Beispielprogramm enthält einige

Fehler

:

.org

$4000.lib

„konst.lib“ ; so

wird am Moses eine

Bibliothek eingebundeloop: jsr

DigEin

; DigEin

ist wie im PA-Plan

jsr

DigAus

; korrekt gezeichnet eineSubroutine, daher jsr-Aufruf

cmp

#$0F ; Akku-Inhalt wird mit F durchvirtuelle Subtraktion verglichen,falls gleich, Zero-Bit = 1

bne

loop

; Sprung zu loop, falls Z = 0rts

; Main wird vom Blos

als

Subroutine angesprochen

Page 49: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Wie kann man Maschinenkode und Zuordnung von Befehl zu Speicheradresse nachschauen ?

Page 50: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Welche Information erhält man aus der lst-Datei

Befehlstypeni.

0-Adress-Befehle, z.B. clc

, asl

, rol

ii.

1-Adress-Befehle , z.B. lda

#Wert

(1 byte

Operand)lda

Adresse

(2 byte

Operand)

iii.

RMW (read

modify

write) ; teilweise0-Adress-Befehle : asl

; Akkumulator

dex

; X-Registerund / oder 1-Adress-Befehle : asl

$5000

dec

$5010

Page 51: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

ZuordnungBefehl ↔

Speicheradresse

z.B. werden bei 1-Adress Befehlen, in denen der Operand aus 2 byte

besteht, 3 Speicheradressen

benötigt.

ZuordnungMnemokode

Maschinenkode

Page 52: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.2 Assembler DirektivenMit if-Direktiven

, die einen Parameter A ansprechen,

kann gesteuert werden, welche Passagen desMnemotechnischen Kodes assembliert werden.

wird assembliert , wenn● .if

A : A ≠

0

● .ifne

A : A ≠

0● .ifeq

A : A = 0

● .ifmi

A : A < 0● .ifpl

A : A > 0

Diese if-Direktiven

können mit „ .else“ verknüpft werdenund werden mit „ .cend“ beendet (siehe folgendes Beispiel).

Page 53: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Beispiel :

Page 54: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Anmerkungen :•

Da die if-Direktiven

bereits Einfluss auf das

Assemblieren nehmen, können die Steuer-Parameter natürlich nicht durch den Ablauf des Programms bzw. dessen Rechenergebnissebestimmt werden, d.h. ,

Für den Steuerparameter kann nicht der Inhalt einer Speicherzelle oder eines Registers verwendet werden.

WICHTIG :Hinter den if-Direktiven

dürfen keine Kommentare

stehen

Page 55: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

3.3 Unterprogramme und

Makros

Page 56: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Unterprogramme :

Beispiel :•••

$4010 JSR Potenz$4013 Befehl_cont

•••

$wxyz

Potenz•••

rts

; $4012 wird als Rücksprungadresse ρauf den Stapel gebracht

; Speicheradresse $4012 wird vomStapel genommen und in den Programmzähler geschrieben, der dann um „1“

inkrementiert wird,

also auf $4013 gesetzt wird.

Unterprogramme werden durch Sprünge angesprochen, d.h. ,Programmzähler muss neu beschrieben werden.

Page 57: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Makro–Anweisungen

gehören zu den Assembler Direktiven, d.h. auch hier geschieht das Wesentlichebeim Assemblieren:

Die Befehle des Makros werden andie Stelle des Aufrufes kopiert.

Bei n Aufrufen wird das Makro im Maschinenkoden-mal

aufgeführt.

Makros können ineinander geschachtelt werden.●

Makros sind parametrierbar (Parameter können übergeben werden.

Makros :

Page 58: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Zwei Typen von Makros :

Beginn durch Name.macro

ParamVerhalten wie Blöcke, d.h. , dort definierte Marken gelten nur lokal im Makro

Beginn durch Name.segm

Parambeim R6502 nicht möglichDefinierte Marken gelten global, d.h. , Doppelbenennung beachten oder Marken vermeiden.

Beide Typen werden mit .mend

abgeschlossen.

Der Aufruf eines Makros erfolgt durch Name

Page 59: I. Einleitung II. Zustandsflags Strukturiertes Programmierentdi/document/RS-I-A.pdf · INHALT. 1. Geschichtliche Entwicklung 2. Mikroprozessor. Prinzip und Aufbau. 3. Grundlagen zum

Makro

Unter-programm

Vorteile

Schneller Zugriff

Parameterübergabe

Kode wird nur einmal abgelegt, geringerer Speicherplatz

Nachteile

Kode wird mehrmals abgelegt, Speicherplatz-

expansion

keine Parameterübergabe

Langsamer wegen Sprünge

⇒ Makros klein haltenund / oder

Nicht oft aufrufen