Minggu, 26 Agustus 2007

Struktur Program COM



#####################################
Dokumentasi asli ada di www.SROeR.org
"Chapter 1 : Struktur Program COM"
#####################################

Mengapa menggunakan bahasa Assembly?

1. Cepat, Lebih cepat dari compiler lainnya.
2. Lebih dekat dengan bahasa mesin, disebabkan bahasa Assembly dialamatkan
1:1 dengan bahasa mesin.
3. Kode yang dihasilkan lebih kecil dari compiler lainnya.
4. Dapat mengakses hardware lebih luas.

Compiler Assembly sudah banyak tersedia di internet, contohnya TASM (Turbo
Assembler), MASM (Microsoft Assembler), NASM (Netwide Assembler), dan lainlain.
Salah satu bentuk program yang dapat dihasilkan oleh compiler Assembly
adalah file COM. File COM adalah struktur program paling sederhana. Ada
beberapa syarat dalam pembuatan atau penggunaan file COM :

1. Kode dan data program harus tidak lebih besar dari 64 KB.
2. Tidak dapat memesan alamat memori melalui sistem operasi.

Contoh bentuk kode program COM, ketiklah di teks editor yang dapat
menghasilkan file ASCII murni seperti Notepad, vi, atau lainnya. Simpan
dengan nama COBAASM.ASM.
Versi TASM :
----------------------------------
ideal
p386n
model tiny
codeseg
org 100h
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end
----------------------------------
Versi MASM :
----------------------------------
.386
.model tiny
.code
org 100h
entry:
jmp start
;tempat data dan subrutin
start:
mov ax, 4c00h
int 21h
end entry
----------------------------------

Compilelah dengan perintah TASM.EXE COBAASM.ASM lalu dikuti dengan perintah
TLINK.EXE /T COBAASM.OBJ jika menggunakan compiler TASM. Untuk compiler MASM
gunakan perintah ML COBAASM.ASM. Jika tak ada error maka akan terlihat
output seperti ini :

E:\PUSHM0~1\TASM3>tasm.exe cobaasm.asm
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland
International
Assembling file: cobaasm.asm
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 460k

File yang dihasilkan dari proses kompilasi adalah file OBJ. Untuk merubah
file OBJ ini menjadi sebuah file EXE atau COM kita perlu melakukan "linking"
dengan program linker. Disini kita menggunakan TLINK.exe.

E:\PUSHM0~1\TASM3>tlink.exe /t cobaasm.obj
Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International

Argumen /t pada tlink.exe berarti kita ingin membuat file COM dari file .obj
yang dihasilkan oleh compiler. Sedangkan untuk membuat file EXE tidak perlu
mengikutkan argumen /t.
Jalankan program COM tersebut :

E:\PUSHM0~1\TASM3>cobaasm.com

Apa yang terjadi? Tentunya tidak terjadi apa-apa karena kita belum
menuliskan perintah untuk program tersebut. Jadi program cobaasm.com
tersebut hanya diload ke memory lalu terminate dengan sendirinya.
Apa sih arti dari kode-kode diatas? lalu apa perbedaan antara kode yang
ditulis untuk compiler TASM dengan MASM?
berikut adalah penjelasan lengkapnya...

1. Perintah "ideal" berarti kita menggunakan syntax ideal dalam compiler
TASM.
2. Perintah "p386n" atau ".386" berarti kita menggunakan intruksi prosesor
80386.
3. Perintah "model tiny" atau ".tiny" berarti kita ingin menggunakan
format file COM.
4. Perintah "codeseg" atau ".code" adalah awal dari kode program kita.
5. Perintah "org 100h" berarti program kita akan dimulai dari offset 100h.
6. Dalam compiler MASM kita perlu mendeklarasikan entry point untuk
program, disini kita gunakan label "entry:".
Perlu diketahui kalau deklarasi sebuah label : "nama_label:".
7. Program COM selalu diawali dengan "peloncatan" atau "jump" ke awal kode
program. Perintah yang digunakan adalah “jmp" diikuti dengan nama
label, misalnya "start". Bila diperhatikan, diantara perintah "jmp
start" dan label "start" adalah tempat dimana kita bisa deklarasikan
variabel-variabel ataupun data-data yang digunakan dalam program kita.
8. Untuk mengakhiri jalannya program, kita perlu membuat suatu perintah.
Perintah "end" atau "end entry" disini hanya menunjukkan akhir dari
kode program, bukan untuk MENGAKHIRI proses. 2 perintah yang digunakan
adalah :

MOV AX, 4c00h
int 21h

Perintah MOV adalah perintah untuk menyalin isi data atau register ke
suatu register lain. Bentuk umum perintah MOV :

MOV tujuan_salin, asal_salin

Pada perintah diatas kita akan menyalin atau lebih tepatnya "mengisi"
register AX (lebih dikenal dengan register akumulator 16 bit) dengan
bilangan heksa 4c00.
Sedangkan perintah INT 21h berarti kita menjalankan interrupt sistem
dengan fungsi 21h.

Tidak ada komentar: