TTL-Gatter, Atmega 8, MIPS Assembler

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1488
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: TTL-Gatter, Atmega 8, MIPS Assembler

Beitrag von davidvajda.de »

Fangen wir damit an.
https://ww1.microchip.com/downloads/en/ ... manual.pdf
...

Nein, das stimmt nicht, ich habe ein Buch, da stehen die Befehle noch knapper drin rd, gerade stimmte nicht, aber ich habe ein Buch, da steht alles ganz knapp drin. Ich erinnere mich wieder an

Code: Alles auswählen

Y+, -Y
und so weiter. Präinkrement. Postinkrement. Dann gibt es Y+i oder beim letzten. Nur - X, Y, Z sind Addressregisterpaare.

Nämlich

Code: Alles auswählen

r31:r30 Z
r29:r28 Y
r27:r26 X
Und das sind die letzten drei Registerpaare -immer 2, damit ich 16 Bit addressieren kann. Ich kann in die einzeln schreiben, aber - X, Y, Z dienen zur Addressierung. Hier kurz ein Überblick

Code: Alles auswählen

st, ld
stimmten, wie ich mir dachte

Dann gibt es das mit Postinkrement und Prädekrement

Sieht etwas viel aus zusammen genommen ist aber logisch. Ohne Inkrement und Dekrement - diese Daten gehören nicht dem Buch, sie sind allgemein Atmega8, allgemein Atmel

Code: Alles auswählen

st X, r0
st Y, r0
st Z, r0
ld r0, X
ld r0, Y
ld r0, Z
Und das bedeutet auch

Code: Alles auswählen

st X, r0
st X+, r0
st -X, r0
st Y, r0
st, Y+r0
st -Y, r0
... bitte selbstständig vervollständigen

st Z, r0
ld r0, X
ld r0, Y
ld r0, Z
Und dann gibt es -

Code: Alles auswählen

sts und lds
Also, es gibt

Code: Alles auswählen

ld, sd
lds, sds
Und

Code: Alles auswählen

lds, sds sind direkt

Code: Alles auswählen

store direct to data space
load direct from data space
Direkt heisst, wir geben die Addresse, als Festwert an

Gut, dann gibt es eben

Code: Alles auswählen

ld, und sd
Das ist indirekt. st - store indirect from register to data space

und so weiter

DAnn gibt es eben std, ldd

also

Code: Alles auswählen

sts, lds: Direkt
ld, st: indirekt 
ldd, std: indiziert 
Genau, das ist es ja, ich sagte neben Postinkrement und Postdekrement gibt es auch noch etwas wie
das meinte ich ja. Ja und jetzt drei Mal dürfen sie raten, was das ist

Während -X ein Prädekrement ist und X+ ein Postinkrement gibt es nicht noch indizierte?

Was ist Indiziert bei Intel - genau

Code: Alles auswählen

mov dx, [bx+sp]
Das heisst, indiziert, im gegensatz zum indirekten, addieren wir noch einen Wert in einem anderen Register. Ja und das ist
also

Code: Alles auswählen

std Y+k, r0
std Z+k, r0
ldd r0, Y+k
ldd r0 Z+k
Das lustige ist, dass das für X nicht gilt. X kann beim Atmega nicht indiziert verwendet werden.

Gut damit wissen wir alles, dann gibt es eben noch mov

Code: Alles auswählen

mov r0, r1
Und dann gibt es die Verzweigungsbefehle. Lustig sind, dass es für jedes Statusbit einen gibt

Aber es genügt

Code: Alles auswählen

breq
Das steht für breq branch if equal

ähnlich zu beq beim MIPS

beim MIPS: beq
beim Atmega8: breq

Klein bisschen anders, aber das sollte man hinkriegen, von b auf br zu schliessen

Dann lassen sie mich raten gibt es

Code: Alles auswählen

breq, brne
brle, brl
brge, brg
irgendwie so

Daneben könnte es noch

Code: Alles auswählen

breqz, brnez 
geben und so weiter. Das lustige ist - es gibt für jeden Status Bit enes.

Ach nein, wir ich wollte sagen, Mathemaitk

Trichonometrie, zwischen zwei Ganzen Zahlen gilt entweder

Code: Alles auswählen

grösser > 
gleich = 
kleine <
Daneben kann man einführen

Code: Alles auswählen

grösser gleich >=
kleiner gleich <=
ungleich != 
Da im Englischen Branch - verzweigen heisst und grösser

greater, equal, gleich und less weniger. Ist damit alles gelöst. Wie bei allen Befehlen jedes Prozessors.

gut, das mache ich auf meiner Homepage jetzt aktuell. Das werden wir nicht brauchen für die LED's die zählen. Hier nur IN und OUT. Aber das lustige ist.

Es macht einfach keinen Spass, einen Prozessor zu haben, wenn wir nicht wissen, was

Code: Alles auswählen

ldd, sdd - indirekt 
ld, sd - indirekt
lds, sds - direkt 
ist. Ach ja, ldi gibt es auch - immdiate wert - direkt wert und eben mov. gut, damit loslegen.
Antworten