Blog Nur Akhwan

Pemrograman Bahasa Rakitan | 7 Mode Pengalamatan (Addressing Mode) Contoh Program Jadi 1

Di bawah ini merupakan listing program dari ke tujuh mode pengalamatan (Addressing Mode) yang saya jadikan menjadi 1 program. Cek this out, mohon koreksi jika ada kesalahan. CMIIW...  :)  :)  :)
;DEKLARASI MAKRO
;Makro Cetak Ganti Baris => untuk ganti baris
ganti_baris macro
 local kal
 kal db 13, 10, '$'
 mov ah,09h
 lea dx,kal
 int 21h
endm
;cetak kalimat
cetak_kal macro kalimat
 mov ah,09h
 lea dx,kalimat
 int 21h
endm
;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
;ENDS MAKROOOOOOOOOOOOOOOOOOOOOOOOOOOOO
;==============================================
.model small
.code
org 100h
proses: jmp mulai
Kar DB 'A'
Kal DB 'ABCDEF'
A   DB 'SELAMAT'
Dia DB 'ABCDEFGHIJKL'
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 (<>)
;===============================================
;CONTOH IMMEDIATE ADDRESSING DAN REGISTER ADDRESSING
mulai:
mov al, 65  ;Immediate Addressing
mov ah, 02h ;servis mencetak
mov dl, al  ;Register Addressing
int 21h     ;cetak nilai int 20h
ganti_baris
ganti_baris
;===============================================
;CONTOH DIRRECT ADDRESSING
MOV DL,Kar ;Direct addressing
MOV AH,02h ;servis cetak karakter
INT 21h
ganti_baris
ganti_baris
;================================================
;CONTOH INDIRRECT ADDRESSING
LEA BX,Kal ; Ambil Offset Kal
MOV CX,2
Ulang:
MOV DL,[BX]  ;Register indirect addressing
MOV AH,02h   ;servis cetak karakter
INT 21h
ADD BX, 2 ;BX=BX+1
LOOP Ulang
ganti_baris
ganti_baris
;=================================================
;CONTOH BASE RELATIVE ADDRESSING
xor bx, bx  ;BX=0, penunjuk karakter pertama yg dicetak
mov cx, 7  ;jumlah perulangan
ulang2:
mov dl, A[bx] ;ambil tabel A yang ke BX (untuk pertama kali BX=0)
mov ah, 02h
int 21h
inc bx      ;sama dengan bx+1
loop ulang2
ganti_baris
ganti_baris
;=================================================

;CONTOH DIRECT INDEXED ADDRESSING
lea bx, Dia
xor si, si
mov cx, 12

ulang3:
mov dl, Dia[si]
mov ah, 02h
int 21h
inc si
loop ulang3
ganti_baris
ganti_baris
;==================================================

;CONTOH BASED INDEXED ADDRESSING
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
end proses
;SELESAAAAAAAAAAAAAAAAAAIIIIIIIIIIIIIIIII....

Penampakanannya setelah saya modifikasi sedikit adalah sebagai berikut :

Terima kasih............

1 komentar: