DasarDasar Pemrograman Assembler By Kustanto 1 Instruksi MOV
Dasar-Dasar Pemrograman Assembler By Kustanto
1. Instruksi (MOV, MOVC, dan MOVX) � MOV : digunakan untuk menyalin data antara 2 operand. � MOVC : Untuk menyalin data yang terdapat pada memory program internal. � MOVX : Untuk menyalin data yang terdapat pada memory program eksternal
Contoh Syntax Keterangan MOV A, R 1 Salin nilai R 1 ke akumulator MOV A, @R 1 Salin isi lokasi yang ditunjuk R 1 ke A MOV A, P 1 Salin data pada port 1 ke Akumulator MOV P 1, A Salin data pada Akumulator ke Port 1 MOVC A, @X+DPTR Salin data int. Yang di tunjuk DPTR ke A MOVX A, @DPTR Salin data eks. Yang ditunjuk DPTR ke A MOVX @DPTR, A Salin data Akumulator ke lokasi yang ditunjuk DPTR
2. Instruksi (ADD dan SUBB) � ADD : Digunakan untuk melakukan operasi penjumlahan Akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator. � SUBB : Untuk melakukan operasi pengurangan akumulator dengan suatu operand dan hasilnya disimpan dalam akumulator.
Contoh Syntax Keterangan ADD A, #20 A=A + 20 ADD A, @R 0 A=A + [R 0] SUBB A, B A=A-B SUBB A, #10 A=A-10
3. Instruksi (MUL AB dan DIV AB) � MUL AB : Digunakan untuk melakukan operasi perkalian antara Akumulator dengan register B. Hasilnya berupa data 16 bit dengan low byte pada A dan high byte pada B. � Contoh: A=50 h B=A 0 h MUL A, B hasilnya=3200 h maka: A=00 h B=32 h
� DIV AB : digunakan untuk melakukan operasi pembagian antara Akumulator dengan regiser B. Hasilnya pembagian disimpan pada Akumulator dan sisa pembagian disimpan pada register B. � Contoh: A=FBh DIV A, B Hasilnya= 0 Dh maka: A=0 Dh B=12 h B=11 h
3. Instruksi (DEC dan INC) � DEC : digunakan untuk melakukan pengurangan sebesar satu pada suatu operand. � INC : digunakan untuk melakukan penambahan sebesar satu pada suatu operand.
Contoh: Syntax Keterangan DEC A A=A-1 DEC @R 0 [R 0]=[R 0] – 1 INC A A=A + 1 INC DPTR= DPTR + 1
4. Intruksi (ORL, ANL dan CPL) � ORL : Untuk melakukan operasi OR antara dua operand. � ANL : Untuk melakukan operasi AND antara dua operand. � CPL : Untuk melakukan operasi komplemen suatu operand.
Contoh Syntax Akumulator Register B Hasil ORL A, B 0011 1010 1111 0000 1111 1010 ANL A, B 0011 1010 1111 0000 0011 0000 CPL A 0011 1010 1111 0000 1100 0101
5. Instruksi (RR, RL dan SWAP) � RR : Untuk melakukan operasi pergeseran ke kanan sebanyak 1 bit. � RL : Untuk melakukan operasi pergeseran ke kiri sebanyak 1 bit. � SWAP : Untuk melakukan operasi pertukaran data low nible dan high nible
Contoh Syntax Akumulator Hasil RR A 0011 1010 0001 1101 RL A 0011 1010 0111 0100 SWAP A 0011 1010 0011
6. Instruksi (SETB dan CLR) � SETB : digunakan untuk memberikan logik 1 pada bit operand. � CLR : Untuk memberikan logik 0 pada bit operand. � Contoh: SETB P 2. 0 SETB P 0. 0 CLR P 2. 1
7. Instruksi PUSh dan POP, DJNZ � PUSH : Untuk menyimpan operand ke dalam stack. � POP : Untuk mengembalikan nilai operand dari stack. � DJNZ : Melakukan lompatan jika nilainya di kurangi 1 dan hasilnya tidak nol.
Contoh loopa: loopb: push 7 push 6 push 5 mov R 7, #04 h mov R 6, #0 ffh mov R 5, #0 ffh djnz R 5, $ djnz R 6, loopb djnz R 7, loopa pop 5 pop 6 pop 7
Instruksi JMP (jump) : Melakukan lompatan ke suatu blok program. � JMP Contoh: start: loop: org 00 h jmp loop org 300 h setb p 0. 0 clr p 0. 1 sjmp loop end
Instruksi JB dan JNB (Jump if bit) dan JNB (Jump if not bit) : digunakan untuk melakukan lompatan ke suatu blok program jika nilai operand 1 (bit) atau 0 (not bit). � JB � Contoh: start: nyala: org 00 h mov p 0, #00 h jb p 0. 0, nyala sjmp start setb p 2. 0 sjmp start end
Contoh: instruksi JNB start: nyala: org 00 h mov p 0, #0 ffh jnb p 0. 0, nyala sjmp start setb p 2. 0 sjmp start end
Instruksi JZ dan JNZ (Jump if zero) : Untuk melakukan lompatan ke suatu blok program jika nilai operand 0 (zero). � JZ (Jump if not zero) : Untuk melakukan lompatan ke suatu blok program jika nilai operand 1 (not zero). � JNZ
Contoh org 00 h utama: mov R 1, #10 start: dec R 1 jz R 1, nyala sjmp start nyala: setb p 2. 0 jmp utama end
Instruksi CJNE (Compare and Jump if Not Equal) : Digunakan untuk melakukan pembandingan dua operand dan lompat ke blok program lain jika tidak sama. � CJNE � Contoh: org 00 h utama: mov a, #10 tambah: inc a cjne a, #20, tambah setb p 2. 0 sjmp utama end
Instruksi CALL dan RET � CALL : dignakan untuk memanggil prosedur tertentu dalam program (subprogram). � RET : digunakan untuk mengembalikan ke baris program yang melakukan CALL.
Contoh kedip: tunda: lb: org 00 h setb p 2. 0 call tunda clr p 2. 0 call tunda sjmp kedip mov r 7, #20 mov r 6, #0 ffh mov r 5, #0 ffh djnz r 5, $ djnz r 6, lb djnz r 7, la ret end
Thanks � TERIMA KASIH
- Slides: 25