Set instruksi 12-bit
Set Instruksi 12-bit digunakan untuk mikrokontroler PIC keluarga Low End. Set Instruksi 12-bit terdiri 33 buah instruksi single word. Setiap instruksi terdiri dari opcode dan operand yang dipaket dalam word selebar 12 bit. Set instruksi 12-bit digunakan oleh mikrokontroler berikut ini:
KlasifikasiBerdasarkan strukturnya, set instruksi 12-bit dapat dikelompokkan menjadi:
PengkodeanSet Instruksi 12 bit terdiri dari opcode dan operand. operandnya dapat berupa b, d, f dan k. Operand b lebarnya 3 bit, digunakan untuk menotasikan alamat bit (bit 0 hingga bit 7). Operand d lebarnya 1 bit, digunakan untuk menotasikan tujuan operasi, jika "0" maka hasil tersimpan di register w, jika "1" maka hasil tersimpan di register f. Operand f lebarnya 5 bit, digunakan untuk menotasikan alamat register f (0x00 hingga 0x3f). Terakhir, operand k digunakan untuk menotasikan data literal baik 8 bit maupun 9 bit. Operand:
RincianADDWF [Add W and f] Sintaks: [ label ] ADDWF f,d Operasi: d = W + f Flag yang dipengaruhi: C, DC, Z Penjelasan: Tambahkan W dan f, simpan di d
Sintaks: [ label ] ANDLW k Operasi: W = W AND k Flag yang dipengaruhi: Z Penjelasan: hasil operasi AND antara W dan k disimpan di W
Sintaks: [ label ] ANDWF f,d Operasi: d = W AND f Flag yang dipengaruhi: Z Penjelasan: hasil operasi AND antara W dan f disimpan di d
Sintaks: [ label ] BCF f,b Operasi: 0 -> (f) Flag yang dipengaruhi: - Penjelasan: Bit b dari register f direset
Sintaks: [ label ] BSF f,b Operasi: 1 -> (f) Flag yang dipengaruhi: - Penjelasan: Bit b dari register f diset
Sintaks: [ label ] BTFSC f,b Operasi: Loncat jika (f) = 0 Flag yang dipengaruhi: - Penjelasan: Jika bit ke b register f bernilai "0" maka loncati baris selanjutnya
Sintaks: [ label ] BTFSS f,b Operasi: loncat jika (f) = 1 Flag yang dipengaruhi: - Penjelasan: Jika bit ke b register f bernilai "1" maka loncati baris selanjutnya
Sintaks: [ label ] CALL k Operasi: TOS = (PC) + 1; PC<7:0> = k; PC<10:9> = Status<6:5> ; PC<8> = 0 Flag yang dipengaruhi: - Penjelasan: Pemanggilan Subrutin pada alamat k
Sintaks: [ label ] CLRF f Operasi: f = 0x00 Flag yang dipengaruhi: Z Penjelasan: Isi register f dengan 0x00
Sintaks: [ label ] CLRW Operasi: W = 0x00 Flag yang dipengaruhi: Z Penjelasan: Isi register W dengan 0x00
Sintaks: [ label ] CLRWDT Operands: - Operasi: WDT = 0x00; Flag yang dipengaruhi: TO, PD Penjelasan: bersihkan timer watchdog dan preskalarnya jika ditetapkan.
Sintaks: [ label ] COMF f,d Operasi: d = inv(f) Flag yang dipengaruhi: Z Penjelasan: Komplemenkan register f, simpan di d
Sintaks: [ label ] DECF f,d Operasi: d = f - 1 Flag yang dipengaruhi: Z Penjelasan: Kurangi f, simpan di d
Sintaks: [ label ] DECFSZ f,d Operasi: d = f - 1 ; loncat jika hasilnya 0 Flag yang dipengaruhi: - Penjelasan: Jika hasil pengurangan register f nilainya 0, loncati baris selanjutnya
Sintaks: [ label ] GOTO k Operasi: PC<8:0> = k ; PC<10:9> = Status<6:5> Flag yang dipengaruhi: - Penjelasan: Loncat ke alamat k (percabangan tak bersyarat)
Sintaks: [ label ] INCF f,d Operasi: d = f + 1 Flag yang dipengaruhi: Z Penjelasan: Tambahkan f, simpan hasilnya di d
Sintaks: [ label ] INCFSZ f,d Operasi: d = f + 1 ->; loncati jika hasilnya 0 Flag yang dipengaruhi: - Penjelasan: Jika hasil penambahan register f nilainya 0, loncati baris selanjutnya
Sintaks: [ label ] IORLW k Operasi: W = W OR k Flag yang dipengaruhi: Z Penjelasan: Hasil opersi OR antara W dan k disimpan di W
Sintaks: [ label ] IORWF f,d Operasi: d = W OR f Flag yang dipengaruhi: Z Penjelasan: Hasil operasi OR antara W dan f disimpan di d
Sintaks: [ label ] MOVF f,d Operasi: d = f Flag yang dipengaruhi: Z Penjelasan: salin register f ke d
Sintaks: [ label ] MOVLW k Operasi: W = k Flag yang dipengaruhi: - Penjelasan: Salin literal 8 bit ke W
Sintaks: [ label ] MOVWF f Operasi: f = W Flag yang dipengaruhi: - Penjelasan: Salin register W ke register f
Sintaks: [ label ] NOP Operasi: - Flag yang dipengaruhi: - Penjelasan: Diam selama 1 siklus instruksi
Sintaks: [ label ] Option Operasi: OPTION_REG = W Flag yang dipengaruhi: - Penjelasan: Salin W ke register OPTION_REG
Sintaks: [ label ] RETLW k Operasi: W = k; PC = TOS Flag yang dipengaruhi: - Penjelasan: Kembali dari subrutin dengan membawa nilai k di register W
Sintaks: [ label ] RLF f,d Operasi: d = Geser Kiri (f) Flag yang dipengaruhi: C Penjelasan: Geser kiri register f, simpan di d
Sintaks: [ label ] RRF f,d Operasi: d = Geser Kanan (f) Flag yang dipengaruhi: C Penjelasan: Geser kanan register f, simpan di d
Sintaks: [ label ] SLEEP Operasi: WDT = 0x00; Flag yang dipengaruhi: TO, PD, RBWUF Penjelasan: Masuki modus SLEEP
Sintaks: [ label ] SUBWF f,d Operasi: d = f – W Flag yang dipengaruhi: C, DC, Z Penjelasan: Ambil W dari f, simpan di d
Sintaks: [ label ] SWAPF f,d Operasi: (f<3:0>) -> (dest<7:4>); (f<7:4>) -> (dest<3:0>) Flag yang dipengaruhi: - Penjelasan: tukarkan nibble atas dan bawah, simpan di d
Sintaks: [ label ] TRIS f Operasi: TRIS = W Flag yang dipengaruhi: - Penjelasan: Salin W ke register TRIS
Sintaks: [ label ] XORLW k Operasi: W = W XOR k Flag yang dipengaruhi: Z Penjelasan: XOR-kan k dan W, simpan di W
Sintaks: [ label ] XORWF f,d Operasi: d = W XOR f Flag yang dipengaruhi: Z Penjelasan: XOR-kan W dan f, simpan di d |