Upload
buihuong
View
224
Download
0
Embed Size (px)
Citation preview
Sekilas Tentang MOV
n Intruksi MOV diperkenalkan bersama-sama dengan instruksi bahasa mesinyang dapat digunakan dalam bermacam-macam mode pengalamatan daninstruksi.¡ Bahasa mesin adalah kode biner asli (native)
yang dapat dimengerti oleh mikroprosesordan dugunakan sebagai instruksi-instruksikontrol dalam operasinya.
n Lihat format instruksi pada gambar 4.1
Sekilas Tentang MOV(lanjt.)
n Opcode¡ Opcode memilih operasi (penambahan,
pengurangan, pemindahan dll) yang dilakukan olehmikroprosesor.
¡ Panjang opcode adalah satu atu dua byte untukkebanyakan instruksi dalam bahasa mesin (Gambar4.2)n 6-bit pertama dari byte pertama adalah binary op-
coden 2-bit sisanya menandakan direction (D) dari aliran
data dan indikasi apakah data adalah byte atauword (W)
Sekilas Tentang MOV(lanjt.)
¡ Dengan memperhatikan Gambar 4.3 untuk pola bit biner dari byte opcode kedua (reg-mod-r/m)
n Field MOD ¡ Field MOD secara khusus digunakan dalam mode
pengalamatan (MOD) untuk instruksi yang dipilihdan memilih tipe pengalamatan dan apakahdisplacement hadir dengan tipe yang dipilih (Tabel4.1)
¡ Instruksi MOV AL, [DI], MOV AL, [DI+2] and MOV Al, [DI+1000H]!
Sekilas Tentang MOV(lanjt.)
n Tugas-tugas Register¡ Tabel 4.3 berisi tugas-tugas register untuk field
REG dan field R/M (MOD=11)¡ Lihat Gambar 4.4
n 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 atauinstruksi (8A15H)
Sekilas Tentang MOV(lanjt.)
n Mode Pengalamatan Khusus¡ Hal ini terjadi ketika data memori
direfensikan hanya dengan mode displacement dari pengalamatan untukinstruksi 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.)
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) terutamadigunakan ketika dua register ditambahkan ke dalam alamat memoridalam suatu instruksi (GAMBAR 4.8)
Sekilas Tentang MOV(lanjt.)
n Instruksi Segera¡ Diasumsikan bahwa instruksi MOV WORD PTR
[BX +1000H], 1234H, instruksi inimemindahkan 1234H ke lokasi memoriberukuran-word yang dialamatkan olehpenjumlahan dari 1000H, BX, dan DS x 10H
¡ Instruksi 6-byte menggunakan 2-byte untukfield opcode, W, MOD, dan R/M, 2 dari 6-byte adalah data 1234H, dan 2 dari 6-byte adalahdisplacement dari 1000H (lihat gambar 4.9)
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 berbedadibanding dengan instruksi MOV sebelumnya
¡ Segmen alamat dapat dipindah antara setiap register 16-bit alamat atau lokasi memori 16-bit.
PUSH/POPn Instruksi ini sangat penting karena kedua instruksi ini
berfungsi untuk menyimpan dan mengambil (ataumembuka) data dari memori stack LIFOn Mikroprosesor memiliki enam bentuk instruksi
PUSH dan POP yaitu : register, memory, immediate, segment register, flags, dan semuaregister.
n 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 register-register 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 instruksiPUSH 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.)
¡ Tabel 4.7 berisi instruksi PUSH termasuk PUSHA dan PUSHF
n POP¡ Intruksi POP adalah kebalikan dari instruksi PUSH,
contohnya menghapus data dari stack danmenempatkannya pada register 16-bit register segmen atau lokasi memori 16-bit.
¡ POPF (pop flags) menghapus bilangan 16-bit daristack dan menempatkannya pada register flag
¡ POPFD menghapus bilangan 32-bit dari stack danmenempatkannya pada register flag 32-bit extended.
PUSH/POP (lanjt.)
¡ POPA (pop all) menghapus 16-bit dari stack danditempatkan pada register berikutnya, dalam urutanyang diperlihatkan sebagai berikut : DI, SI, BP, SP, BX, DX, CX, dan AX; ini merupakan urutan kebalikan daricara ditempatkan ke dalam stack pada instruksiPUSHA
¡ Gambar 4.13 menunjukkan bagaimana instruksi POP BX menghapus data dari stack dan menempatkannyapada register BX
¡ Tabel 4.8 memperlihatkan semua variasi opcode yang digunakan untuk instruksi POP
PUSH/POP (lanjt.)
n Inisialisasi Stack¡ Ketika area stack diinisialisasi, stack memuat
register SS dan SP; register SS biasanya dirancangdengan lokasi segmen stack yang bawah
¡ Gambar 4.14 memperlihatkan bagaimana nilai inimengakibatkan data dimasukkan ke bagian atassegmen stack dengan instruksi PUSH CX