Kod: Markera allt
; MemBitBlink.asm i AVR Studio
;.ORG 1000
LDI r20, 0xff ; indata
LDI r21, 0x08 ; kör 8 bitar
;LDI r22, 0x00 ; Till cp cp Rxx,0x00 finns ej
loop:
DEC r21
LSL r20 ;
BRCC skipp ; hoppa om inte carry satt(brcs)
;CALL on ; Typ JSR (call icall rcall)
NOP
;CPY #$00 ; kolla om 8 varv gått
;CP r21,r22
BREQ end ; avsluta om sant
JMP loop
skipp:
CALL off
;CPY #$00 ; kolla om 8 varv gått
;CP r21,r22
BREQ end ; avsluta om sant
JMP loop
end:
JMP end ; Avsluta finns säkert bättre sätt
; OBS ofärdiga subrutiner syns när jag debuggar
on: ; tänd i/o pinne
LDI r22, 0x01
RET
off: ; släck i/o pinne
LDI r22, 0x00
RET
När subrutinen on: är klar hoppar den till första raden i programmet, varför? Jag vill att den skall hoppa till raden efter "CALL on". Det verkar funka utan CP, för jag jämför mot noll. Men hur vet den vilket register jag menar? Vilka register är "fria"? R0 gav error vid build.