Pengenalan Bahasa Assembly

advertisement
Stack Segment & Bahasa
Assembly
Triyogatama Wahyu Widodo
Mengenai Segmen Stack
•
•
•
•
•
•
Mengapa diperlukan?
Apa gunanya stack?
Apa kekurangannya?
Bagaimana mengakses stack?
Operasi apa yang dapat dilakukan pada stack?
Apa beda segmen kode dengan segmen stack?
Triyogatama Wahyu Widodo
Contoh
Triyogatama Wahyu Widodo
Serba-serbi Segmen
• Satu alamat fisik dapat diperoleh dari
beberapa alamat logik
• Alamat logik berputar kembali ke awal (wrap
around) jika lebih dari alamat fisiknya
Triyogatama Wahyu Widodo
Serba-serbi Segmen
Triyogatama Wahyu Widodo
Serba-serbi Segmen
• Dimungkinkan 2 segmen untuk saling tindih
(overlap)
Triyogatama Wahyu Widodo
Bahasa Assembly
• Bahasa mesin: 0 dan 1
– Rumit: 010101010100011111 ?????
– Banyak salah
• Bahasa assembly: mnemonic, singkatan
(umumnya 3 karakter)
– Lebih mudah dipahami
– Mengurangi kesalahan
– Mnemonic  machine language: assembler
Triyogatama Wahyu Widodo
Program dalam Bahasa Assembly
• Terdiri dari baris-baris instruksi bahasa
Assembly
• Instruksi bahasa Assembly terdiri dari
mnemonic diikuti dengan nol, satu atau dua
operan
• Operan adalah data yang diolah/dimanipulasi
• Mnemonic adalah perintah kepada CPU untuk
melakukan sesuatu pada operan
Triyogatama Wahyu Widodo
Struktur Bahasa Assembly
INSTRUKSI/MNEMONIC [OPERAN1[, OPERAND2]]
Opsional
Triyogatama Wahyu Widodo
Instruksi MOV(E) dan ADD
MOV destination, source
ADD destination, source
Triyogatama Wahyu Widodo
Contoh Instruksi MOV
Triyogatama Wahyu Widodo
Fakta Instruksi MOV
• Menyalin, bukan memindah
• Dua operan harus sama
ukurannya, 8 bit semua atau
16 bit semua
• Flag register tidak bisa
menjadi operan
• Tidak boleh menyalin data
secara langsung ke segment
register (CS, DS, ES, SS) 
melalui nonsegment
register
• Tidak dapat menyalin data
dengan ukuran yang lebih
besar
Triyogatama Wahyu Widodo
Contoh Instruksi ADD
Triyogatama Wahyu Widodo
Fakta Instruksi ADD
• Dua operan harus sama ukurannya, 8 bit
semua atau 16 bit semua
• Menjumlahkan dengan hasil penjumlahan
menimpa data pada operan tujuan
• Hanya dapat dilakukan pada nonsegment
register
Triyogatama Wahyu Widodo
Pengalamatan
•
•
•
•
•
•
•
Register: MOV AX, BX
Immediate: MOV AX, 1000H
Direct: MOV AX, [0200] (DS:0200)
Register indirect: MOV AX, [SI] (DS:SI, DS:DI, DS:BX)
Based relative: MOV AX, [BX]+10 (DS:BX, SS:BP)
Indexed relative: MOV AX, [SI]+1 (DS:SI, DS:DI)
Based indexed relative: MOV AX, [BX][DI]+3
(DS:BX+SI/DI, SS:BP+SI/DI)
• Segment override: MOV AL, ES:[BX]
Triyogatama Wahyu Widodo
Download