MEMULAI MEMPROGRAM DI DOS Tools yang perlu digunakan: Sistem operasi Microsoft DOS yang dilengkapi dengan debug.exe atau debug.com Turbo Assembler (TASM) atau Microsfot Macro Assembler (MASM) Turbo debugger
Struktur Assambler Bahasa asembler memiliki struktur [instruction] [parameter] [comments] perintah (instruction) adalah kode yang akan dieksekusi oleh mesin, instruction ada yang memiliki parameter ada yang tidak. Comments adalah komentar yang dapat ditambahkan pada source code kita untuk memperjelas kode yang kita buat, kometar ni ditandai dengan awalan " ; "
Menggunakan Debug dari DOS Debug haya dapat membuat file .COM dan tebatas sampai berukuran 64 kb dan memulai programnya pada segmen memory yang khusus yaitu dengan offset 0100h Dengan debug kita dapat melihat nilai pada internal register dalam CPU. Operasi/perintah pada debug: A
= Assemble symbolic instructions into machine code
D
= Display the contents of an area of memory
E
= Enter data into memory, beginning at a specific location
G
= Run the executable program in memory
N
= Name a program
P
= Proceed, or execute a set of related instructions
Q
= Quit the debug program
R
= Display the contents of one or more registers
T
= Trace the contents of one instruction
U
= Unassembled machine code into symbolic code
W
= Write a program onto disk
Untuk memulai debug ketikan perintah debug pada promt DOS anda: C:\>debug [Enter] Seteleh masuk program debug, anda akan mendapatkan prompt dengan tanda Ketikan r untuk melihat isi register pada CPU -r [Enter] maka akan terlihat isi dari register pada CPU sepeti berikut: AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B15 ES=0B15 SS=0B15 CS=0B15 IP=0100 NV UP EI PL NZ NA PO NC 0B15:0100 09E8
OR
AX,BP
Untuk melihat register khusus misalnya DX saja, maka anda dapat memberikan perintah "r" diikuti dengan option yang nenunjukan register yang ingin dilihat isinya
-rdx [Enter] DX 0000 : sekarang prompt anda berganti menjadi ":" bukan "-" untuk melihat register lain kita hanya perlu menuliskan registernya setelah prompt ":" lalu enter, untuk melihat nilai register yang sebelumnya kita hanya perlu menekan enter, tanpa perlu menuliskan alamat registernya.
Membuat program asembler sederhana dengan debug Untuk "menyiapkan" (assamble) suatu program dalam debug kita menggunakan perintah "a" diikuti dengan parameter yang berupa offset dari register yang ditunjukan oleh CS:IP. Kita akan membuat program .COM yang biasanya diinlisialisasi pada 0100h. Pada saat kita menuliskan perintah asembler maka debug akan memberikan alamt register diawal baris berformat CS:IP. Buatlah program kecil dengan mengetikan perintah berikut pada prompt debug kita: a 100[enter] mov ax,0002[enter] mov bx,0004[enter] add ax,bx[enter] nop[enter][enter] program ini melakukan penyimpanan nilai 0002 pada register AX, kemudian menyimpan nilai 0004 ke register BX, menambahkan nilai di register BX dengan nilai di register AX dan menyimpan hasilnya ke register AX, dan terakhir perintah "nop" (no operation)untuk mengakhiri program.
Kita akan mendapatkan hasil di layar seperti ini: C:\>debug -a 100 0B15:0100 mov ax,0002 0B15:0103 mov bx,0004 0B15:0106 add ax,bx 0B15:0108 nop 0B15:0109 untuk melihat hasil (men-trace) program dalam tiap-tiap sterp instruksi maka kita dapat memberikan perintah "t" pada promt debug -t AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B15 ES=0B15 SS=0B15 CS=0B15 IP=0103 NV UP EI PL NZ NA PO NC 0B15:0103 BB0400
MOV
BX,0004
-t AX=0002 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B15 ES=0B15 SS=0B15 CS=0B15 IP=0106 NV UP EI PL NZ NA PO NC 0B15:0106 01D8
ADD
AX,BX
-t AX=0006 BX=0004 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0B15 ES=0B15 SS=0B15 CS=0B15 IP=0108 NV UP EI PL NZ NA PE NC 0B15:0108 90
-
NOP
terlihat bahwa pada register AX dihasilkan nilai 0006 yang merupakan penambahan dari register BX dan register AX sebelumnya (0004 + 0002) Untuk menyimpan program tersebut dalam file .COM maka pertama kita tentukan dulu besarnya file yang berisi perintah2 tersebut, dengan perintah "h" yang diikuti parameter address akhir dari intruksi (0109) dan address awal intruksi (0100) -h 0109 100 0209 0009 besarnya file yang diperlukan adalah nilai kedua dari hasil perintah tersebut yaitu 0009. Langkah kedua adalah memberinama program yaitu dengan perintah "n" diikuti dengan nama file. -n coba.com Informasi besarnya suatu file disimpan pada register CX, untuk itu kita perlu menuliskan besarnya file ini pada register tersebut hal ini bisa dilakukan dengan perintah "rcx" -rcx CX 0000 :0009 untuk melihat berapa besar file yang telah kita buat dan disimpan gunakan perintah "w" -w Writing 00009 bytes
untuk keluar dari program debug gunakan perintah "q" atau "quit" Sekarang cobalah untuk menjalankan program coba.com kita, dengan mengetik coba atau coba.com pada prompt dos C:\>coba.com kita akan mendapatkan pesan error, hal ini karena program kita diakhiri dengan perintah yang salah yaitu "nop" Perintah dalam program dos yang akan dijalankan harus diakhiri dengan interrupt 20h yaitu dengan perintah "int 20" Cobalah ganti perintah "nop" dengan "int 20" lalu save dan coba jalankan, sekarang program kita akan jalan tanpa pesan error dan tanpa output apa-apa (karena memang kita tidak membuat program yang menghasilkan putput).
Men-debug Program yang sudah ada/jadi Untuk mendebug program yang sudah ada misalnya coba.com tadi, maka load file dengan perintah debug dengan paramater nama file yang akan di"debug" C:\>debug coba.com cara lain adalah dengan masuk program debug kemudian memberinama file program yang akan didebug kemuadian me-load file tersebut dengan perintah "l": C:\>debug -n coba.com -l -u 0100 0109 0B89:0100 B80200
MOV
AX,0002
0B89:0103 BB0400
MOV
0B89:0106 01D8
ADD
0B89:0108 CD20
INT
BX,0004 AX,BX 20
Perintah terakhir "u" yang diikuti dengan awal address register dan akhir register adalah untuk melihat perintah pada file program coba.com pada range address tersebut. Pada kolom ketiga dari ouput perintah tersebut adalah kode bahasa mesin representasi dari instruksi asemblernya.