Petunjuk praktikum mikroprosesor oleh Totok Budioko
MODUL 6 INSTRUKSI PERCABANGAN Tujuan : praktikan dapat menggunakan instruksi percabangan dalam program. Teori Instruksi percabangan berfungsi untuk membelokkan runtun eksekusi program yang semula sekuensial menjadi melompat ke instruksi yang lainnya. Instruksi percabangan terdiri atas instruksi percabangan tanpa syarat dan bersyarat. Percabangan Tanpa Syarat Sintaks: JMP label Contoh: MOV AL,5 MOV BL,5 JMP stop NOP stop:RET Percabangan Bersyarat Percabangan bersyarat yaitu instruksi yang akan melaksanakan percabangan ke suatu instruksi lain jika kondisinya terpenuhi, jika kondisi tidak terpenuhi maka instruksi selanjutnya (di bawahnya) yang akan dieksekusi. Instruksi percabangan dapat dikelompokkan menjadi tiga group, yaitu : 1. Menguji satu bit flag 2. Membandingkan bilangan bertanda 3. Membandingkan bilangan tak bertanda Menguji Satu Bit Instruksi JZ, JE JC , JB, JNAE JS JO JPE, JP JNZ , JNE JNC , JNB, JAE JNS JNO JPO, JNP
Deskripsi Jump if Zero (Equel) Jump if Carry (Below, Not Above Equal). Jump if Sign. Jump if Overflow Jump if Parity Even. Jump if Not Zero (Not Equal). Jump if Not Carry (Not Below, Above Equal). Jump if Not Sign. Jump if Not Overflow. Jump if Parity Odd (No Parity).
1
Kondisi ZF = 1 CF = 1 SF = 1 OF = 1 PF = 1 ZF = 0 CF = 0 SF = 0 OF = 0 PF = 0
Petunjuk praktikum mikroprosesor oleh Totok Budioko
Membandingkan Bilangan Bertanda Instruksi Deskripsi JE , JZ Jump if Equal (=). Jump if Zero. JNE , JNZ Jump if Not Equal (<>). Jump if Not Zero. JG , JNLE
Jump if Greater (>). Jump if Not Less or Equal (not <=)
JL , JNGE JGE , JNL
Jump if Less (<). Jump if Not Greater or Equal (not >=). Jump if Greater or Equal (>=). Jump if Not Less (not <).
JLE , JNG
Jump if Less or Equal (<=).Jump if Not Greater (not >).
Membandingkan bilangan tak bertanda Instruksi Deskripsi JE , JZ Jump if Equal (=). Jump if Zero. JNE , JNZ Jump if Not Equal (<>). Jump if Not Zero. JA , JNBE
Jump if Above (>). Jump if Not Below or Equal (not <=).
JB , JNAE, JC JAE , JNB, JNC
Jump if Below (<). Jump if Not Above or Equal (not >=). Jump if Carry. Jump if Above or Equal (>=). Jump if Not Below (not <). Jump if Not Carry.
JBE , JNA
Jump if Below or Equal (<=). Jump if Not Above (not >).
Kondisi ZF = 1 ZF = 0 ZF = 0 and SF = OF SF <> OF SF = OF ZF = 1 or SF <> OF Kondisi ZF = 1 ZF = 0 CF = 0 and ZF = 0 CF = 1 CF = 0 CF = 1 or ZF = 1
Sintaks: OP-CODE label Contoh: MOV AL,5 MOV BL,5 CMP AL,BL JE stop ADD BL stop:RET Secara umum jika akan membandingkan dua buah bilangan maka menggunakan instruksi CMP. Bahan dan ALat - Personal Komputer - Program EMU8086 Praktek A. Percabangan Tanpa Syarat 1. Jalankan EMU8086 2. Simulasikan program berikut.
2
Petunjuk praktikum mikroprosesor oleh Totok Budioko
ORG 100h MOV CX,20h JMP loncat MOV DX,OFFSET Info1 MOV AH,9h INT 21h JMP metu loncat: MOV DX,OFFSET Info2 MOV AH,9h INT 21h metu: RET Info1 DB "Tidak meloncat",0Dh,0Ah,'$' Info2 DB "Meloncat",0Dh,0Ah,'$' 3. Catat hasil simulasi program di atas. 4. Berilah titik koma (sebagai komentar) di depan instruksi JMP loncat. 5. Simulasikan kembali dan catat hasil simulasinya. B. Bersyarat Kelompok Pertama 1. Simulasikan program berikut ini. ORG 100h MOV AL,255 ADD AL,1 JC carry MOV DX,OFFSET Info1 MOV AH,9h INT 21h JMP metu carry: MOV DX,OFFSET Info2 MOV AH,9h INT 21h metu: RET Info1 DB "Tidak Terjadi Carry",0Dh,0Ah,'$' Info2 DB "Terjadi Carry",0Dh,0Ah,'$' 2. 3. 4. 5. 6. 7.
Catat hasil simulasi program di atas. Ubah MOV AL, 255 agar nilainya di bawah 255. Simulasikan dan catat hasil simulasinya. Ubah JC menjadi JNC. Simulasikan dan catat hasilnya. Sesuaikan informasinya agar menjadi program yang benar.
3
Petunjuk praktikum mikroprosesor oleh Totok Budioko
C. Bersyarat Kelompok Kedua 1. Simulasikan program berikut ini. ORG 100h MOV AL,6 MOV BL,-5 CMP AL,BL JNG kecil MOV DX,OFFSET Info1 MOV AH,9h INT 21h JMP metu kecil: MOV DX,OFFSET Info2 MOV AH,9h INT 21h metu: RET Info1 DB "AL > BL",0Dh,0Ah,'$' Info2 DB "AL < BL",0Dh,0Ah,'$' 2. Catat hasil simulasi program di atas. 3. Ubah nilai register AL dan BL dengan berbagai bilangan positif maupun negatif dan amatilah. 4. Ulangilah untuk instruksi JG, JE, JNE, JL, dan JNL dengan informasi yang disesuaikan. D. Bersyarat Kelompok Kedua 1. Simulasikan program berikut ini. ORG 100h MOV AL,50 MOV BL,30 CMP AL,BL JNA kecil MOV DX,OFFSET Info1 MOV AH,9h INT 21h JMP metu kecil: MOV DX,OFFSET Info2 MOV AH,9h INT 21h metu: RET Info1 DB "Nilai AL di atas BL",0Dh,0Ah,'$' Info2 DB "Nilai AL di bawah BL",0Dh,0Ah,'$' 4
Petunjuk praktikum mikroprosesor oleh Totok Budioko
2. Catat hasil simulasi program di atas. 3. Ubah nilai register AL dan BL dengan berbagai bilangan positif dan amatilah. 4. Ulangilah untuk instruksi JA, JB, dan JNB dengan informasi yang disesuaikan. Tugas Buat program dalam bahasa asembli 8088 untuk menyelesaikan persamaan berikut. Nilai A : lebih besar dari 90 Nilai B: antara 80 dan 90 Nilai C: antara 70 dan 80 Nilai D: antara 60 dan 70 Nilai E: di bawah 60
5