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