Model Program COM
Untuk membuat program .COM yang hanya menggunakan 1 segment, bisa anda
buat dengan model program seperti gambar.
Bentuk yang digunakan disini adalah bentuk program yang dianjurkan
(Ideal). Dipilihnya bentuk program ideal 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).
Turbo Pascal dan C
---------------------------------------------------------------------------------------
.MODEL SMALL
.CODE
ORG 100H
Label1 : JMP Label2
+----------------------------------------+
| TEMPAT DATA PROGRAM |
+----------------------------------------+
Label2 : +----------------------------------------+
| TEMPAT DATA PROGRAM |
+----------------------------------------+
INT 20H
END
Label1
------------------------------------------------------------------------------------------
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.
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
saatprogram 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:
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 yangakan 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 AHadalah 2maka 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.
Mencetak Huruf dengan Interuksi 21h
;====================================;
; PROGRAM : AO . ASM ;
; FUNGSI : MENCETAX RANTER ;
‘M’ DENGAN INT 21 ;
;================================S’to=;
. MODEL SHALL
. CODE
ORG 100h
Proses :
MOV AH, 02h ; Nilai servis untuk mencetak karakter
MOV DL, ‘M’ ; DL = Karakter ASCII yang akan dicetak
INT 21h ; Cetak Karakter !!
INT 20h ; Selesai ! kembali ke dos
END Proses
Setelah program di atas kita ketik, compile-lah dengan menggunakan
TASM.EXE dengan perintah :
Perintah TASM.EXE
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
Perintah TASM.EXE
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
File dengan Format Program COM
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 dijalankan maka pada layar akan ditampilkan
Tampilan pada Layar
C:\>A0
A
A
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.
THANKS!
Add Google Classroom
Bahasa Rakitan
fui6kml