Mode Pengalamatan Mulyono
Mode Pengalamatan 80x86 Addressing Mode / Mode Pengalamatan : merupakan cara memberikan perintah transfer/pemindahan data dari lokasi satu ke lokasi lainnya. Lokasi pemindahan data dapat meliputi: register, alamat memori, maupun piranti I/O Mode Pengalamatan pada 80x86: (1) immediate (2) register (3) direct (4) indirect (5) based plus index (6) register relative (7) based relative index
Lokasi Pemindahan Data Lokasi memori Lokasi I/O Lokasi register MP ROM RAM I/O Interface BUS ALAMAT BUS DATA BUS KONTROL
I. Mode Pengalamatan Segera (Immediate Addressing) Immediate addressing merupakan mode pengalamatan yang digunakan untuk mengisi suatu register dengan data. Register yang dapat diisi data dengan mode pengalamatan segera: AX,BX,CX,DX,AL,AH,BL,BH,CL,CH,DL,DH, BP,SP,SI,DI Register segmen tidak dapat diisi dengan mode pengalamatan segera Alamat memori juga tidak dapat diisi secara immediate Bentuk: MOV AL,5 TUJUAN: REGISTER/ AKUMULATOR SUMBER: DATA
Untuk mempelajari mode pengalamatan dapat digunakan program DEBUG Untuk mempelajari mode pengalamatan dapat digunakan program DEBUG. Jalankan program DEBUG, kemudian berikan perintah A untuk menulis program assembly. Tulis program assembly seperti berikut ini! MOV AL,16 MOV BL,23 MOV CX,1A2A MOV DX,5679 Setelah program ditulis, coba jalankan ke-4 instruksi tersebut dengan memberi perintah trace dengan mengetik T diikuti ENTER sebanyak 4 kali! Jika tugas di atas dilakukan dengan benar, maka hasilnya adalah:
Terlihat bahwa isi register AL=16, BL=23, CX=1A2A dan register DX=5679.
Selanjutnya, lihat isi memori dengan perintah D, akan terlihat: Dari gambar di atas, terlihat kode: B0 16 B3 23 B9 2A 1A BA 79 56, hal itu menunjukkan kode-kode keempat instruksi di atas dalam format heksadesimal. Dalam hal ini: MOV AL,16 memiliki kode heksadesimal B0 16 menempati alamat memori 0100 dan 0101, sedangkan B3 23 adalah kode heksadesimal untuk instruksi MOV BL,23 dan menempati alamat memori 0102 dan 0103 dan seterusnya.
II. Mode Pengalamatan Register (Register Addressing) Register addressing adalah mode pengalamatan yang digunakan untuk mentransfer data (byte/word) dari register sumber ke register tujuan. Bentuk: MOV AL,BL TUJUAN: REGISTER SUMBER: REGISTER
Contoh Mode Pengalamatan Register: MOV AL, BL apa artinya? MOV AX, CX apa artinya? MOV CS, AX apa artinya? MOV CS, DS tidak diijinkan karena segment to segment MOV BL, BX Tidak dijinkan karena berbeda ukuran (mixed size)
Contoh Mode Pengalamatan Register: Susun perintah untuk mengisi register segmen DS dengan data 1234 heksadesimal! Jawab: MOV AX,1234 immediate addressing MOV DS,AX register addressing
III. Mode Pengalamatan Langsung (Direct Addressing) Direct addressing merupakan mode pengalamatan untuk mentransfer data antar memori dan register Bentuk : MOV AL,[0120] TUJUAN: REGISTER SUMBER: ALAMAT RELATIF MEMORI
Tak Langsung (Indirect Addressing) IV. Mode Pengalamatan Tak Langsung (Indirect Addressing) Merupakan mode pengalamatan untuk mentransfer DATA/byte/word antar register dan lokasi yang alamatnya ditunjukkan oleh isi suatu register. Contoh MOV [BX], AX Pindahkan isi register AX ke dalam alamat memori yang ditunjukkan oleh isi register BX
Contoh permasalahan Susunlah intruksi ke dalam bahasa assembly untuk memindahkan data A1B2 yang ada di register AX ke alamat fisik memori 20300 heksadesimal menggunakan mode pengalamatan register indirect, anggap segment yang digunakan adalah DS = 2000 dan alamat relatif yang menunjukkan alamat memory disimpan di register BX Jawab: DS : IP = 20300 alamat fisik DS = 20000 alamat awal DS IP = 0300 Intruksi yang digunakan MOV AX, 2000 MOV DS, AX MOV BX, 0300 MOV AX, A1B2 MOV [BX], AX
V. Base Plus Index Addressing Yaitu mode pengalamatan yang digunakan untuk mentransfer byte/word antar register dan memori yang alamatnya ditunjukkan oleh jumlah register base dan index. Bentuk1: MOV [BX + SI], AX Bentuk2: MOV AX,[BX+SI]
VI. Register Relative Addressing Yaitu mode pengalamatan untuk tranfer byte/word antar register dan memori yang alamatnya ditunjukkan oleh isi suatu register dan jaraknya (displacement) Contoh MOV [BX + 4], AX
Contoh permasalahan Susun intruksi dalam bahasa assembly untuk memindahkan data A1B2 dari akumulator AX ke alamat memori 20304 H dengan menggunakan register relative addressing , anggap segmen yang digunakan DS : 2000 dan dan displacement 4 DS : IP = 20304 DS = 20000 IP = 0304 Intruksi yang digunakan MOV AX,2000 MOV DS, AX MOV BX,0300 MOV AX,A1B2 MOV [BX + 4], AX
VII. Base Relative Plus Index Addressing Merupakan mode pengalamatan yang digunakan untuk mentransfer byte/word antar register dan memori yang alamatnya ditunjukkan oleh suatu register base dan register index ditambah displacement nya Contoh : MOV AX, [BX + DI + 4]
Offset Register untuk berbagai Segment SS ES DS CS Segment Register SP,BP SI, DI, BX IP Offset Register