Forum: Mikrocontroller und Digitale Elektronik 8051er Assembler JMP-Befehle


von assembler_anfänger (Gast)


Lesenswert?

Hallo :)!

Ich habe ein paar Frage... bitte kümmert euch um sie

Bsp:
Ein Block im internen RAM(Startadresse 20hex, länge=10Bytes) soll 
gelöscht werden.

In der Schule haben wir es so gemacht:
1
MOV R1,#20
2
MOV A,#10
3
Loop: MOV @R1,#0
4
INC R1
5
DEC A
6
JNZ Loop ;springt ja nur wenn A nicht 0 ist
7
8
;oder so:
9
10
MOV R1,#20hex
11
CLEAR: MOV @R1,#0hex
12
INC R1
13
CJNE R1,#2Ahex,CLEAR ;springe zu clear, wenn der inhalt des Registers R1 ungleich 2Ahex ist oder?

Warum 2Ahex?
Und könnt ihr mir bitte die Aufgabenstellung genau erklären... Aus was 
besteht ein Block was ist den damit genau gemeint?
Die Startadresse ist 20hex und was steht in dieser drinnen? irgendein
Binärwert?
Die Länge des Block ist 10 Bytes, was heißt das nun genau?
Erklärt mir bitte die beiden Codes.

Diese JMP-Befehle springen halt irgendwo im Programm herum.

Wenn man schreibt:
1
SJMP rel ;rel  ist eine relative 8 - Bit - Offset - Adressse(-128 bis +127) - Was ist  eine 8-Bit-Offset-Adresse? Eien Offsetspannung ist jene Spannung die am  Eingang angelegt werden muss das am Ausgang 0V rauskommt..., das weiß  ich über offset, aber ich kanns net umsetzen. Die Gleiche Frage gilt für  adr16 und adr11.  
2
LJMP adr16 ;mit LJMP kann überall herumspringen beim 8051er - adr16 ist eien 16bit Adresse  
3
AJMP adr11 ;mit AJMP halt nur im 2kbyte-bereich, also kann nur 2kbyte weit springen - adr11 ist eine 11bit adresse  
4
 
5
;Bsp:  
6
"irgendein wort':.... ; ja und "irgendein wort" ist eine 11bit adresse? und man kann nur 11 bit weit springen? Ich verstehs net...  
7
....
8
AJMP "irgendein wort'
9
....

Ja und das gleiche bsp mit LJMP und SJMP.

Danke!

MfG assembler_anfänger

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

assembler_anfänger schrieb:
> MOV R1,#20
> MOV A,#10
> Loop: MOV @R1,#0
> INC R1
> DEC A
> JNZ Loop ;springt ja nur wenn A nicht 0 ist

1. 20 in R1
2. 10 in Akku
3. SCHLEIFE: schreibe 0 an adresse in R1
4. R1 1 erhoehen
5. Akku 1 weniger
6. Springe nach "SCHLEIFE" wenn Akku grosser 0 ist

Jetzt Befehlsliste und das zweite Selber verstehen ;)

von Karl H. (kbuchegg)


Lesenswert?

assembler_anfänger schrieb:

> Warum 2Ahex?

Weil hex 20 plus dezimal 10 nun mal hex 2A ergibt.

> Und könnt ihr mir bitte die Aufgabenstellung genau erklären... Aus was
> besteht ein Block was ist den damit genau gemeint?

Du hast 50 Briefkästen in einer Reihe, die alle durchnummeriert sind.
Wenn du, beginnend beim Briefkasten mit der Nummer 32, in die 
darauffolgenden 10 Briefkästen jeweils einen Zettel mit einer 0 drauf 
reinlegen sollst, hast du 2 Möglichkeiten.

a) du fängst beim ersten an und jedesmal wenn du einen Zettel in den
   nächsten Kasten legst, ziehst du einen Finger ein, so wie Kinder
   das am Anfang ihrer Mathe-Karriere gerne machen:
   10, 9, 8, 7, 6, 5, 4, 3, 2, 1
   ist kein Finger mehr übrig, hast du genau 10 Zettel reingelegt

b) du fängst beim Briefkasten mit der Nummer 32 an, rechnest im Kopf
   ganz schnell aus, dass du aufhören kannst wenn du beim Kasten mit
   der Nummer 42 angelangt bist und ehe du einen Zettel in den
   Briefkasten legst, vergleichst du ganz schnell die drauf stehende
   Nummer mit der zuvor ausgerechneten.
   32, 33, 34, 35, 36, 37, 38, 39, 40, 41
   Und wieder hast du genau in die 10 bewussten Briefkästen (dieselben
   wie vorher) einen Zettel mit einer 0 drauf reingelegt.

von Sascha (Gast)


Lesenswert?

Hallo,
oder so

MOV R1,#20h
MOV R2,#10h
clr A
LOOP: MOV @R1,A
INC R0
DJNZ R2,LOOP


Achtet mal auf die Zycklen der Befehle bei MOV @R0,A gehts viel 
schneller meine ich.
Dann gibt es doch den super Luxus Befehle DJNZ oder ?

Gruß Sascha

von Sascha (Gast)


Lesenswert?

Sorry habe bei INC R0 natürlich INC R1 gemeint.
Achtung für die kurze Adressierung steht aber nur R0 und R1 zur 
Verfügung.
Gruß Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.