Vissza a főoldalra    Vissza a PIC főoldalra

<< Előző oldal   Vissza a tartalomjegyzékhez   Következő oldal >>

 


11.4.2. Adatmozgatás


Assembly programozás tartalomjegyzék

A W értékének átírása egy adatregiszterbe
Adatregiszter értékének átírása W-be
Adatregiszter értékének átírása egy másik adatregiszterbe
Adatregiszter és W értékének cseréje
Két adatregiszter értékének cseréje
Adatregiszter alsó és felső 4 bitjének cseréje


      A W értékének átírása egy adatregiszterbe:

      A 8 bites W munkaregiszter értéke egyetlen, erre a célra hivatott, MOVWF utasítással tetszőleges fájlregiszterbe másolható. A W értéke és a STATUS regiszter Z zérusjelző bitje változatlan marad.

... ...    
  movwf ADAT ;a W regiszter értékének átvitele az ADAT azonosítójú regiszterbe
  ...    

Vissza a lap tetejére


      Adatregiszter értékének átírása W-be:

      Bármely 8 bites adatregiszter értéke egyetlen, erre a célra hivatott, MOVF utasítással a W munkaregiszterbe másolható. Az adatregiszter értéke változatlan marad, a STATUS regiszter Z zérusjelző bitje az átvitt adatnak megfelelő értékre áll be.

... ...    
  movf ADAT,0 ;az ADAT regiszter értékének átvitele a W munkaregiszterbe
  ...    

      A MOVF utasításban szereplő célkijelölő bit "0" értéke esetén az ADAT regiszter értéke a W munkaregiszterbe kerül. Az "1" érték esetén viszont az ADAT regiszter értéke magába íródik vissza, vagyis csak tesztelés céljából olvasódik ki, aminek hatására a STATUS regiszter Z zérusjelző bitje a megfelelő értékre áll be.

Vissza a lap tetejére


      Adatregiszter értékének átírása egy másik adatregiszterbe:

      Egy tetszőleges adatmemória-regiszter értéke két utasítással átmásolható bármelyik másik adatregiszterbe a fent bemutatott alapeljárások segítségével.

... ...    
  movf ADAT1,0 ;az ADAT1 azonosítójú regiszter értékének átvitele a W munkaregiszterbe
  movwf ADAT2 ;a W regiszter értékének átvitele az ADAT2 azonosítójú regiszterbe
  ...    

Vissza a lap tetejére


      Adatregiszter és W értékének cseréje:

      Egy tetszőleges adatmemória-regiszter és a W munkaregiszter értékének cseréje megoldható két segédregiszterrel (REKESZ1, REKESZ2), amelyekben az áthelyezendő adatok ideiglenesen tárolhatók.

... ...    
  movwf REKESZ1 ;a W munkaregiszter másolása a REKESZ1 regiszterbe
  movf ADAT,0 ;az ADAT regiszter másolása a W-be
  movwf REKESZ2 ;a W másolása a REKESZ2-be
  movf REKESZ1,0 ;a REKESZ1 másolása a W-be
  movwf ADAT ;a W másolása az ADAT regiszterbe
  movf REKESZ2,0 ;a REKESZ2 másolása a W-be
  ...    

      A program működését szemlélteti a következő táblázat:

11.4.2-1. Táblázat
W ADAT REKESZ1 REKESZ2
1111 0000 1000 0001 xxxx xxxx xxxx xxxx
movwf REKESZ1
1111 0000 1000 0001 1111 0000 xxxx xxxx
movf ADAT,0
1000 0001 1000 0001 1111 0000 xxxx xxxx
movwf REKESZ2
1000 0001 1000 0001 1111 0000 1000 0001
movf REKESZ1,0
1111 0000 1000 0001 1111 0000 1000 0001
movwf ADAT
1111 0000 1111 0000 1111 0000 1000 0001
movf REKESZ2,0
1000 0001 1111 0000 1111 0000 1000 0001

      Ugyanez a feladat sokkal egyszerűbben, segédregiszter nélkül, megoldható a következő, XORWF utasításon alapuló, három soros programrészlettel is (Dr. Kónya László: PIC mikrovezérlők alkalmazástechnikája).

