Jämföra bytes i MPASM
Jämföra bytes i MPASM
Hur gör man smidigast om man vill jämföra bytes i MPASM??
om man t.ex vill
1. Kolla om Byte1 är större än Byte2
2. Kolla om Byte1 är mindre än Byte2
3. Kolla om Byte1 är lika med Byte2
EDIT: 8bitars pic:s
om man t.ex vill
1. Kolla om Byte1 är större än Byte2
2. Kolla om Byte1 är mindre än Byte2
3. Kolla om Byte1 är lika med Byte2
EDIT: 8bitars pic:s
Senast redigerad av Bosen 9 november 2008, 17:32:49, redigerad totalt 1 gång.
I PIC18 finns det färdiga instruktioner för det. I PIC12/16 så är det subtrakton som gäller och sedan kolla statusflaggorna för zero/carry. För att kolla "=" så kan även xor användas.
Är det gränsvärden Du skall jämföra med och t.ex. ha en fönsterkomparator så kan det förenklas lite genom att använda 2-komplement.
Är det gränsvärden Du skall jämföra med och t.ex. ha en fönsterkomparator så kan det förenklas lite genom att använda 2-komplement.
Du adderar ett negativt tal och ser om registret slår runt och sedan ett till och ser om det slår runt då. På det sättet kan man konstatera om ett värde ligger inom ett område eller inte utan att hämta värdet en gång till. Kan spara både kodlängd och en byte ram för mellanlagring av ett framräknat värde i vissa fall och är det lågt i tak så kan det vara avgörande.
Fast är det inga sådana problem så varför krångla till det. Då är det bara till att använda subtraktion och kolla statusbitarna. Om det tar någon byte mer gör inte så mycket förutsatt att de finns.
Allt hänger på exakt vad Du skall göra och vad det är för osmidighet Du har nu och vill komma ifrån.
Jag är dålig på att förklara sådant här, men det finns på nätet. Titta lite bland exemplen på piclist, där är en hel del att lära sig av.
Fast är det inga sådana problem så varför krångla till det. Då är det bara till att använda subtraktion och kolla statusbitarna. Om det tar någon byte mer gör inte så mycket förutsatt att de finns.
Allt hänger på exakt vad Du skall göra och vad det är för osmidighet Du har nu och vill komma ifrån.
Jag är dålig på att förklara sådant här, men det finns på nätet. Titta lite bland exemplen på piclist, där är en hel del att lära sig av.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Bosen, A Guide to Common PIC Assembly Programming Constructs (pdf) tycker jag är en rätt bra referens som bl a tar upp några metoder för vad du vill göra.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Jo, det är snarare för att se om en variabel är = mer eller mindre än en konstant.Marta skrev:Det där ser väldigt egendomligt ut. Först så är sublw att subtrahera w från ett immediate värde. Sedan så när man bara testar på carry så innefattas även = i det fall carry (eller rättare borrow) är satt.
Men man kan ju lätt göra så den jämför emot en variabel.
Och det var bara för att visa ungefär hur man kan göra.