laporan bulanan bank umum syariah (lbus)

advertisement
MODE PENGALAMATAN PROGRAM
MEMORI
Mode pengalamatan program memori
menggunakan instruksi JMP dan CALL, terdiri
dari tiga bentuk yang berbeda: langsung,
relatif, dan tak langsung.
Bagian ini mengenal tiga bentuk pengalamatan
diatas dengan menggunakan instruksi JMP
untuk mengilustrasikan operasinya.
NEXT
Pengalamatan Program Memori Langsung
Pengalamatan program memori langsung adalah pengalamatan
yang digunakan mikroprosesor pertama untuk semua lompatan
(jump) dan panggilan (call). Pengalamatan program memori
langsung juga digunakan dalam bahasa tingkat tinggi seperti
bahasa BASIC dengan instruksi GOTO dan GOSUB.
Mikroprosesor menggunakan bentuk pengalamatan ini, tetapi
tidak sesering penggunaan pengalamatan program memori
relatif dan tidak langsung.
NEXT
Opcode
EA
Offset (rendah) Offset (tinggi) Segmen (rendah) Segmen (tinggi)
00
00
00
10
Bahasa mesin sepanjang 5 byte dari instruksi JMP (10000H)
NEXT
Pengalamatan Program Memori Relatif
Pengalamatan program memori relatif tidak terdapat dalam mikroprosesor awal,
melainkan pada keluarga mikroprosesor ini. Istilah relatif berarti ”relatif terhadap
pointer instruksi (IP)”. Sebagai contoh, jika instruksi JMP melompati memori dua
byte berikutnya, alamat yang berhubungan dengan pointer instruksi adalah 2
ditambah pointer instruksi. Hasil penjumlahan tersebut menghasilkan alamat
instruksi program selanjutnya. Sebuah contoh instruksi JMP relatif ditunjukkan
pada gambar 3-15. perhatikan bahwa instruksi JMP adalah instruksi satu byte,
dengan displacement satu byte atau dua byte yang menambah pointer instruksi.
Displacement satu byte digunakan pada short jump, dan displacement dua byte
digunakan untuk near jump dan call. Kedua jenis lompatan tersebut termasuk
lompatan intrasegmen. (lompatan intrasegmen adalah lompatan disetiap tempat
dalam suatu segmen kode). Pada 80386 ke atas, displacement dapat memunyai nilai
32-bit, sehingga mampu menggunakan pengalamatan relatif di setiap lokasi dalam
4G byte segmen kodenya.
NEXT
Pengalamatan Program Memori Tak Langsung
Mikroprosesor mengizinkan beberapa bentuk pengalamatan
program memori tak langsung dengan instruksi JMP dan CALL.
Tabel 3-10 merupakan daftar beberapa instruksi lompatan program
tak langsung yang diizinkan, yang dapat menggunakan register 16bit (AX, BX, CX, DX, SP, BP, DI, atau SI); register relatif ([BP],
[BX], [DI], atau [SI]); dan register setiap relatif dengan suatu
displacement. Pada 80386 ke atas, extended register juga dapat
digunakan untuk menyimpan alamat atau alamat tak langsung dari
JMP atau CALL relatif. Sebagai contoh, JMP EAX akan
menyebabkan program melompat ke lokasi memori yang dialamati
register EAX.
NEXT
GAMBAR 3-15 Instruksi JMP
[2]. Instruksi ini melompati 2
byte memori yang mengikuti
instruksi JMP.
10000
10001
10002
10003
10004
EB
02
—
—
JMP [2]
NEXT
TABEL 3-10 Contoh pengalamatan program memori tak langsung.
Bahasa Assembly
JMP AX
JMP CX
JMP NEAR PTR [BX]
JMP NEAR PTR [DI+ 2]
JMP TABLE [BX]
JMP ECX
Operasi
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi AX
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi CX
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi lokasi memori
segmen data yang dialamati oleh BX
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi lokasi memori
segmen data yang dialamati oleh DI ditambah 2
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi lokasi memori
segmen data yang dialamati oleh TABLE ditambah BX
Melompat ke lokasi segmen kode saat itu yang dialamati oleh isi ECX
GAMBAR 3-16
Tabel lompatan yang
menyimpan alamat berbagai program.
Alamat sebenarnya yang dipilih dari
TABLE ditentukan oleh indeks yang
tersimpan dalam instruksi lompatan.
TABLE
DW
DW
DW
DW
LOC1
LOC2
LOC3
LOC0
NEXT
NEXT
TABEL 3-11 Contoh pengalamatan program memori tak langsung.
Bahasa Assembly
Operasi
POPF
POPFD
Memindahkan word dari stack dan menempatkannya ke dalam flag
Memindahkan doubleword dari stack dan menempatkannya ke dalam register
EFLAG
Menyalin flag ke dalam stack
Menyalin register EFLAG ke dalam stack
Menyalin AX ke dalam stack
Memindahkan word dari stack dan menempatkannya ke dalam BX
Menyalin DS ke dalam stack
Menyalin 1234H ke dalam stack
Instruksi illegal
Menyalin word dari lokasi memori segmen data yang dialamati BX ke dalam
stack
Menyalin isi word dari AX, CX, DX, BX, SP, BP, DI, dan SI ke dalam stack
Memindahkan data dari stack dan menempatkannya ke dalam SI, DI, BP, SP,
BX, DX, CX, dan AX
Menyalin isi doubleword dari EAX, ECX, EDX, EBX, ESP, EBP, EDI, dan ESI
ke dalam stack
Memindahkan data dari stack dan menempatkannya ke dalam ESI, EDI, EBP,
ESP, EBX, EDX, ECX, dan EAX
Memindahkan data dari stack dan menempatkannya dalam EAX
Menyalin EDI ke dalam stack
PUSHF
PUSHFD
PUSH AX
POP BX
PUSH DS
PUSH 1234H
POP CS
PUSH WORD PTR[BX]
PUSHA
POPA
PUSHAD
POPAD
POPEAX
PUSH EDI
NEXT
Soal
1. Buatlah contoh tabel pengalamatan program
memori tak langsung dan contoh pengalamatan
program memori tak langsung!
2. Jelaskan dan gambarkan instruksi PUSH dan POP
dimana PUSH BX menempatkan isi BX ke dalam
stack dan POP CX memindahkan data dari stack
dan menempatkannya ke dalam CX!
NEXT
TUTUP
Terima Kasih
Download