Stack Segment & Bahasa Assembly Triyogatama Wahyu Widodo
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? Krn tidak mungkin menjejalkan register sebanyak mungkin dan setiap program mempunyai teknik masing2 Utk menyimpan data secara temporer Aksesnya lebih lambat SS:SP dan SS:BP (untuk aplikasi khusus, terutama parameter passing pada C) PUSH/POP -> 16 bit register Arahnya: kode awalnya dr depan & increment, stack awalnya dr belakang & decrement Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Contoh Triyogatama Wahyu Widodo
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
Triyogatama Wahyu Widodo Serba-serbi Segmen Triyogatama Wahyu Widodo
Triyogatama Wahyu Widodo Serba-serbi Segmen Dimungkinkan 2 segmen untuk saling tindih (overlap) Triyogatama Wahyu Widodo
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
Triyogatama Wahyu Widodo Contoh Instruksi MOV Triyogatama Wahyu Widodo
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
Triyogatama Wahyu Widodo Contoh Instruksi ADD Triyogatama Wahyu Widodo
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
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