Pic24 xc16 asm program felépítése

Forráslink: http://www.mogi.bme.hu/letoltes/ALKALMAZOTT%20INFORMATIKAI%20T%C3%81RGYAK/Mikrovezerlok%20alkalmazasa/Gyakorlatok/Le%C3%ADr%C3%A1sok/MPLAB%C2%AE%20XC16%20ASSEMBLER,%20LINKER%20AND%20UTILITIES.pdf  

Magyar fórum segítség: https://www.hobbielektronika.hu/forum/pic-miertek-hogyanok-haladoknak?pg=1191  

 

 


Programkód pozícionálása a programmemóriában:

 .text                  ;Start of Code section
 .section .nev, code, address(0x900)    ; A ".nev" tetszőleges, hisz én adom meg. Lényegében cimkeként lehet értelmezni.

 


A programmemóriába a megadott címtől kezdődően byte mérető adaokat tárolunk le:
.section .adatok1, code, address(0x8f00)
    .pbyte 0x11,0x22,0x33,0x44
  
.text  

Programmemória térkép:
cím: 0x8f00       adat: 332211
cím: 08xf02       adat: 000044
 


 

 

 

.section foo ;foo is initialized data memory.

.section bar,bss,xmemory,align(256) ;bar is uninitialized
                                                           ;X data memory, aligned.

.section *,data,near ;section is near ;initialized data memory.

.section buf1,bss,address(0x800) ;buf1 is uninitialized
                                                      ;data memory at 0x800.

.section tab1,psv,address(0x10000) ;tab1 is psv constants ;at 0x10000.




 

 

 

 

 

 

 

 

 

 

 

3.3. 34. oldaltól
Label (cimke) : Számmal általában nem kezdődhet, de folytatódhat, valamint az aláhúzásvonalon kívül más speciális és ékezetes karaktert nem tartalmazhat. Nincs a 32 darab karakteres korlát és minden karakter számít. Kötelező ":"-al lezárni a cimkét, amit akár spase (szünetjel) nélkül is utasítás követhet. A cimkét a sor elején kell kezdeni! Több cimke is lehet egymás után (mindegyik kettősponttal lezárva) akár egy sorban is, így több cimkével is hivatkozhatunk ugyanarra a programmemória (utasítássor) címre. A cimke nem annyira asm utasítás, hanem inkább program összeállítási utasítás.

Mnemonic (mneomonik) : Assembly utasítások

Literal (érték) : megadáskor kettős kereszttel "#" kell kezdeni.
Hexadecimális értékmegadáskor a 2. karakter nulla (0), a harmadik pedig "x", majd ezt követi a tényleges érték. Pld.: #0xf2
Decimális értékmegadáskot már érték a második karakter  és természetesen a többi is. Nem lehet a második karakter nulla "0", mert akkor oktális számnak fogja érzéklelni!  Helyesen pld.: #15
Oktális értékmegadáskor a 2. karakter nulla "0" betű (karaktar), a harmadik pedig már a tényleges érték. Pld.: #o342
Bináris értékmegadáskot nulla (0) a második karakter, a harmadik pedig "b" , majd ezt követi a tényleges érték. Pld.: #0b101100 vagy #0b0010110010
Mínusz előjelű szám értékmegadásakor kettes komplemensbe tváltva tárol el  a memóriába. Pld.: mov #-0x5c, W7 ;  vagy  mov #-92, W7
Karakter  értékmegasáskor egyes macskakörmok (' ') közé kell rakni a karaktert, amit a fordító ASC2 számmá konvertás és így kerül felhasználásra.  Pld.: #'z'