00001 #include "p18cxxx.inc" 00002 udata_acs ; Adatterület lefoglalása 00003 m res 2 ; 2 bájt: unsigne int* m; 00004 a res 2 ; 2 bájt: unsigned int a; 00005 b res 2 ; 2 bájt: unsigned int b; 00006 p res 2 ; 2 bájt: unsigned long* m; 00007 j res 4 ; 4 bájt: unsigned long j; 00008 k res 4 ; 4 bájt: unsigned long k; 00009 00010 RST CODE 00011 goto start 00012 PGM CODE ; Itt kezdődik a program 00013 ;--- a = 0x4321 00014 start: movlw 0x21 00015 movwf a 00016 movlw 0x43 00017 movwf a+1 00018 ;--- b = 0xAC97 00019 movlw 0x97 00020 movwf b 00021 movlw 0xAC 00022 movwf b+1 00023 ;--- m = & a --- a mutató beállítása 00024 movlw low a 00025 movwf m 00026 movlw high a 00027 movwf m+1 00028 ;--- b = *m --- értékadás indirekcióval 00029 movff m,FSR0L ; FSR0 <- (m) 00030 movff m+1,FSR0H 00031 movff POSTINC0,b ; b.LSB <- ((FSR0)); FSR0++ 00032 movff POSTDEC0,b+1 ; b.MSB <- ((FSR0)); FSR0-- 00033 00034 ;=== 32 bites változók kezelése ========== 00035 ;--- j = 0x76543210 00036 movlw 0x76 ; A hecc kedvéért 00037 movwf j+3 ; j.MSB-vel kezdjük 00038 movlw 0x54 ; a feltöltést! 00039 movwf j+2 ; Csak hogy lássuk: 00040 movlw 0x32 ; tetszőleges a sorrend... 00041 movwf j+1 00042 movlw 0x10 00043 movwf j 00044 ;--- k = 0xFEDCBA98 00045 movlw 0x98 ; Itt pedig össze-vissza 00046 movwf k ; ugrálva haladunk... :-) 00047 movlw 0xDC 00048 movwf k+2 00049 movlw 0xFE 00050 movwf k+3 00051 movlw 0xBA 00052 movwf k+1 00053 ;--- p = &j --- a mutató beállítása 00054 movlw low j 00055 movwf p 00056 movlw high j 00057 movwf p+1 00058 ;--- k = *p --- értékadás indirekcióval 00059 movff p,FSR0L ; FSR0 <- (p) 00060 movff p+1,FSR0H 00061 ;--- most 4 bájtot kell másolni 00062 movff POSTINC0,k ; k.LSB <- ((FSR0)); FSR0++ 00063 movff POSTINC0,k+1 ; k.2nd <- ((FSR0)); FSR0++ 00064 movff POSTINC0,k+2 ; k.3rd <- ((FSR0)); FSR0++ 00065 movff INDF0,k+3 ; k.MSB <- ((FSR0)); 00066 ;--- végtelen ciklus 00067 goto start 00068 END