dua option:
Debugger (Menggunakan DEBUG) Mengunakan Turbo Assembler (TASM)
Sejarah Debug
Berasal dari kata bug yang berarti kutu.
Maksudnya adalah mencari dan melacak kesalahan
dari suatu program komputer. Pada hardware dikenal istilah trouble-shoot. Istilah ini ditemukan pada tahun 1945 oleh Grace Murray Hopper. Pengolahan data pada komputer Max II macet, setelah ditelusuri oleh para teknisi, ternyata penyebabnya adalah seekor serangga (bug) yang terjepit diantara kotak-kotak relay.
DEBUG
Debug merupakan sebuah program pelaksana
(command-driven program) yang memiliki 19 interuksi. Selain memiliki kemampuan untuk melakukan debugging, intruksi debug juga mampu untuk melaksanakan perhitungan secara hexa, menciptakan file baru, mencari data tertentu, serta melihat, mengedit dan menyimpan data ke dalam memory.
DEBUG
Debug hanya mengenal dan selalu bekerja dengan
bilangan heksadesimal. Debug bekerja dengan penunjuk ke segment-segment memory menggunakan format Segment : Offset. Debug mampu menjelajah kedaerah-daerah perangkat yang paling dalam atau very low level access (baik secara software maupun hardware).
A (Assemble/Address) C (Compare) D (Dump) E (Enter/Edit) F (Fill) G (Go) H (Hex) I (Input) L (Load) M (Move)
Memulai DEBUG
C:/>debug[enter]
-r[enter] Muncul tampilan sbb :
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1390 ES=1390 1390:0100 0000 SS=1390 CS=1390 IP=0100 ADD [BX+SI],AL NV UP EI PL NZ NA PO NC DS:0000=CD
program objek (.OBJ). Linker (TLINK) => Meng-generate program objek ke executable file (.COM atau .EXE).
.com
.exe
PROGRAM EXE
Lebih panjang dari file COM Lebih lambat dibanding file
segmen Ukuran file maksimum 64 KB (ukuran satu segment) Sulit untuk mengakses data atau procedure yang terletak pada segment yang lain. 100h byte pertama merupakan PSP(Program Segment Prefix) dari program tersebut. Bisa dibuat dengan DEBUG.
COM Bisa menggunakan lebih dari 1 segmen Ukuran file tak terbatas sesuai dengan ukuran memory. Mudah mengakses data atau procedure pada segment yang lain. Tidak bisa dibuat dengan DEBUG.
Bentuk Angka
Desimal Untuk menuliskan angka dalam bentuk desimal, bisa digunakan tanda 'D' pada akhir angka tersebut atau bisa juga tidak diberi tanda sama sekali. Contoh : 298D atau 298 saja. Biner Untuk menuliskan angka dalam bentuk biner(0..1), harus ditambahkan tanda 'B' pada akhir angka tersebut. Contoh : 01100111B. Hexadesimal Untuk menuliskan angka dalam bentuk hexadesimal(0..9,A..F), harus ditambahkan tanda 'H' pada akhir angka tersebut. Bila angka pertama dari hexa berupa karakter(A..F) maka angka nol harus ditambahkan didepannya. Bila hal ini tidak dilakukan, assembler akan menganggapnya sebagai suatu label, bukannya sebagai nilai hexa. Contoh penulisan yang benar: 0A12H, 2A02H. Karakter Penulisan karakter atau string diapit oleh tanda petik dua (") atau tanda petik satu('). Contoh: ' Ini adalah karakter '.
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 : @ . _ $
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
Tipe Data
Dalam bahasa rakitan sebuah variabel atau konstanta harus
didefinisikan terlebih dahulu. Ada beberapa instruksi untu mendefinisikan variabel atau konstanta yaitu:
DB DW DD DF DQ DT EQU
<Define Byte> 1 Byte <Define Word> 2 Byte <Define DoubleWord> 4 Byte <Define FarWords> 6 Byte <Define QuadWord> 8 Byte <Define TenBytes> 10 Byte <Equate> Konstanta
adalah penulisan variabel atau konstanta tidak boleh ada spasi tetapi cara penulisan bebas.
END Tdata
TINY => Program dengan model ini hanya menggunakan 1 segment (Model ini disediakankhusus untuk program berekstensi .COM). SMALL =>Program model ini menggunkan ukuran data-data dan kode kurang dari 1 segment atau 64KB. MEDIUM => Program model ini menggunakan ukuran data kurang dari 64KB namun ukuran kode bisa lebih dari 64KB. COMPACT => Program model ini menggunkan ukuran data lebih dari 64KB namun ukuran kode lebih kecil atau sama dengan 64KB LARGE => Program model ini menggunkan ukuran data dan kode lebih dari 64 KB (lebih dari 1 segment). HUGE => Program model ini menggunkan ukuran data, kode dan array lebih besar dari 64KB.
INT NoInt
Interupsi 20h berfungsi untuk mengakhiri program dan
segment DATA, CODE dan STACK. Pada program EXE, kita tidak perlu menggunakan perintah:ORG 100h, karena program EXE bisa menempatkan dirinya pada alamat yang telah ditentukan. Pada program EXE, register segment CS dan SS diinialisasi secara otomatis, tetapi register segment DS dan ES tidaklah demikian. Register segment DS dan ES pada awalnya menunjuk pada awal program, yaitu PSP. Karenanya register DS perlu kita inialisasi secara manual agar menunjuk pada segment data melalui perintah: MOV AX,@DATA MOV DS,AX
dengan interupsi 20h, pada program EXE interupsi 20h tidak bisa digunakan. Pada program EXE digunakan interupsi 21h fungsi 4Ch dengan register AL berisi kode return. Interupsi 21h fungsi 4Ch ini lebih fleksibel untuk digunakan, karena selain kontrol akan dikembalikan kepada DOS, file-file yang terbuka juga akan ditutup oleh fungsi ini. Link Interrupt