Pertemuan 8 Instruksi Bahasa Rakitan 8088 Matakuliah : T0483 / Bahasa rakitan Tahun : 2005 Versi : 1.0 Pertemuan 8 Instruksi Bahasa Rakitan 8088
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : menghasilkan program yang menggunakan instruksi string dan kontrol alur program
Instruksi Kontrol Alur Program Outline Materi Instruksi String Instruksi Kontrol Alur Program
Instruksi String Instruksi : movs <<ISI>> Instruksi String Instruksi : movs Tipe data byte : movsb Tipe data word : movsw MOVS (Move String) akan melakukan pemindahan data demi data dari memori yang ditunjuk oleh pasangan register DS:[SI] ke memori tujuan yang ditunjuk oleh pasangan register ES:[DI] Format : movs
<<ISI>> Tipe data : Penambahan nilai index (SI/DI) tergantung dari operasi CLD (+) atau STD (-) sebelum melakukan pemindahan. Sehingga dapat dikatakan CLD akan melakukuan pemindahan data dari kiri ke kanan, sedangkan STD sebaliknya.
<<ISI>> REP REP digunakan secara bersamaan dengan instruksi string, bila pekerjaan yang akan dilakukan lebih dari satu kali. Sebagai contoh bila ada 5 buah data yang akan dipindahkan, maka dengan cara biasa adalah : cld movsb Movsb Cara diatas tidak efektif (boros baris), tetapi dengan menggabungkan instruksi REP dengan instruksi MOVSB maka akan lebih efektif. Contoh : mov cx, 05 rep movsb
Instruksi Perbandingan Nilai CMP <<ISI>> Instruksi Perbandingan Nilai CMP CMP digunakan untuk membandingkan 2 (dua) operand, dimana operasi yang dilakukan adalah pengurangan, tetapi tidak mempengaruhi ke dua operandnya. Hasil perbandingannya dapat dilihat pada register bendera dan biasanya di ikuti oleh instruksi conditional jump Format : CMP D, S
<<ISI>> Instruksi kontrol alur program JMP Unconditional jump : jmp Conditional jump : j?? Looping : loop JMP JMP merupakan instruksi loncatan, dimana proses saat itu akan langsung berpindah ke alamat yang ditunjukkan oleh operand-nya Format : jmp <operand> Operand <operand> sbb: Short-label Near-label Far-label MemPtr16 RegPtr16
<<ISI>> J?? J?? merupakan instruksi loncatan bersyarat, dimana syarat yang harus dipenuhi terdapat pada flag register (dilambangkan ??), dan tujuan loncatan diambil dari operand-nya Format :
<<ISI>> Tanda perbandingan ! (Not) = (Equal) > (Grater than) < (Less than) Ekivalen suatu tanda perbandingan adalah sisa tanda dari set tanda tersebut. Misal : Ekivalen > adalah ! < = Ekivalen < = adalah ! > Format jump untuk perbandingan nilai :
LOOP <<ISI>> Loop merupakan instruksi perulangan yang sama dengan REP, hanya saja perulangan yang dapat dilakukan sampai dengan beberapa instruksi (REP hanya 1 instruksi) Format : loop <operand> Operand => Short-label Operasi : looping selama CX > 0
<< CLOSING>> Tugas Buat program untuk mencetak angka 0 s/d 9 dilayar monitor dengan menggunakan instruksi loop