Perintah Khusus Bahasa Assembly

Berikut adalah Perintah Khusus Bahasa Assembly :

LABEL 
Label bisa anda definisikan dengan ketentuan akhir dari nama label tersebut harus berupa tanda titik dua (:). Pemberian nama label bisa digunakan: 
- Huruf : A..Z (Huruf besar dan kecil tidak dibedakan) 
- Angka : 0..9 
- Karakter khusus : @ . _ $ 
Nama pada label tidak boleh terdapat spasi dan didahului oleh angka, Contoh dari penulisan label yang benar: mulai: MOV CX,7. Nama label terpanjang yang dapat dikenali oleh assembler adalah 31 karakter. 

KOMENTAR 
Untuk memberikan komentar pada source file digunakan tanda ';'. Apapun yang dtuliskan dibelakang tanda ';' akan dianggap sebagai komentar, Contoh : mulai: MOV BX,7 ; berikan nilai 7 pada BX 

PERINTAH MOV 
Perintah MOV digunakan untuk mengcopy nilai atau angka menuju suatu register,variabel atau memory. Adapun syntax untuk perintah MOV ini adalah : 
MOV Tujuan,Asal 
Sebagai contohnya : MOV AL,9 ; masukkan nilai 9 pada AL. 
MOV AH,AL ; nilai AL=9 dan AH=9 
MOV AX,9 ; AX=AH+AL hingga AH=0 dan AL:=9 
Pada baris pertama(MOV AL,9), kita memberikan nilai 9 pada register AL. Kemudian pada baris kedua(MOV AH,AL) kita mengcopykan nilai register AL untuk AH. Jadi setelah operasi ini register AL akan tetap bernilai 9, dan register AH akan sama nilainya dengan AL atau 9. Pada baris ketiga(MOV AX,9), kita memberikan register AX nilai 9. Karena AX terdiri atas AH dan AL, maka register AH akan bernilai 0, sedangkan AL akan bernilai 9. 
Perintah MOV akan mengcopykan nilai pada sumber untuk dimasukan ke Tujuan, nilai sumber tidaklah berubah. Inilah sebabnya MOV(E) akan kita terjemahkan disini dengan mengcopy, dan bukannya memindahkan. 

PERINTAH INT 
Didalam pemrograman assambler, kita akan banyak sekali menggunakan interupsi untuk membantu kita dalam mengerjakan suatu pekerjaan. Untuk menghasilkan suatu interupsi digunakan perintah INT dengan syntax: 
INT NoInt 
Dengan NoInt adalah nomor interupsi yang ingin dihasilkan. Sebagai contohnya bila kita ingin menghasilkan interupsi 21h, bisa dituliskan dengan: INT 21h, maka interupsi 21h akan segera terjadi. 

MEMBUAT PROGRAM COM 
MODEL PROGRAM COM 
Untuk membuat program .COM yang hanya menggunakan 1 segment, bisa anda buat dengan model program seperti gambar 6.1. Bentuk yang digunakan disini adalah bentuk program yang dianjurkan(Ideal). Dipilihnya bentuk program ideal dalam buku ini dikarenakan pertimbangan dari berbagai keunggulan bentuk program ideal ini seperti, prosesnya lebih cepat dan lebih mudah digunakan oleh berbagai bahasa tingkat tinggi yang terkenal(Turbo Pascal dan C). 
----------------------------------------------------------- 
.MODEL SMALL 
.CODE 
ORG 100H 
Label1 : JMP Label2 
+---------------------+ 
| TEMPAT DATA PROGRAM | 
+---------------------+ 
Label2 : +---------------------+ 
| TEMPAT PROGRAM | 
+---------------------+ 
INT 20H 
END Label1 
----------------------------------------------------------- 
Gambar 5.1. Model Program COM 
Supaya lebih jelas bentuk dari program ideal, marilah kita telusuri lebih lanjut dari bentuk program ini. 

