Kesempatan kali saya mau berbagi sedikit tentang materi di
Assembly. Kalau sebelumnya, Anda sudah bisa mencetak huruf di Assembly sekarang
kita akan mengenal lebih jauh tentang jenis – jenis register dalam bahasa
Assembly. Dalam bahasa Assembly, ada banyak jenis register namun, yang akan
saya bahas di sini ialah jenis – jenis register yang memang saya pelajari.
Berikut ialah jenis – jenis register 8 bit:
1.
AH
2.
AL
3.
BH
4.
BL
5.
CH
6.
CL
7.
DH
Register 8 bit hanya menyimpan nilai 1 byte saja. Sementara
untuk 16 bit berikut ialah jenis – jenis registernya:
1.
AX (Accumulator Register)
2.
BX (Base Register)
3.
CX (Counter Register)
4.
DX (Data Register)
Untuk 16 bit yang sering saya pakai ialah register CX.
Karena, register ini sering saya pakai untuk melakukan looping di dalam Assembly. Untuk 32 bit berikut jenis – jenis registernya:
1.
EAX
2.
EBX
3.
ECX
4.
EDX
Untuk register 32 bit ini jarang saya pakai. Setelah kita
mengenal jenis – jenis register sekarang kita beranjak ke praktikumnya
langsung. Sekarang kita akan mencoba mencetak huruf secara berurutan seperti
berikut :
Gambar : 1
Berikut listing programnya:
.model small
.code
org 100h
start :
mov ah, 02h
mov dl, 41h
int 21h
mov dl, 42h
int 21h
mov dl, 43h
int 21h
int 20h
end start
Memang kode diatas akan mencetak huruf secara berurutan
tapi, itu adalah cara manual untuk mencetak huruf secara berurutan. Karena,
kita sudah mengenal register counter(CX) lebih baik kita gunakan register
tersebut. Berikut listing programnya:
.model small
.code
org 100h
start :
mov ah, 02h
mov dl, 41h
mov cx, 3
ulang :
int 21h
inc dl
loop ulang
int 20h
end start
Coba jalankan dan lihat hasilnya pasti sama. Sedikit
penjelasan, inc dl berarti menaikkan
dl atau menambahkan nilai dl dengan 1. Bisa juga disebutkan seperti ini, dl = dl + 1. Jadi, yang semulanya
register dl bernilai 41h maka akan bertambah menjadi 42h dan itu akan mencetak
huruf B dan ditambah lagi dan akan mencetak huruf C.
Gambar : 2
Gampang bukan ???
Ingat, kata ulang pada listing program diatas hanya berperan
sebagai label atau pemisah antara satu segment dengan segment lainnya. Sekarang
kita akan mencoba mencetak huruf secara berurutan dari atas ke bawah.
.model small
.code
org 100h
start :
mov ah, 02h
mov dx, 41h
mov cx, 3
push dx
ulang :
pop dx
int 21h
inc dx
push dx
mov dl, 0ah
int 21h
loop ulang
int 20h
end start
Coba jalankan program di atas dan lihat hasilnya. Memang agak panjang ya. Tapi, coba dipahami
setiap syntax nya pasti gampang. Ok berikut penjelasannya :
Mov dx, 41h – memberikan nilai pada register dx
Mov cx, 3 – register counter bernilai 3
Push dx – menyimpan nilai dx
Pop dx – mengeluarkan nilai dx
Int 21h – mencetak nilai register dx
Inc dx – menaikkan nilai dx (ditambah 1)
Mov dl, 0ah – memberikan nilai 0 pada register dl (ini
untuk mencetak enter atau newline)
Loop ulang – periksa nilai cx, jika belum nol maka,
proses akan kembali ke label ulang dan setiap kali ada kata loop maka, nilai cx
akan dikurang 1
Int 20h – kembali ke DOS atau netral
Berikut hasil dari programnya
Gambar : 3
No comments