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