Assembler Programm für 16F84a

Gast #1048443
Lesenswert?

Hallo,

in einer Aufgabe aus der Schule, wird in eimen UP 3 x der Befehl
RETLW 03
RETLW 02
RETLW 01
 angegeben.

Loop
MOVF  Zaehl,0
Call  UP
ADDWF ERG 1
RLF  ERG 1
DECFSZ Zaehl 1
Goto Loop
End

UP
ADDWF  PC 1
NOP
RETLW 03
RETLW 02
RETLW 01

Wie funktioniert das Programm?
Gast #1048507
Lesenswert?

Womit ist ERG/ZAEHL initialisiert?

ADDWF PCL,1 = Wert aus W zu PCL (Program Counter LOW) addieren,
wird in Tabellen verwendet.

RETLW X = "Return with Literal in W", Laden des Wertes X in W
und Sprung zur letzten Adresse, die am Stack liegt (Beenden der
Subroutine)

RLF = "Rotate LEFT file", Register nach Links shiften (hinausgeschobenes
Bit kommt ins Carry-Flag, das "alte" Carry Flag kommt an die freie 
Position...

MOVF X,0 = Das Register X in W laden
MOVF X,1 = Das Register X in X laden (in sich selbst laden, ergibt nur 
einen
Sinn um Flags zu setzen)

DECFSZ X = "Decrement File and Skip if ZERO" = Register X um 1 
vermindern.
Sollte X null werden, den darauffolgenden Befehl als NOP behandeln 
(nicht ausfuehren)

END = Kein Assembler Befehl, sondern nur die MPASM Endmarkierung, die 
dein Professor falsch gesetzt hat... dieses Programm kann also nicht 
funktionieren, weil UP darunter steht.


1. Iteration:
W = ZAEHL
*** NOP AUS SUBROUTINE ***
W = W
ERG = ERG + W
ERG = ERG <<1
ZAEHL = ZAEHL - 1
*** TEST OB "ZAEHL" 0 IST, WENN NEIN GOTO LOOP

2. Iteration:
W <- ZAEHL
*** RETLW 3 AUS SUBROUTINE ***
W = 3
ERG = ERG + W
ERG = ERG <<1
ZAEHL = ZAEHL - 1
*** TEST OB "ZAEHL" 0 IST, WENN NEIN GOTO LOOP

3. Iteration:
W <- ZAEHL
*** RETLW 2 AUS SUBROUTINE ***
W = 2
ERG = ERG + W
ERG = ERG <<1
ZAEHL = ZAEHL - 1
*** TEST OB "ZAEHL" 0 IST, WENN NEIN GOTO LOOP

4. Iteration:
W <- ZAEHL
*** RETLW 1 AUS SUBROUTINE ***
W = 1
ERG = ERG + W
ERG = ERG <<1
ZAEHL = ZAEHL - 1
*** TEST OB "ZAEHL" 0 IST, WENN NEIN GOTO LOOP

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren