Dalam Bahasa Assembly ada yang dinamakan Mode Pengalamatan atau bahasa Inggrisnya adalah Addressing Mode, yaitu Mode pengalamatan berbagai didefinisikan dalam sebuah arsitektur set instruksi yang diberikan menentukan bagaimana instruksi bahasa mesin dalam arsitektur yang mengidentifikasi operan (operand atau) dari setiap instruksi. Sebuah mode pengalamatan menentukan bagaimana menghitung alamat memori efektif operand dengan menggunakan informasi yang dimiliki dalam register dan / atau konstanta yang terkandung dalam instruksi mesin atau tempat lain. Addressing mode ini terdapat 7 macam, sebagai berikut ini, yaitu :
1. IMMEDIATE ADRESSING => pengcopyan variabel angka secara langsung
2. REGISTER ADDRESSING => pencopyan variabel antar register yang berukuran sama, contoh : AL dan BH, CX dan AX, contoh penggunaan keduanya :
.model small3. DIRRECT ADRESSING => pengcopyan variabel dari suatu register atau simbol, contohnya :
.code
org 100h
imme:
mov al, 65 ; disini contoh penggunaan Immediate Addressing mencopy nilai 65 ke register AL mov ah, 02h
mov dl, al ; disini contoh penggunaan Register Addressing mencopy nilai AL (65) ke register DL int 21h ; nilai 65 Hexa dicetak ke ASCII = huruf "A"
int 20h
end imme
.model small4. REGISTER INDIRRECT ADRESSING => mengakses suatu variabel yang banyak dengan mengambil alamat efektifnya, contohnya :
.code
org 100h
mulai: jmp dir
A db 45h ; kode ASCII huruf E
dir: mov ah, 02h
mov dl, A ; disini contoh penggunaan Dirrect Addressing mencopy nilai A (45h) ke register AL int 21h ; nilai A = 45h Hexa dicetak ke ASCII = huruf "A"
int 20h
end mulai
.model small5. BASE RELATIVE ADRESSING => mengakses suatu tabel dengan mengambil alamat efektifnya.
.code
org 100h
mulai: jmp regin
A db 'INDONESIA'
regin:
lea bx, A ; pengambilan variabel A ("selamat sore") dengan register indirect addressing
; register BX menunjukan alamat efektif dari "Kal"
mov cx, 3 ; counter untuk Looping
ulang:
mov dl, [bx] ; mengambil nilai yang ditunjukkan register BX
mov ah, 02h
int 21h
add bx, 2 ; menambahkan nilai BX=+2, sehingga BX akan menujukkan ke 2 alamat selanjutnya
loop ulang
int 20h
end mulai
.model small6. Direct Indexed Addressing ==> mirip dengan base addressing, perbedaannya hanya penggunaan register yang dipakai untuk perhitungan alamat efektif. Pada indexed addressing dipakai register-register index yaitu SI dan DI.
.code
org 100h
mulai: jmp barel
A db 'SELAMAT' ; kode ASCII huruf E
barel:
xor bx, bx ; BX = 0, sebagai patokan penunjuk karakter pertama yg dicetak
mov cx, 7 ; jumlah perulangan
ulang:
mov dl, A[bx] ;ambil tabel A yang ke BX (untuk pertama kali BX = 0)
mov ah, 02h int 21h
inc bx ; inc bx sama dengan bx+1
loop ulang
int 20h
end mulai
Contoh-nya lagi [UNDER CONTRUCTION]
7. Base Indexed Addressing ==> merupakan gabungan antara base addressing dan indexed addressing. Mode pengalamatan ini sering digunakan untuk menangani array dua dimensi. Contoh :
;MAKRO cetak angka
cetak_angka macro angka
local proses, ulang, cetak
proses:
mov ax,angka
mov bx,10
xor cx,cx
ulang:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jne ulang
cetak:
pop dx
add dl,'0'
mov ah,02h
int 21h
loop cetak
endm
.MODEL SMALL
.CODE
ORG 100h
Data : JMP Proses
Mahasiswa STRUC
Nim Dw 0 ; 2 byte
Usia Dw 0 ; 1 byte
Nilai Dw 0,0,0 ; 3 byte
Mahasiswa ENDS
Kelas Mahasiswa 10 DUP (<>)
Proses:
LEA BX,kelas ; BX Menunjuk Offset Kelas
ADD BX,18 ; BX Menunjuk pada record ke 4
XOR SI,SI ; SI=0
MOV [BX][SI].Usia,19 ; Usia, record ke 4
cetak_angka [BX][SI].Usia
MOV [BX][SI].Nilai,76 ; Nilai pertama, record ke 4
cetak_angka [BX][SI].Nilai
MOV [BX][SI+1].Nilai,81 ; Nilai kedua, record ke 4
cetak_angka [BX][SI+1].Nilai
MOV [BX][SI+2].Nilai,95 ; Nilai ketiga, record ke 4
cetak_angka [BX][SI+2].Nilai
INT 20h ; Selesai, kembali ke DOS
END Data
iki kur nampike onko 19768195 yo wan?
BalasHapusiyo, lek,...
BalasHapusasline, rep tak gawe :
Usia = 19
Nilai 1 = 76
Nilai 2 = 81
Nilai 3 = 95
ning ra nyandak, uteke...
hahaha
artine opo iku wan?
BalasHapusendi tugas e kang
BalasHapusmohonpenjelasan istilah ~array, ~byte, ~bit dalam bahasa assembly,contoh:
BalasHapus~array 32 bufferdisplay bufferhidden
~byte colomX cycleCounter
~bit oneCycle
trim's sblmnya..
NGOMONG OPO PIYE??????????
BalasHapusONO OPO?
KWOKOKWOKWKOWKOWOKW
kalem
BalasHapus