... ...    
  xorwf ADAT,1 ;W = W, ADAT = (W xor ADAT)
  xorwf ADAT,0 ;W = W xor (W xor ADAT) = ADAT
  xorwf ADAT,1 ;ADAT = ADAT xor (W xor ADAT) = W
  ...    

      A program működését szemlélteti a következő táblázat:

11.4.2-2. Táblázat
W ADAT
1111 0000 1000 0001
xorwf ADAT,1
1111 0000 0111 0001
xorwf ADAT,0
1000 0001 0111 0001
xorwf ADAT,1
1000 0001 1111 0000

Vissza a lap tetejére


      Két adatregiszter értékének cseréje:

      Két tetszőleges adatmemória-regiszter értékének cseréje egyszerűen megoldható egy segédregiszter (REKESZ) felhasználásával, amelyben az áthelyezendő adatok ideiglenesen tárolhatók.

... ...    
  movf ADAT1,0 ;az ADAT1 regiszter másolása a W munkaregiszterbe
  movwf REKESZ ;a W másolása a REKESZ-be
  movf ADAT2,0 ;az ADAT2 másolása a W-be
  movwf ADAT1 ;a W másolása az ADAT1-be
  movf REKESZ,0 ;a REKESZ másolása a W-be
  movwf ADAT2 ;a W másolása az ADAT2-be
  ...    

      A csere megoldható a fentiekben bemutatott XORWF utasítás segítségével is.

... ...    
  movf ADAT1,0 ;az ADAT1 regiszter másolása a W munkaregiszterbe
  xorwf ADAT2,1 ;W = W, ADAT2 = (W xor ADAT2)
  xorwf ADAT2,0 ;W = W xor (W xor ADAT2) = ADAT2
  xorwf ADAT2,1 ;ADAT2 = ADAT2 xor (W xor ADAT2) = W
  movwf ADAT1 ;a W másolása az ADAT1-be
  ...    

      A csere legegyszerűbben a következő, négy soros programrészlettel oldható meg az ADDWF és SUBWF utasítások segítségével (Dr. Kónya László: PIC mikrovezérlők alkalmazástechnikája).

... ...    
  movf ADAT1,0 ;az ADAT1 regiszter másolása a W munkaregiszterbe
  subwf ADAT2,0 ;W = (ADAT2 - ADAT1)
  addwf ADAT1,1 ;ADAT1 = ADAT1 + (ADAT2 - ADAT1)
  subwf ADAT2,1 ;ADAT2 = ADAT2 - (ADAT2 - ADAT1)
  ...    

      A program működését szemlélteti a következő táblázat:

11.4.2-3. Táblázat
ADAT1 ADAT2 W
1111 0000 1000 0001 xxxx xxxx
movf ADAT1,0
1111 0000 1000 0001 1111 0000
subwf ADAT2,0
1111 0000 1000 0001 1001 0001
addwf ADAT1,1
1000 0001 1000 0001 1001 0001
subwf ADAT2,1
1000 0001 1111 0000 1001 0001

Vissza a lap tetejére


      Adatregiszter alsó és felső 4 bitjének cseréje:

      Bármely 8 bites adatregiszter alsó és felső 4 bitje egyetlen, erre a célra hivatott, SWAPF utasítással felcserélhető. Az utasításban szereplő célkijelölő bit "0" értéke esetén az eredmény a W munkaregiszterbe kerül, "1" érték esetén viszont az adatregiszterbe íródik vissza. Az utasítás eredménye a STATUS regiszter jelzőbitjeire nincs hatással.

... ...    
  swapf ADAT,0 ;ha ADAT = aaaabbbb, akkor W = bbbbaaaa/TD>
  ...    

  Tudomány és Technika (test@t-es-t.hu)


 

<< Előző oldal   Vissza a tartalomjegyzékhez   Vissza a lap tetejére   Következő oldal >>

Vissza a főoldalra    Vissza a PIC főoldalra