Jämföra tal, ASM, PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Jämföra tal, ASM, PIC

Inlägg av squiz3r »

Hej jag har en variabel som jag inte vet hur stor den är, och jag vill göra så att om den är te.x mellan 20 och 50 så ska den gå till label "__2".
Hur gör jag detta?

//Daniel A
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Inlägg av Micke_s »

Hur menar du med stor den är? antal bitar eller? hur kan du inte veta detta?
Ett sätt är att ta minus 20 kolla carry, ta minus 30 kolla carry, om carry är satt(iirc) så hoppar du.
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

Som alltid finns svaret för den som letar.

eller klickar på länkar.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det framgår inte vilken PIC arkitektur det handlar om, antagligen PIC16,
och då stämmer svaren. Men notera att PIC18 har en uppsättning
instruktioner för just detta. Kanske inte direkt "range", men i alla fall
"större än", "mindre än" o.s.v. Så man slipper SUB instruktioner och att
kolla C varje gång.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

>Hur menar du med stor den är? antal bitar eller?
Nej, jag uttryckte mig dåligt. Det är en 8bitars variabel, och jag vill att om den inehåller mellan 100 och 120 decimalt så ska den gå till en label.
Det är PIC16F :oops:
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Koden på v-g's länk var ju kompakt och bra. Har du kollat ?
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Inte så mycket, får göra det.

Tack!
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Jag förstår inte riktigt... :oops:

Kod: Markera allt

Lower = 50
Upper = 60

addlw 255 - Hi equates to addlw 195
addlw (Hi - Lo) + 1 equates to addlw 11

W = 50          ; lower limit

addlw 195       ; w = 245
addlw 11        ; w = 0, C = 1, result = OK
så "Hi" är samma som "upper"??

//Daniel A
v-g
EF Sponsor
Inlägg: 7875
Blev medlem: 25 november 2005, 23:47:53
Ort: Kramforce

Inlägg av v-g »

"så "Hi" är samma som "upper"??"

Ja.

hi-lo = differensen eller skillnaden som det heter på svenska.

Tycker för övrigt det var ett väldigt tydligt exempel.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

Okej, då förstår jag :)
Skriv svar