<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
11.4.9. Összehasonlítás
Assembly programozás tartalomjegyzék
Adatregiszter és konstans egyezőségének vizsgálata
Két adaregiszter egyezőségének vizsgálata
Adatregiszter és konstans összehasonlítása
Két adatregiszter összehasonlítása
Adatregiszter tartományon belül esésének vizsgálata
Két bit egyezőségének vizsgálata
Adatregiszter és konstans egyezőségének vizsgálata:
A következő programrészlet az ADAT azonosítójú általános adatregiszter és egy konstans egyezőségét vizsgálja úgy, hogy közben az ADAT regiszter értéke nem változik:
... ... movlw 0x0A ;W = 10d, a konstans megadása subwf ADAT,0 ;W = ADAT - 10d btfsc STATUS,2 ;a Z zérusjelző-bit vizsgálata goto IGEN ;ugrik, ha Z = 1, vagyis, ha ADAT = 10d ... ... ;itt folytatódik, ha Z = 0 ...
Két adatregiszter egyezőségének vizsgálata:
A következő programrészlet az ADAT1 és ADAT2 azonosítójú általános adatregiszterek értékének egyezőségét vizsgálja úgy, hogy közben egyik regiszter értéke sem változik:
... ... movf ADAT2,0 ;W=ADAT2 subwf ADAT1,0 ;W=ADAT1-ADAT2 btfsc STATUS,2 ;a Z zérusjelző-bit vizsgálata goto IGEN ;ugrik, ha Z=1, vagyis, ha ADAT1=ADAT2 ... ... ;itt folytatódik, ha Z = 0 ...
Adatregiszter és konstans összehasonlítása:
A következő programrészlet az ADAT azonosítójú általános adatregiszter és egy konstans viszonyát vizsgálja úgy, hogy közben az ADAT regiszter értéke nem változik:
... ... movlw 0x0A ;W=10d, a konstans megadása subwf ADAT,0 ;W=ADAT-10d btfsc STATUS,2 ;a Z zérusjelző-bit vizsgálata goto EGYENLO ;ugrik, ha Z=1, vagyis, ha ADAT=10d btfsc STATUS,0 ;a C túlcsordulás jelzőbit vizsgálata goto NAGYOBB ;ugrik, ha C=1, vagyis ha ADAT>10d ... ... ;itt folytatódik, ha C=1, vagyis ha ADAT<10d ...
A programrészlet tulajdonképpen egy, a két adat viszonyától függő hármas elágazást valósít meg.
Két adatregiszter összehasonlítása:
A következő programrészlet az ADAT1 és ADAT2 azonosítójú általános adatregiszterek egymáshoz való viszonyát vizsgálja úgy, hogy közben egyik regiszter értéke sem változik:
... ... movwf ADAT2,0 ;W=ADAT2 subwf ADAT,0 ;W=ADAT1-ADAT2 btfsc STATUS,2 ;a Z zérusjelző-bit vizsgálata goto EGYENLO ;ugrik, ha Z=1, vagyis, ha ADAT1=ADAT2 btfsc STATUS,0 ;a C túlcsordulás jelzőbit vizsgálata goto NAGYOBB ;ugrik, ha C=1, vagyis ha ADAT1>ADAT2 ... ... ;itt folytatódik, ha C=0, vagyis ha ADAT1<ADAT2 ...
A programrészlet tulajdonképpen egy, a két adat viszonyától függő hármas elágazást valósít meg.
Adatregiszter tartományon belül esésének vizsgálata:
A következő programrészlet (Dr. Kónya László: PIC mikrovezérlők alkalmazástechnikája) az ADAT azonosítójú általános adatregiszter tartalmáról dönti el, hogy például a 10d és 20d által kijelölt tartományban van-e. A művelet közben az adatregiszter értéke nem változik:
... ... movf ADAT,0 ;W=ADAT addlw 0xEB ;W = W + (255d-20d=EBh) addlw 0x0B ;W = W + (20d-10d+1=0Bh) btfsc STATUS,0 ;a C túlcsordulás jelzőbit vizsgálata goto IGEN ;ugrik, ha W túlcsordul (ha 20d>=ADAT>=10d) ... ... ;itt folytatódik, ha a tartományon kívül van ...
Az adatregiszter tartalma a tartományba esik akkor is, ha valamelyik határértékkel megegyezik.
Két bit egyezőségének vizsgálata:
A következő programrészlet (Tudomány és Technika) az ADAT1 regiszter 3. bitjének és az ADAT2 regiszter 5. bitjének egyezőségét vizsgálja úgy, hogy közben egyik regiszter értéke sem változik:
... ... clrw ;W=0 btfsc ADAT1,3 ;az ADAT1 3. bitjének vizsgálata movlw 0x20 ;W = B'0010 0000', az 5. bit maszkja xorlw ADAT2,0 ;W = ADAT2 "kizáró-vagy" W btfsc STATUS,2 ;a Z zérusjelző-bit vizsgálata goto EGYEZIK ;ugrik, ha Z=1 ... ... ;itt folytatódik, ha Z=0 ...
A program először megvizsgálja az ADAT1 regiszter 3. bitjét. Ha a 3. bit "0", akkor "0", ha "1", akkor "1" kerül a W munkaregiszter 5. bitjébe. Az egyezőség ezután már eldönthető egy ADAT2 és W közötti "Kizáró-VAGY" művelettel. Egyezőség esetén a "Kizáró-VAGY" művelet eredménye "0", egyébként "1".
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>