ADDRESSING MODE DAN INSTRUKSI PADA MIKROKONTROLER
7.2 Instruksi Pada Mikrokontroler 1. MOV
Perintah ini digunakan untuk operasi pertambahan contoh :
Mov a, p3 : menyalin isi data pada port 3 ke dalam akumulator
Mov p3, r5 :menyalin isi data yang nilainya yang terdapat pada register5 ke dalam port 3
MOV CX, 0Ah :mengisikan jumlah loop yang ingin dilakukan denganperincian 0-9 terdiri dari 10 angka
MOV DL,30h : bilangan ASCII yang sama dengan 30 hexa adalah ‘0’ yang akan dicetak dahulu dan dimasukkan ke dalam DLsesuai dengan Int 21 hexa service 02 hexa
MOV AH,02 h :AH diisi dengan service number dari interrupt 2. INC
Perintah yang digunakan untuk melakukan penambahan 1 Contoh :
INC A : Meningkatkan Akumulator sebesar 1 bit
INC Rn : Meningkatkan Register
INC DL : Menambahkan DL dengan 1
INC @R1 : Data pada alamat R1 ditambah 1
INC @Ri : Meningkatkan RAM tidak langsung 3. JMP (JUMP)
Perintah yang digunakan untuk melompat ke suatu label yang dituju Contoh :
Sjmp anda : lompat atau jalankan langsung program pada label anda
Sjmp proses : lompat atau jalankan langsung program pada label proses
Ljmp 500h : lompat atau jalankan langsung program pada alamat memori 100h
JMP 0203 : lompat ke arah lokasi memori offset:0203
CMP BX,0230 : membandingjan BX dengan 0230 4. ADD
Perintah yang digunakan untuk operasi penambahan Contoh :
ADD A,Rn : menambahkan register ke akumulator
ADD A,@Ri : menambahkan RAM tidak langsung ke akumulator
ADD A, #DATA : menambahkan data segera ke akumulator
ADDC A, Rn : menambahkan register ke akumulator dengan carry
ADDC A, @Ri : menambahkan RAM tidak langsung ke akumulator dengan carry 5. SUB
Perintah yang digunakan untuk pengurangan Contoh :
SUBB A, Rn : mengurangi register dari akumulator dengan borrow
SUBB A, @Ri : mengurangi RAM tidak langsung dari akumulator dengan borrow
SUBB A, #DATA : mengurangi data segera dari akumulator dengan borrow
SUBB A, langsung : mengurangi byte langsung dari akumulator dengan borrow
SUB A, 00H : mengurangi data pada alamat memori 00H dengan borrow 6. DEC
Perintah yang digunakan untuk melakukan pengurangan 1
Contoh :
DEC A : Menurunkan akumulator
DEC Rn : Menurunkan Register
DEC LANGSUNG : Menurunkan RAM langsung
DEC @Ri : Menurunkan RAM tidak langsung
DEC 06H : 06H – 1 = 05H 7. MUL
Perintah yang digunakan untuk melakukan operasi perkalian Contoh :
MUL AB : Mengalikan A & B
MUL BL : mengalikan nilai register BL dengan nilai register AL dandisimpan di register AX
MUL BX : Mengalikan nilai register BX dengan nilai register AX dandisimpan di register DX
MUL BC : Mengalikan nilai register BC dengan nilai register AC dandisimpan di register DC
MUL BZ : Mengalikan nilai register BZ dengan nilai register AZ dandisimpan di register DZ
MUL BD : Mengalikan nilai register BD dengan nilai register AD dandisimpan di register DD
8. DIV
Perintah yang digunakan untuk melakukan operasi pembagian Contoh :
DIV A,B : membagi nilai A dengan B
DIV B,C : membagi nilai B dengan C
DIV C,D : membagi nilai C dengan D
DIV D,E : membagi nilai D dengan E
DIV E,F : membagi nilai E dengan F 9. ANL
Perintah yang digunakan untuk operasi logika AND COntoh :
ANL A,05H : Proses AND terhadap A ke 05H
ANL A,@R0 : Proses AND terhadap A ke RAM
ANL A,#50H : Proses AND terhadap A ke data pada alamat memori 50H
ANL 07H, A : Proses AND terhadap 07H ke Akumulator
ANL 07H, #02H : Proses AND terhadap 07H ke 02H
10. ORL
Perintah yang digunakan untuk operasi logika OR Contoh:
ORL A, 07H : proses OR terhadap Akumulator ke 07H
ORL A, @R0 : Proses OR terhadap A ke RAM
ORL A,#60H : Proses OR terhadap A ke data pada alamat memori 60H
ORL 08H, A : Proses OR terhadap 08H ke Akumulator
ORL 09H, #03H : Proses OR terhadap 09H ke 03H 11. XRL
Perintah yang digunakan untuk operasi logika XOR Contoh:
XRL A, 07H : proses XOR terhadap Akumulator ke 07H
XRL A, @R0 : Proses XOR terhadap A ke RAM
XRL A,#60H : Proses XOR terhadap A ke data pada alamat memori 60H
XRL 08H, A : Proses XOR terhadap 08H ke Akumulator
XRL 09H, #03H : Proses XOR terhadap 09H ke 03H 12. CLR
Perintah yang digunakan untuk mereset data Contoh:
CLR A : Proses untuk menghapus data A
CLR B : Proses untuk menghapus data B
CLR C : Proses untuk menghapus data C
CLR D : Proses untuk menghapus data D
CLR E : Proses untuk menghapus data E 13. CPL
Perintah yang digunakan untuk mengkomplemenkan data Contoh:
CPL A : Menentukan komplemen A
CPL B : Menentukan komplemen B
CPL C : Menentukan komplemen C
CPL D : Menentukan komplemen D
CPL E : Menentukan komplemen E
14. RR/RL
Perintah yang digunakan untuk menggeser posisi sebanyak 1 bit Contoh:
RR A : geser ke kanan 1 bit pada akumulator
RL A : geser ke kiri 1 bit pada akumulator
RR rx : geser ke kanan 1 bit pada isi register x
RL rx : geser ke kanan 1 bit pada isi register x 15. SETB
Perintah yang digunakan untuk memberikan logika 1 pada suatu port Contoh:
SETB P1.0 : memberikan logika 1 pada port 1.0
SETB P1.3 : memberikan logika 1 pada port 1.3
SETB P2.3 : memberikan logika 1 pada port 2.3
SETB P1.8 : memberikan logika 1 pada port 1.8
SETB P1.1 : memberikan logika 1 pada port 1.1 16. JB/ JNB
Perintah yang digunakan untuk lompat ke label subprogram bila nilai port x.y berlogika LOWatau mempunyai nilai nol
Contoh :
Jnb p1.0, go : ke label subprogram bila nilai port 1.0 berlogika LOW
Jnb p2.0, go : ke label subprogram bila nilai port 2.0 berlogika LOW
Jnb p3.0, go : ke label subprogram bila nilai port 3.0 berlogika LOW
Jnb p4.0, go : ke label subprogram bila nilai port 4.0 berlogika LOW
Jnb p5.0, go : ke label subprogram bila nilai port 5.0 berlogika LOW 17. JZ/JNZ
Perintah yang digunakan untuk mengurangi nilai isi data pada register x dan bila nilainya belumtercapai maka akan dilakukan lompatan ke label subprogram
Contoh:
Mov B,#00H : Jika Nilai akumulator A adalah 00H Jump Ke alamat untuk eksekusi Mov B,#00H
JNZ R7, gaul : kurangi nilai isi data pada register R7 dan bila nilainya belum tercapai 0 maka dilakukan lompatan subprogram dengan label GAUL
JNZ R10, coba : kurangi nilai isi data pada register R10 dan bila nilainyabelum tercapai 0 maka dilakukan lompatan subprogram dengan label COBA
JNZ R12, klik : kurangi nilai isi data pada register R12 dan bila nilainya belum tercapai 0 maka dilakukan lompatan subprogram dengan label KLIK
JNZ R3, pilih : kurangi nilai isi data pada register R3 dan bila nilainya belum tercapai 0 maka dilakukan lompatan subprogram dengan label PILIH