Pengalamatan data (addressing mode) dapat dipahami sebagai perpindahan data dari lokasi asal ke lokasi tujuan. Lokasi asal dapat berupa register, daerah memori atau data mentah (pada immediate addressing) sedangkan lokasi tujuan dapat berupa register atau daerah memori saja. Perpindahan disini mengandung penyalinan karena isi lokasi asal tidak berubah, yang berubah adalah isi lokasi tujuan. Pada pengalamatan data ini, instruksi pengalamatan data akan membuat salinan (copy) isi lokasi asal, dan kemudian memindahkannya ke lokasi tujuan. Pengalamatan data ini dilakukan dengan memanfaatkan instruksi MOV.
Ada beberapa mode pengalamatan data untuk mikroposesor keluarga Intel
1. Register Addressing
Register Addressing merupakan penyalinan data antarregister, yaitu dari suatu register asal ke register tujuan.
Sintaks: MOV reg1, reg2
Contoh:
MOV AX, BX ;Menyalin isi register BX ke AX
MOV BL, DH ;Menyalin isi register DH ke BI
MOV SI, DI ;Menyalin isi register SI ke DI
Ada 3 pengecualian dalam Register Addressing.
1) Perpindahan data antar register segmen.
Contoh:
MOV ES, DS ;Menyalin isi register DS ke register ES
MOV SS, CS ;Menyalin isi register CS ke register SS
2) Perpindahan data antarregister yang berbeda ukuran .
Contoh:
MOV AX, CL ;Menyalin isi register CL ke register AX
MOV DH, BX ;Menyalin isi register BX ke register DH
3) Perpindahan data menuju register CS.
Contoh:
MOV CS, BL ;menyalin Isi register BX ke register CS
MOV CS, AL ;menyalin Isi register AX ke register CS
2. Immediate Addressing
Immediate addressing merupakan penyalinan suatu data (mentah) ke suatu register.
Sintaks: MOV reg, data
Contoh:
MOV BL, 2Ah ;Menyalin 2Ah ke BL
MOV CH, ‘A’ ;Menyalin karakter ASCI A ke CH
MOV AX, ‘AB’ ;Menyalin karakter ASCI AB ke AX
3. Direct Addressing
Direct Addressing merupakan penyalinan data dari lokasi memori tertentu ke accumulator (AX, AH atau AL) atau sebaliknya (dari accumulator ke lokasi memori tertentu).
Sintaks: MOV reg _ A, [alamat]
MOV [alamat], reg _ A
Catatan: reg _ A = accumulator
Contoh:
MOV AL, [0100h] ;Menyalin data dari lokasi memori beralamat
;[DSx10h+100h] ke register AL
MOV [0200h], CX ;Menyalin data dari register CX ke lokasi memori
beralamat [DSx10h+200h]
4. Direct Addressing with Displacement
Direct Addressing with Displacement atau dikenal juga dengan displacemen addressing pada dasarnya sama dengan direct addressing, tetapi register yang terlibat tidak hanya accumulator.
Sintaks: MOV reg , [alamat]
MOV [alamat], reg
Contoh:
MOV DL, [0100h] ;Menyalin data dari lokasi memori beralamat
;[DS x 10h+100h] ke register DL
MOV [0200h], CX ;Menyalin data dari register CX ke lokasi
;memori beralamat [DS x 10h+200h]
1) Register Indirect Addressing
Register Indirect Addressing merupakan penyalinan data:
a. Dari lokasi memori yang alamatnya ditunjukkan oleh isi register penunjuk
alamat (yang termasuk register ini: BP, BX, DI atau SI) ke suatu register.
b. Dari suatu register asal ke lokasi memori yang alamatnya ditunjukkan oleh isi
register penunjuk alamat (BP,BX, DI, atau SI) atau
c. Antarlokasi memri yang masing-masing alamatnya ditunjukkan oleh isi register
penunjuk alamat (BP, BX, DI, atau SI)
Sintaks: MOV reg ,[reg]
MOV [reg], reg
MOV [reg], [reg]
Contoh :
MOV EAX, [BX] ;Menyalin data dari lokasi ;memori
beralamat [DS x 10h + ;BX] ke register EAX MOV [CX],AX ;Menyalin data dari register AX ;ke lokasi
memori beralamat
;[DS x 10h + CX]
2) Register Relative Addressing
Register Relative Addressing merupakan penyalinan data dari:
a. lokasi memori yang alamatnya ditujukan oleh isi suatu base register ( BP atau
BX ) atau index register (SI atau DI), yang kemudian ditambah dengan
displacement, ke suatu register tujuan, atau
b. Suatu register ke lokasi memori yang alamatnya ditunjukkan oleh isi base
register (BP atau BX) atau index register (SI atau DI) + displacement.
Sintaks: MOV reg ,[base+disp]
MOV reg, [index+disp]
MOV [base + disp], reg
MOV [index+disp], reg
Contoh:
MOV AX, [BX +10h] ;Menyalin data dari lokasi
;memori beralamat [DS x 10h + BX +
;10h] ke AX
MOV CX, [SI +20h] ;Menyalin data dari lokasi memori
;beralamat [DS x 10h + BX + ;10h] ke CX
3) Base Plus Index Addressing
Base Plus Index Addressing merupakan penyalinan data:
a. dari lokasi memori yang alamatnya ditunjukkan oleh isi base register (BP/BX)
+ isi index register (SI/DI) ke suatu register tujuan atau
b. dari suatu register asal ke lokasi memori yang alamatnya ditunjukkan oleh isi
base register (BP/BX) + isi index register (SI/DI) + disp.
Sintaks: MOV reg, [base + index]
MOV [base + index], reg
Contoh :
MOV DX, [BX+SI] ;Menyalin isi lokasi memori
;beralamat [DS x 10h + BX + SI + 10h]
;ke DX
MOV [BP+DI], AX ;Menyalin isi AX ke lokasi memori
;beralamat [SS x 10h + ;BP+ DI + 20h]
4) Base Relative Plus Index Addressing
Base Relative Index Addressing merupakan penyalinan data :
a. dari lokasi memori yang alamatnya ditunjukkan oleh isi base register (BP/BX)
+ index register (SI/DI) + displacement ke suatu register tujuan atau
b. dari suatu register asal ke lokasi memori yang alamatnya ditunjukkan oleh isi
base register (BP/BX) + isi index register (SI/DI) + disp.
Sintaks: MOV reg, [base + index + disp]
MOV [base + index + dsp], reg
Contoh :
MOV DX, [BX+SI+10h] ;Menyalin isi lokasi memori
;beralamat [DS x 10h + BX + SI
;+ 10h] ke DX
MOV [BP+DI+20h], AX ;Menyalin isi AX ke ;lokasi
memori beralamat ;[SS x 10h +
BP+ DI + ;20h]
0 komentar:
Posting Komentar