Fórum témák

» Több friss téma
Cikkek » AVR Assembly kezdőknek
AVR Assembly kezdőknek
Szerző: sgt, idő: Nov 23, 2011, Olvasva: 33087, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   11 / 12

Ha 16 biten vagy ennél nagyobb bit szélességen szeretnénk számolni, az utasítás készlet erre is fel lett készítve. Lássuk ezt egy mezei összeadásban.

  1. .include "m16Adef.inc"
  2.  
  3. .def AH=r17
  4. .def AL=r18
  5. .def BH=r19
  6. .def BL=r20
  7.  
  8. .org 0x0000
  9.     jmp init
  10.  
  11. .org 0x002A
  12. init:
  13.     ldi AH, 0x10
  14.     ldi AL, 0x54
  15.     ldi BH, 0x22
  16.     ldi BL, 0xFE
  17.  
  18.     add BL, AL
  19.     adc BH, AH
  20.  
  21. end:
  22.     jmp end

0x1054 + 0x22FE = 0x3352 és ezt fogjuk a BH, és BL regiszter tartalmából is látni.

Stack saját felhasználásra.

  1. .include "m16Adef.inc"
  2.  
  3. .org 0x0000
  4.     jmp init
  5.  
  6. .org 0x002A
  7. init:
  8.     ldi r21, HIGH(RAMEND)
  9.     out SPH, r21
  10.     ldi r21, LOW(RAMEND)
  11.     out SPL, r21
  12.  
  13.     ldi r18, 0x45
  14.     push r18
  15.     clr r18
  16.     pop r18
  17.  
  18. end:
  19.     jmp end

Mint látható a stackben el tudtuk tárolni az adott regiszter tartalmát (többet is módunkban áll). Viszont figyelni kell arra, hogy a stack tulajdonképpen egy LIFO, ami pedig úgy működik, hogy amit először tettünk be, az fog a legutoljára megjelenni. Ha megszakítunk, vagy szubrutint hívunk, akkor ezek visszatérésig nem tudunk az általunk betett tartalmakhoz hozzá férni!!!


A cikk még nem ért véget, lapozz!
Következő: »»   11 / 12
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem