download

Matakuliah
Tahun
Versi
: T0483 / Bahasa rakitan
: 2005
: 1.0
Pertemuan 8
Instruksi Bahasa Rakitan 8088
1
Learning Outcomes
Pada akhir pertemuan ini, diharapkan mahasiswa
akan mampu :
• menghasilkan program yang
menggunakan instruksi string dan kontrol
alur program
2
Outline Materi
• Instruksi String
• Instruksi Kontrol Alur Program
3
<<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
4
<<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.
5
<<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
movsb
movsb
Movsb
• Cara diatas tidak efektif (boros baris), tetapi dengan
menggabungkan instruksi REP dengan instruksi MOVSB
maka akan lebih efektif. Contoh :
mov cx, 05
cld
rep movsb
6
<<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
7
<<ISI>>
• Instruksi kontrol alur program
– 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 operandnya
– Format : jmp <operand>
– Operand <operand> sbb:
•
•
•
•
•
•
Short-label
Near-label
Far-label
MemPtr16
RegPtr16
MemPtr16
8
<<ISI>>
• J??
– J?? merupakan
instruksi loncatan
bersyarat, dimana
syarat yang harus
dipenuhi terdapat
pada flag register
(dilambangkan ??),
dan tujuan loncatan
diambil dari operandnya
Format :
9
<<ISI>>
Tanda perbandingan
• ! (Not)
• = (Equal)
• > (Grater than)
• < (Less than)
• Ekivalen suatu tanda
perbandingan adalah sisa
tanda dari set tanda
tersebut.
Misal :
Format jump untuk perbandingan nilai :
• Ekivalen > adalah ! < =
• Ekivalen < = adalah ! >
10
<<ISI>>
• LOOP
– 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
11
<< CLOSING>>
• Tugas
– Buat program untuk mencetak angka 0 s/d 9
dilayar monitor dengan menggunakan
instruksi loop
12