MODEL SMALL 
Tanda directive ini digunakan untuk memberitahukan kepada assembler bentuk memory yang digunakan oleh program kita. Supaya lebih jelas model-model yang bisa digunakan adalah : 
- TINY 
Jika program anda hanya menggunakan 1 segment seperti program COM. Model ini disediakan khusus untuk program COM. 
- SMALL 
Jika data dan code yang digunakan oleh program kurang dari ukuran 1 segment atau 64 KB. 
- MEDIUM 
Jika data yang digunakan oleh program kurang dari 64 KB tetapi code yang digunakan bisa lebih dari 64 KB.
- COMPACT 
Jika data yang digunakan bisa lebih besar dari 64 KB tetapi codenya kurang dari 64 KB. 
- LARGE 
Jika data dan code yang dipakai oleh program bisa lebih dari 64 KB. 
- HUGE 
Jika data, code maupun array yang digunakan bisa lebih dari 64 KB. 
Mungkin ada yang bertanya-tanya mengapa pada program COM yang dibuat digunakan model SMALL dan bukannya TINY ? Hal ini disebabkan karena banyak dari compiler bahasa tingkat tinggi yang tidak bisa berkomunikasi dengan model TINY, sehingga kita menggunakan model SMALL sebagai pemecahannya. 

CODE 
Tanda directive ini digunakan untuk memberitahukan kepada assembler bahwa kita akan mulai menggunakan Code Segment-nya disini. Code segment ini digunakan untuk menyimpan program yang nantinya akan dijalankan. 
ORG 100h 
Pada program COM perintah ini akan selalu digunakan. Perintah ini digunakan untuk memberitahukan assembler supaya program pada saat dijalankan(diload ke memory) ditaruh mulai pada offset ke 100h(256) byte. Dapat dikatakan juga bahwa kita menyediakan 100h byte kosong pada saat program dijalankan. 100h byte kosong ini nantinya akan ditempati oleh PSP(Program Segment Prefix) dari program tersebut. PSP ini digunakan oleh DOS untuk mengontrol jalannya program tersebut. 
JMP 
Perintah JMP(JUMP) ini digunakan untuk melompat menuju tempat yang ditunjukkan oleh perintah JUMP. Adapun syntaxnya adalah: 
JUMP Tujuan . 
Dimana tujuannya dapat berupa label seperti yang digunakan pada bagan diatas. Mengenai perintah JUMP ini akan kita bahas lebih lanjut nantinya. 
Perintah JUMP yang digunakan pada bagan diatas dimaksudkan agar melewati tempat data program, karena jika tidak ada perintah JUMP ini maka data program akan ikut dieksekusi sehingga kemungkinan besar akan menyebabkan program anda menjadi Hang. 

INT 20h 
Perintah INT adalah suatu perintah untuk menghasilkan suatu interupsi dengan syntax: 
INT NoInt 
Interupsi 20h berfungsi untuk mengakhiri program dan menyerahkan kendali sepenuhnya kepada Dos. Pada program COM cara ini bukanlah satu-satunya tetapi cara inilah yang paling efektif untuk digunakan. Bila anda lupa untuk mengakhiri sebuah program maka program anda tidak akan tahu kapan harus selesai, hal ini akan menyebabkan komputer menjadi hang. 

