Pemrograman Bahasa Rakitan | Mode Pengalamatan (Addressing Mode) Listing Program Dalam Bahasa Assembly ada yang dinamakan Mode Pengalamatan atau bahas

Minggu, 18 Desember 2011

. 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 small
.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

3. DIRRECT ADRESSING => pengcopyan variabel dari suatu register atau simbol, contohnya :

.model small
.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

4. REGISTER INDIRRECT ADRESSING => mengakses suatu variabel yang banyak dengan mengambil alamat efektifnya, contohnya :

.model small
.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

5. BASE RELATIVE ADRESSING => mengakses suatu tabel dengan mengambil alamat efektifnya.

.model small
.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

6. 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.


.MODEL SMALL
.CODE
ORG 100h

Data : JMP Proses
Kar DB 'A','B','C','D','E'
;Array yg berisi 5 karkter

Proses:
LEA BX,Kar ;Muat alamat efektif Kar ke BX
MOV DL,Kar ;sama dengan MOV DL,Kar[0]
MOV AH,02h
INT 21h
MOV DL,Kar[1] ;ambil nilai array ke-2 (index 1)
MOV AH,02h
INT 21h
MOV DL,Kar+2 ;ambil nilai array ke-3 (index 2)
MOV AH,02h
INT 21h
MOV DL,[BX+3] ;ambil nilai array ke-4 (index 3)
MOV AH,02h
INT 21h
MOV DL,[BX]+4 ;ambil nilai array ke-5 (index 4)
MOV AH,02h
INT 21h
INT 20h ;Selesai, kembali ke DOS !!
END Data

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

0 komentar:

Posting Komentar

Lagu Daerah Bengkulu Selatan

http://www.ziddu.com/download/17765598/PantaiPasarBawah.mp3.html
http://www.ziddu.com/download/17770609/Ading.mp3.html
http://www.ziddu.com/download/17770638/BatinLingiran.mp3.html
http://www.ziddu.com/download/17770712/BeghasKedurang.mp3.html
http://www.ziddu.com/download/17765528/MutighKupi.mp3.html
http://www.ziddu.com/download/17765460/KasiahSayang.mp3.html
http://www.ziddu.com/download/17765364/KemaneAgi.mp3.html
http://www.ziddu.com/download/17765259/KebilauBaliak.mp3.html
http://www.ziddu.com/download/17765180/KedurangBadakuDillahirka.mp3.html
http://www.ziddu.com/download/17764830/TukangKundai.mp3.html
http://www.ziddu.com/download/17764761/SukatanMatau.mp3.html
http://www.ziddu.com/download/17764705/Sinjang.mp3.html
http://www.ziddu.com/download/17764641/Seginim.mp3.html
http://www.ziddu.com/download/17764579/sekundangsetungguan.mp3.html

sumber: Radio Artha FM Bengkulu Selatan

Pemrograman Bahasa Rakitan | Mode Pengalamatan (Addressing Mode) Listing Program Dalam Bahasa Assembly ada yang dinamakan Mode Pengalamatan atau bahas


. 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 small
.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

3. DIRRECT ADRESSING => pengcopyan variabel dari suatu register atau simbol, contohnya :

.model small
.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

4. REGISTER INDIRRECT ADRESSING => mengakses suatu variabel yang banyak dengan mengambil alamat efektifnya, contohnya :

.model small
.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

5. BASE RELATIVE ADRESSING => mengakses suatu tabel dengan mengambil alamat efektifnya.

.model small
.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

6. 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.


.MODEL SMALL
.CODE
ORG 100h

Data : JMP Proses
Kar DB 'A','B','C','D','E'
;Array yg berisi 5 karkter

Proses:
LEA BX,Kar ;Muat alamat efektif Kar ke BX
MOV DL,Kar ;sama dengan MOV DL,Kar[0]
MOV AH,02h
INT 21h
MOV DL,Kar[1] ;ambil nilai array ke-2 (index 1)
MOV AH,02h
INT 21h
MOV DL,Kar+2 ;ambil nilai array ke-3 (index 2)
MOV AH,02h
INT 21h
MOV DL,[BX+3] ;ambil nilai array ke-4 (index 3)
MOV AH,02h
INT 21h
MOV DL,[BX]+4 ;ambil nilai array ke-5 (index 4)
MOV AH,02h
INT 21h
INT 20h ;Selesai, kembali ke DOS !!
END Data

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