Forum: Mikrocontroller und Digitale Elektronik Frage zu Assembler


von Jochen (Gast)


Lesenswert?

Hallo,
ich habe hier einen Codeschnipsel aus einer Asm-Routine für das
Zählen von Sekunden (ist aber vom PIC).
Den größten Teil davon verstehe ich ja, aber bei Zeile 5 und 6 komme
ich nicht weiter. Warum wird -0x05 zum Arbeitregister addiert um dann
gleich wieder -6 in das Arbeitsregister zu schreiben?

01  SecondIncrement:
02    decf  second, f

03  movlw  0x0F        ; skip past hexidecimal codes
04  andwf  second, w
05  addlw  -0x05
06  movlw  -6
07  btfsc  STATUS, Z      ; are with at xF?
08  addwf  second, f      ; yes, subtract 6 and we'll be at  x0 instead

07  movlw  0xA6        ; have we gone beyond second 59?
08  subwf  second, w
09  btfsc  STATUS, C
10  goto  IdleLoopSkipSend

11  movlw  0xFF
12  movwf  second        ; yes, set back to second 00

Danke, Jochen

von crazy horse (Gast)


Lesenswert?

PIC-Assembler ist mir doch wirklich immer wieder ein Graus :-), und ich
werde mich damit in diesem Leben auch nicht mehr anfreunden.

von Gerhard Gunzelmann (Gast)


Lesenswert?

der Befehl in Zeile 5 beeinflußt das Z-Flag, das dann in Zeile 7
abgefragt wird.

Gerhard

von Jochen (Gast)


Lesenswert?

Ja genau: Das Z-Flag welches bei der Addition gesetzt wird.

Danke für die Hilfe, Jochen

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.