Register Assembly



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
8.       DL
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

Leave a Reply

Anda boleh berkomentar di blog saya tapi, tetap jagalah kesopanan dan nilai - nilai etika Anda ketika berkomentar.

Visitors