Mode pengalamatan di mikroprosesor 8086
Daftar Isi Artikel
Addressing mode(mode pengelamatan) merupakan salah satu cara untuk menggunakan dan memakai alamat memori pada suatu mikroprosesor, dimana ketika kita akan menggunakan atau memakai memori ini menggunakan syntax operand : opcode.
sistem pengalamatan pada mikroprosesor 8086 dibagi menjadi 2 kategori :
- Data Addressing Mode Mode pengalamatan untuk data ( digunakan untuk mengakses data dari/ke source dan destination)
- Branch Addressing Mode Mode pengalamatan untuk percabangan
Akses Mode pengalamatan pada memori 8086 sangat fleksibel sekali karena kita bisa mengakses variabel, array, pointer serta tipe-tipe data lainya secara mudah.dan untuk mengakses data-data tersebut kita harus memahami bahasa assembly.
Ketika kita mau mengakses atau mengambil data pada memori di mikroprosesor 8086 syntaaxnya seperti dibawah ini :
Opcode : Operand
Perlu diingat juga bahwa operand ini terdiri dari dua komponen :
Hal penting lainya :
- Alamat awal dari segment memori
- Offset ( Kombinasi dari displacement, base , dan index):
- Displacement : instruksi 8 bit atau 16 bit
- Base : berisi register , BX atau BP
- Index :berisi register SI or DI
Mode pengalaman data ( Data Addressing Mode)
1.Mode pengalamatan langsung ( Immediate Addressing Mode)
merupakan salah satu mode pengalamatan secara langsung maksudnya data nilai pada operand dimasukan secara langsung ke dalam instruksi mesinnya.data disini bisa( angka, karakter, expresi aritmatika) serta bisa 8 bit atau 16 bit.
Contoh :
- MOV AL, 02h ; immediate 8 bit bilangan heksa
- MOV AH, 10 ; immediate bilangan desimal
- MOV AL, ‘W’ ; immediate nilai karakter
- MOV AL,(1+2)*2 ; immediate nilai dari expresi tersebut
- MOV CX, 1234h ; immediate nilai 16 bit bilangan heksa
2.Direct Memory Addresing Mode :
pada mode ini data 16 bit sudah termasuk data dan jenis instruksinya.jadi isi dari alamat memory biasanya berupa suatu variabel
Contoh :
- Mov AL, count ; count adalah sebuah variabel di data segment
- JMP NEXT ; NEXT merupakan salah satu label yang ada di code segment
- MOV AL, DS:5 ; Fix atau alamatnya tidak dipindahkan ( segment:offset)
- MOV AX, ES:count ; extra segment dan variabel di ES
3.Register addressing Mode :
digunakan untuk transfer antar register.Source dan destination harus mempunyai size yang sama
- MOV AL, BL
- MOV BX, DX
- MOV AL, BH
- MOV AL,BX
4.Register Indirect :
mode pengalamatan pada register SI, BX, DI
contoh:
ada empat bentuk mode pengalamatan yang mempunyai instruksi seperti dibawah ini :
- MOV AL,[bx]
- MOV AL,[bp]
- MOV AL,[si]
- MOV AL,[di]
contoh diatas adalah salah satu contoh bagaimana cara memindahkan data dalam bentuk array ke register.
data array diatas bisa saja seperti statement seperti : MOV BX, Offset ARRAY:
- MOV SI , offset X
- MOV DI , offset Y
- MOV AL, [SI]
- MOV [DI] , AL
5.Register Relative Addressing Mode:
pada mode ini data bisa di dihitung dengan menambah nilai pada base atau register index 8 bit atau 16 bit
effective address(EA) = isi dari [ (BX) atau (BP), atau (SI), atau (DI)] + 8 bit sign extende / 16 bit displacement.untuk lebih detilnya bisa lihat contoh dibawah ini
- MOV AL, disp[BX]
- MOV AL, disp[BP]
- MOV AL, disp[SI]
- MOV AL, disp[DI]
contoh :
- MOV AL, 2[BX] atau MOV AL, [BX+2]
- MOV AL, num1[BX] atau MOV AL, [BX+num1]
- kita juga bisa menggunakan register BP dengan instruksi MOV AL, [BP+disp]
6 Base indexed Addressing mode :
EA berisi perhitungan base register dan index register
EA ={[BX] atau [BP]} + {[SI] atau [DI]}
contoh :
- MOV AL,[BX][SI]
- MOV AL, [BP][SI]
- MOV AX, [SI+DI]
7.Relative based indexed Addressing Mode :
didalam suatu alamat memory terjadi perhitungan yang berisi base register, index register dan 8/16 bit displacement
Contoh
- MOV AL, disp[BX][SI]
- MOV AL, disp[BX+DI]
- MOV AL, [BP+DI+disp]
- MOV AL, [BP[DI][disp]
- ADD DL,[BX+SI+3]
Branch Addressing Mode
yaitu jenis pengalamatan di dalam segment yang sama atau pengalamatan di dalam segmen yang berbeda.berdasarkan jenis mode pengalamatan ini dibagi menjadi dua kategori yaitu intrasegment dan intersegment dengan pengalamatan langsung maupun pengalamatan tidak langsung.
Intrasegment Direct Addressing Mode:
alamat yang aktif ( EA) adalah penjumlahan dari IP dan 8/16 bit displacement.pengalamatan ini bisa digunakan ketika kita menggunakan short jump atau kondisi bersyarat.
Intrasegment indirect address :
mode pengalamatan register atau alamat memori bisa mengakses berbagai jenis data dalam berbagai jenis mode pengalamatan kecuali yang mode immediate dan implied.
Intersegment direct addressing Mode:
mode pengalamatan ini digunakan untuk merubah isi dari CS dan IP dengan Instruksi dari segment dan offset.digunakan untuk percabangan dari satu segmen ke segment lainya.
Intersegment indirect addressing mode
mode pengalamatan ini merubah isi dari CS dan IP dengan alamat yang diberikan oleh register atau memori.