MENCETAK HURUF 
Bila dihasilkan interupsi 21h apa yang akan dikerjakan oleh komputer ?. Jawabnya, ada banyak sekali kemungkinan. Pada saat terjadi interupsi 21h maka pertama-tama yang dilakukan komputer adalah melihat isi atau nilai apa yang terdapat pada register AH. Misalkan bila nilai AH adalah 2 maka komputer akan mencetak sebuah karakter, berdasarkan kode ASCII yang terdapat pada register DL. Bila nilai pada register AH bukanlah 2, pada saat dilakukan interupsi 21h maka yang dikerjakaan oleh komputer akan lain lagi. 
Dengan demikian kita bisa mencetak sebuah karakter yang diinginkan dengan meletakkan angka 2 pada register AH dan meletakkan kode ASCII dari karakter yang ingin dicetak pada register DL sebelum menghasilkan interupsi 21h. 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~; 
; PROGRAM : A0.ASM ; 
; FUNGSI : MENCETAK KARATER ; 
; 'A' DENGAN INT 21 ; 
;==========================S’to=; 
.MODEL SMALL 
.CODE 
ORG 100h 
Proses : 
MOV AH,02h ; Nilai servis ntuk mencetak karakter 
MOV DL,'A' ; DL = Karakter ASCII yang akan dicetak 
INT 21h ; Cetak karakter !! 
INT 20h ; Selesai ! kembali ke DOS 
END Proses 
Program 7.1. Mencetak sebuah karakter 
Setelah program 7.1. anda ketik compile-lah dengan menggunakan TASM.EXE dengan perintah : 
C:\>tasm a0 
Turbo Assembler Version 2.0 Copyright (c) 1988, 1990 
Borland International 
Assembling file: a0.ASM 
Error messages: None 
Warning messages: None 
Passes: 1 
Remaining memory: 306k 
C:\>dir a0.* 
Volume in drive C is S’to 
Directory of C:\ 
A0 ASM 506 08-14-94 3:56p 
A0 OBJ 179 08-14-94 11:24p 
2 file(s) 685 bytes 
1,267,200 bytes free 
Sampai disini sudah dihasilkan suatu file object dari KAL.ASM yang siap dijadikan file COM(karena kita membuat file dengan format program COM). Untuk itu lakukanlah langkah kedua, dengan perintah : 
C:\>tlink/t a0 
Turbo Link Version 3.0 Copyright (c) 1987, 1990 
Borland International 
C:\>tlink/t a0 
Turbo Link Version 3.0 Copyright (c) 1987, 1990 
Borland International 
C:\>dir a0.* 
Volume in drive C is S’to 
Directory of C:\ 
A0 ASM 506 08-14-94 3:56p 
A0 OBJ 179 08-14-94 11:26p 
A0 MAP 229 08-14-94 11:26p 
A0 COM 8 08-14-94 11:26p 
4 file(s) 922 bytes 
1,266,176 bytes free 
Setelah kedua proses itu selesai maka dihasilkanlah suatu program COM yang sudah siap untuk dijalankan. File-file yang tidak digunakan bisa anda hapus. Bila program 7.1. dijalankan maka pada layar akan ditampilkan 
C:\>A0 
Kita lihat disini bahwa karakter yang tercetak adalah yang sesuai dengan kode ASCII yang ada pada register DL. Sebagai latihan cobalah anda ubah register DL dengan angka 65 yang merupakan kode ASCII karakter 'A'. Hasil yang didapatkan adalah sama. 
Pelajarilah fungsi ini baik-baik, karena akan banyak kita gunakan pada bab-bab selanjutnya. 

