Vart tog "goto $-1" vägen??

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
SM7UCZ
Inlägg: 9
Blev medlem: 3 juni 2008, 17:17:59
Ort: Jämjö
Kontakt:

Vart tog "goto $-1" vägen??

Inlägg av SM7UCZ »

Håller på och konverterar ett gammalt 16F873 program till 18F2220 processor. Har märkt att genvägen vid hopp t.ex "goto $-1" funkar dåligt. Finns det något liknande i 16 bit coden?
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Vad menar du med "funkar dåligt?"
Symbolen $ är ju PC:ns värde. Om det värdet blir fel så är det antagligen fel i assemblern. Fast det verkar inte troligt. Visa oss koden som funkar dåligt.
SM7UCZ
Inlägg: 9
Blev medlem: 3 juni 2008, 17:17:59
Ort: Jämjö
Kontakt:

Inlägg av SM7UCZ »

Jag hade denna text i 16F873

;************************************************************
delay1
clrwdt
clrf slask
clrf slask1
movlw .25
movwf slask1
lab1
clrwdt
decfsz slask,f ;fördröjningsregister
goto $-2
decfsz slask1,f
goto $-4
return ;återgå dit anropet kom ifrån

;***********************************************************

När jag ändrat "goto lab1" funkade programmet
Användarvisningsbild
JockeE
Inlägg: 330
Blev medlem: 4 augusti 2004, 08:46:50

Inlägg av JockeE »

I PIC18 tar varje instruktion två byte, vilket innebär att alla instruktioner ligger på jämna adresser, om du bara hoppar en byte hamnar du helt fel. Alltså måste goto $-1 bli goto $-2.
Men vissa instruktioner tar upp ännu mer utrymme, dessutom blir koden svårläst med dessa $xxx. Så jag rekommenderar starkt att man använder riktiga labels istället.
SM7UCZ
Inlägg: 9
Blev medlem: 3 juni 2008, 17:17:59
Ort: Jämjö
Kontakt:

Inlägg av SM7UCZ »

Då har jag en förklaring.
Jag fick ju även en varning vid kompileringen
Tack!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Strunta help i $-hopp och kör med labels enbart.
En anledning har du just upptäckt...

> Jag fick ju även en varning vid kompileringen

- Exakt vilken varning var det ?
- Vad sa den varningen dig ??
- Varför fanns inte varningen med i ditt *första* inlägg ????

Är det det faktum att du fick en varning som du menar "funkar dåligt" ??
Senast redigerad av sodjan 3 juni 2008, 20:07:57, redigerad totalt 1 gång.
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

Helt underbart roligt att det verligen fungerade just "dåligt" i den här koden :) (den missar ju bara clrwdt)

clrwdt
decfsz slask,f ;fördröjningsregister
goto $-2
decfsz slask1,f
goto $-4

att goto $-4 hoppar via goto $-2 var störtskönt :D
Användarvisningsbild
ahlsten
Inlägg: 659
Blev medlem: 12 november 2005, 00:24:14
Ort: Uppsala

Inlägg av ahlsten »

sodjan skrev: 1. Exakt vilken varning var det ?
1. Vad sa den varningen dig ??
2. Varför fanns inte varningen med i ditt *första* inlägg ????
Fibonacci-numrering? :)
Lite OT, sry...
Användarvisningsbild
strombom
Inlägg: 3305
Blev medlem: 27 maj 2003, 10:50:20
Ort: Västra Götaland
Kontakt:

Inlägg av strombom »

ahlsten: du ska självklart addera siffran med antalet frågetecken och dela med två (avrunda uppåt)
Skriv svar