Sida 1 av 1

Jämföra tal, ASM, PIC

Postat: 11 april 2007, 20:12:35
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

Postat: 11 april 2007, 20:50:24
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.

Postat: 11 april 2007, 21:14:50
av v-g
Som alltid finns svaret för den som letar.

eller klickar på länkar.

Postat: 11 april 2007, 22:23:31
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.

Postat: 13 april 2007, 09:57:39
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:

Postat: 13 april 2007, 10:04:46
av sodjan
Koden på v-g's länk var ju kompakt och bra. Har du kollat ?

Postat: 13 april 2007, 10:05:50
av squiz3r
Inte så mycket, får göra det.

Tack!

Postat: 13 april 2007, 10:17:04
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

Postat: 13 april 2007, 10:38:04
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.

Postat: 13 april 2007, 12:10:20
av squiz3r
Okej, då förstår jag :)