MENCETAK KARAKTER BESERTA ATRIBUT 
Sebuah karakter disertai dengan warna tentunya akan lebih menarik. Untuk itu anda bisa menggunakan interupsi ke 10h dengan aturan pemakaiannya : 
INPUT 
AH = 09h 
AL = Kode ASCII dari karakter yang akan dicetak 
BH = Nomor halaman(0 untuk halaman 1) 
BL = Atribut atau warna dari karakter yang akan dicetak 
CX = Banyaknya karakter tersebut akan dicetak 
Setelah semua register dimasukkan nilainya maka lakukanlah interupsi 10h. Perlu anda perhatikan bahwa interupsi ini mencetak karakter tanpa menggerakkan kursor. ;=================================; 
; PROGRAM : A1.ASM ; 
; FUNGSI : MENCETAK KARATER 'A'; 
; BESERTA ATRIBUTNYA ; 
; DENGAN INT 10h ; 
;============================S’to=; 
.MODEL SMALL 
.CODE 
ORG 100h 
Proses : 
MOV AH,09h ; Nilai servis untuk mencetak karakter 
MOV AL,'A' ; AL = Karakter yang akan dicetak 
MOV BH,00h ; Nomor Halaman layar 
MOV BL,93h ; Warna atau atribut dari karakter 
MOV CX,03h ; Banyaknya karakter yang ingin dicetak 
INT 10h ; Laksanakan !!! 
INT 20h ; Selesai ! kembali ke DOS 
END Proses 
Program 7.2. Mencetak karakter beserta atributnya 
Bila program 7.2. dieksekusi maka akan ditampilkan huruf 'A' sebanyak 3 kali dengan warna dasar biru kedip dan warna tulisan Cyan(sesuai dengan nilai register BL). Mengenai halaman layar dan atribut(warna) akan kita bahas lebih lanjut pada bagian yang lain. 
B:\>A1 
AAA 
Anda bisa merubah-rubah register AL dan BL untuk merubah karakter dan warna yang ingin dicetak. 
7.3. PENGULANGAN DENGAN LOOP 
Perintah LOOP digunakan untuk melakukan suatu proses yang berulang-ulang. Adapun syntax dari perintah ini adalah : 
LOOP Tujuan 
Tujuan dapat berupa suatu label yang telah didefinisikan, contoh: 
MOV CX,3 ; Banyaknya pengulangan yang dilakukan 
Ulang : INT 10h ; Tempat terjadinya pengulangan 
LOOP Ulang ; Lompat ke label 'Ulang' 
Pada proses pengulangan dengan perintah LOOP, register CX memegang suatu peranan yang khusus dimana register ini dijadikan sebagai counter/penghitung terhadap banyaknya looping yang boleh terjadi. Setiap ditemui perintah LOOP, maka register CX akan dikurangi dengan 1 terlebih dahulu, kemudian akan dilihat apakah CX sudah mencapai 0. Proses looping akan selesai bila nilai 
pada register CX mencapai nol. Seperti pada contoh diatas, maka interupsi 10h akan dihasilkan sebanyak 3 kali(sesuai dengan nilai CX). 
Perlu diperhatikan bahwa jangan sampai anda menaruh CX kedalam proses LOOP karena hal ini akan menyebabkan nilai CX diSET terus sehingga proses looping tidak bisa berhenti. 
TRICK: 
Bila anda menetapkan nilai CX menjadi nol pada saat pertama kali sebelum dilakukan loop, maka anda akan mendapatkan proses looping yang terbanyak. Hal ini dikarenakan proses pengurangan 0 dengan 1 akan menghasilkan nilai FFFFh(-1), Contoh : 
MOV CX,00 
Ulang: LOOP Ulang 
7.4. MENCETAK BEBERAPA KARAKTER 
Untuk mencetak beberapa karakter, bisa anda gunakan proses looping. Sebagai contoh dari penggunaan looping ini bisa dilihat pada program 7.3. 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~; 
; PROGRAM : ABC0.ASM ; 
; FUNGSI : MENCETAK 16 BUAH ; 
; KARAKTER DENGAN ; 
; INT 21h SERVIS 02 ; 
;==========================S’to=; 
.MODEL SMALL 
.CODE 
ORG 100h 
Proses : 
MOV AH,02h ; Nilai servis 
MOV DL,'A' ; DL=karakter 'A' atau DL=41h 
MOV CX,10h ; Banyaknya pengulangan yang akan 
Ulang : 
INT 21h ; Cetak karakter !! 
INC DL ; Tambah DL dengan 1 
LOOP Ulang ; Lompat ke Ulang 
INT 20h 
END Proses 
Program 7.3. Pengulangan dengan perintah LOOP 
Bila program 7.3. dijalankan maka akan ditampilkan : 
ABCDEFGHIJKLMNOP 
Perintah INC DL akan menambah register DL dengan 1, seperti intruksi , DL:=DL+1 dalam Pascal. Lebih jauh mengenai operasi aritmatika(INC) ini akan dibahas pada bab selanjutnya. 

Comments

  1. Informasinya sangat bermanfaat.jangan lupa berkunjung ke website kami untuk membeli domain dan hosting dengan harga murah yang pasti berkualitas juga aman :) -> http://domainhosting.media.web.id & www.indosite.com/rezaldi special untuk bulan maret ada diskon sebesar 30%

    ReplyDelete

Post a Comment

Popular posts from this blog

Perangkat Komputer dan Fungsinya

Fungsi Dari NETWORK LAYER ACESS & INTERNET LAYER Pada TCP/IP