Instruksi-Instruksi Pemindahan Data Sistem Komputer Universitas Gunadarma
Sekilas Tentang MOV n
Intruksi MOV diperkenalkan bersamasama dengan instruksi bahasa mesin yang dapat digunakan dalam bermacammacam mode pengalamatan dan instruksi. ¡
n
Bahasa mesin adalah kode biner asli (native) yang dapat dimengerti oleh mikroprosesor dan dugunakan sebagai instruksi-instruksi kontrol dalam operasinya.
Lihat format instruksi pada gambar 4.1
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Opcode ¡ Opcode memilih operasi (penambahan, pengurangan, pemindahan dll) yang dilakukan oleh mikroprosesor. ¡ Panjang opcode adalah satu atu dua byte untuk kebanyakan instruksi dalam bahasa mesin (Gambar 4.2) n 6-bit pertama dari byte pertama adalah binary opcode n 2-bit sisanya menandakan direction (D) dari aliran data dan indikasi apakah data adalah byte atau word (W)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) Dengan memperhatikan Gambar 4.3 untuk pola bit biner dari byte opcode kedua (reg-mod-r/m) Field MOD ¡ Field MOD secara khusus digunakan dalam mode pengalamatan (MOD) untuk instruksi yang dipilih dan memilih tipe pengalamatan dan apakah displacement hadir dengan tipe yang dipilih (Tabel 4.1) ¡ Instruksi MOV AL, [DI], MOV AL, [DI+2] and MOV Al, [DI+1000H]! ¡
n
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Tugas-tugas Register ¡
¡
n
Tabel 4.3 berisi tugas-tugas register untuk field REG dan field R/M (MOD=11) Lihat Gambar 4.4
Pengalamatan Memori R/M ¡
¡
Apabila field MOD berisi 00, 01, atau 10, field R/M akan mempunyai arti yang baru (Tabel 4.4) Gambar 4.5 mengilustrasikan versi bahasa mesin dari instruksi 16-bit MOV DL,DI atau instruksi (8A15H)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Mode Pengalamatan Khusus ¡ Hal ini terjadi ketika data memori direfensikan hanya dengan mode displacement dari pengalamatan untuk instruksi 16-bit à MOV [1000H],DL ¡ Ketika instruksi hanya mempunyai 1 displacement, maka field MOD selalu 00 dan field R/M selalu 110 (lihat Gambar 4.6, 4.7)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Mode Pengalamatan 32-bit ¡ Tabel 4.5 memperlihatkan pengkodean untuk R/M digunakan untuk mode pengalamatan 32-bit secara khusus. ¡
Byte indeks berskala (R/M=100) terutama digunakan ketika dua register ditambahkan ke dalam alamat memori dalam suatu instruksi (GAMBAR 4.8)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Instruksi Segera ¡
¡
Diasumsikan bahwa instruksi MOV WORD PTR [BX +1000H], 1234H, instruksi ini memindahkan 1234H ke lokasi memori berukuran-word yang dialamatkan oleh penjumlahan dari 1000H, BX, dan DS x 10H Instruksi 6-byte menggunakan 2-byte untuk field opcode, W, MOD, dan R/M, 2 dari 6-byte adalah data 1234H, dan 2 dari 6-byte adalah displacement dari 1000H (lihat gambar 4.9)
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.) n
Instruksi MOV segmen ¡ Bila isi register segmen dipindahkan oleh instruksi MOV, PUSH, atau POP, maka sekumpulan bit register yang khusus (field REG) memilih register segmen (lihat tabel 4.6) ¡ Gambar 4.10 menunjukkan sebuah instruksi MOV BX,CS yang diubah menjadi biner ¡ Opcode untuk setiap tipe instruksi MOV berbeda dibanding dengan instruksi MOV sebelumnya ¡ Segmen alamat dapat dipindah antara setiap register 16-bit alamat atau lokasi memori 16-bit.
Sekilas Tentang MOV(lanjt.)
Sekilas Tentang MOV(lanjt.)
PUSH/POP n
n
Instruksi ini sangat penting karena kedua instruksi ini berfungsi untuk menyimpan dan mengambil (atau membuka) data dari memori stack LIFO n Mikroprosesor memiliki enam bentuk instruksi PUSH dan POP yaitu : register, memory, immediate, segment register, flags, dan semua register. PUSH ¡ Memindahkan 2 byte dari data ke stack ¡ Instruksi PUSHA yang menyalin isi dari kumpulan regiater internal kecuali register segmen ke stack.
PUSH/POP (lanjt.) ¡
¡
¡
¡
Instruksi PUSHA (push all) menyalin isi registerregister ke stack dengan urutan sebagai berikut : AX, BX, CX, DX, BX, SP, BP, SI, dan DI Instruksi PUSHF (push flags) menyalin isi register flag ke dalam stack Gambar 4.11 memperlihatkan operasi dari instruksi PUSH AX n AX --> SS:[SP-1] = AH, SS:[SP-2] = AL, dan kemudian SP = SP - 2 Gambar 4.12 menggambarkan hasil dari instruksi PUSHA
PUSH/POP(lanjt.)
PUSH/POP(lanjt.)
PUSH/POP (lanjt.) Tabel 4.7 berisi instruksi PUSH termasuk PUSHA dan PUSHF POP ¡ Intruksi POP adalah kebalikan dari instruksi PUSH, contohnya menghapus data dari stack dan menempatkannya pada register 16-bit register segmen atau lokasi memori 16-bit. ¡ POPF (pop flags) menghapus bilangan 16-bit dari stack dan menempatkannya pada register flag ¡ POPFD menghapus bilangan 32-bit dari stack dan menempatkannya pada register flag 32-bit extended. ¡
n
PUSH/POP(lanjt.)
PUSH/POP (lanjt.) ¡
¡
¡
POPA (pop all) menghapus 16-bit dari stack dan ditempatkan pada register berikutnya, dalam urutan yang diperlihatkan sebagai berikut : DI, SI, BP, SP, BX, DX, CX, dan AX; ini merupakan urutan kebalikan dari cara ditempatkan ke dalam stack pada instruksi PUSHA Gambar 4.13 menunjukkan bagaimana instruksi POP BX menghapus data dari stack dan menempatkannya pada register BX Tabel 4.8 memperlihatkan semua variasi opcode yang digunakan untuk instruksi POP
PUSH/POP(lanjt.)
PUSH/POP(lanjt.)
PUSH/POP (lanjt.) n
Inisialisasi Stack ¡
¡
Ketika area stack diinisialisasi, stack memuat register SS dan SP; register SS biasanya dirancang dengan lokasi segmen stack yang bawah Gambar 4.14 memperlihatkan bagaimana nilai ini mengakibatkan data dimasukkan ke bagian atas segmen stack dengan instruksi PUSH CX
PUSH/POP(lanjt.)