DEBUG
TUJUAN :
Mengetahui
dan memahami pengertian debug, langkah – langkah mengaktifkan debug,
menggunakan, dan menerapkan perintah – perintah dasar dari debug sebagai
pengenalan menggunakan beberapa perintah pokok untuk pemrograman assembler.
DASAR TEORI
A.
PENGERTIAN DEBUG
Kata-kata
debug sering ditemukan oleh pengguna komputer, terutama oleh para programmer
yang sedang mengutak-atik program yang dibuatnya. Biasanya kata debug muncul
saat adanya kesalahan dalam pembuatan program ataupun kesalahan dalam
pengetikan kode-kode program. Tidak sedikit dari programmer pemula yang
memahami arti debug walaupun sudah sering menemukannya.
Debug berasal dari kata Bug. Arti bug itu sendiri adalah kutu
atau serangga. Asal kata bug itu sendiri berawal pada sekitar bulan September
1945 Garace Murray Hopper sedang bekerja pada komputernya dan tiba-tiba
komputer tersebut mengalami masalah. Seteah diselidiki, ternyata ada sesuatu
yang aneh pada panel F komputernya dan ternyata itu adalah sebuah serangga
kecil / bug. Sampai sekarang istilah Bug masih digunakan dengan arti
adalah kesalahan pada komputer baik disebabkan oleh software (perangkat lunak)
maupun hardware (perangakt keras) sehingga komputer tidak bekerja sebagaimana
semestinya.
Dari pengertian bug diatas, maka dapat
diartikan Debug adalah proses penanggulangan bug, artinya proses
perbaikan suatu program yang mengalami kerusakan atau jika tidak bisa diperaiki
maka komputer akan mematikan otomatis program tersebut. Debug berfungsi
sebagai alat bantu dalam perancangan peralatan berbasis mikro-prosesor, karena
dapat mencapai tingkat perangkat keras yang paling dalam dari suatu komputer,
misal menulis informasi ke dalam boot sector, direktori, FAT, menjalankan
interupsi BIOS atau DOS.
Hal-hal
penting dalam Debug :
-
Hanya
mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal
-
Bekerja
dengan penunjukan ke alamat-alamat memori memakai format segment : offset.
-
Kemampuan
mengakses daerah “very low level access” (software / hardware).
Setiap jenis komputer (mainframe,
minicomputer, microcomputer) memiliki sarana debugging berbeda.
Langkah
Mengaktifkan DEBUG.EXE / DEBUG.COM
- -
Masuk ke sistem DOS (Command)
ð Klik
Star → Run → ketikkan CMD → enter
- -
Pindah Directory : CD\ lalu enter
- -
Dari C:\>(Prompt C) ketikkan DEBUG
lalu enter
- -
Dengan tanda hypenation (__) maka debug
siap digunakan
Gambar
mengaktifkan Debug
B. PERINTAH DEBUG
1. R
(Register)
Untuk menampilkan informasi komposisi satu atau lebih registers di dalam
mikroprosesor, seperti alamat memori, serta isi dari alamat memori tersebut
yang mungkin berupa instruksi yang akan dilaksanakan oleh komputer,
atau data.
mikroprosesor, seperti alamat memori, serta isi dari alamat memori tersebut
yang mungkin berupa instruksi yang akan dilaksanakan oleh komputer,
atau data.
Contoh:
A:\>DEBUG(enter)
r (enter)
Gambar
perintah Register
AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP
adalah register internal mikroprosesor yang dipakai
dalam CPU. NV, UP, EI, PL, NZ, NA, PO, dan
NC adalah output dari sebuah register yang disebut
register status atau register flag.
Angka 29E7:0100 adalah alamat lokasi memori dengan format
segment:offset. Kedua nilai tersebut
merupakan kombinas antara register CS (Code Segment)
dengan IP (Instruction Pointer). 0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai '01', dan byte ke-2 berisi nilai '14'. Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah yang berdiam pada alamat offset 0100, sedangkan nilai 14 ada di alamat 0101 ADD[SI],DX adalah terjemahan intruksi dari alamat memori bersangkutan.
dengan IP (Instruction Pointer). 0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai '01', dan byte ke-2 berisi nilai '14'. Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah yang berdiam pada alamat offset 0100, sedangkan nilai 14 ada di alamat 0101 ADD[SI],DX adalah terjemahan intruksi dari alamat memori bersangkutan.
Untuk mengubah nilai-nilai register internal dapat
menggunakan perintah:
·
RAX = mengubah nilai
register AX
·
RBX = mengubah nilai
register BX
·
RCX = mengubah nilai
register CX
·
RDX = mengubah nilai
register DX
·
RSP = mengubah nilai
register SP
·
RBP = mengubah nilai
register BP
·
RSI = mengubah nilai
register SI
·
RDI = mengubah nilai
register DI
·
RDS = mengubah nilai
register DS
·
RES = mengubah nilai
register ES
·
RSS = mengubah nilai
register SS
·
RCS = mengubah nilai
register CS
·
RIP =
mengubah nilai register IP
Sebagai contoh untuk mengubah nilai register AX dari
nilai '0000' ke nilai '1111' :
A:\>Debug (enter)
-RAX (enter)
AX 0000
: 1111 (diisi setelah ':' dan enter)
Contoh diatas juga berlaku untuk register internal
lainnya dan untuk diperhatikan bahwa angka-angka yang dimasukkan kedalam
register harus nilai heksadesimal.
2. D (Dump)
Berfungsi untuk melihat isi blok memori.
Contoh :
A:\>Debug (enter)
-d 0100 (enter)
Hasil yang diperoleh :
Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :
-
Bagian kiri :
menampilkan alamat-alamat memori dengan format segment : offset.
-
Bagian tengah :
menampilkan angka-angka dalam heksadesimal sebagai isi dari alamat-alamat
memori.
-
Bagian kanan :
menampilkan kode-kode karakter ASCII sebagai terjemahan dari angka heksadesimal
tersebut.
Debug hanya akan memperlihatkan 96 jenis karakter ASCII
tercetak (printable character), mulai dari nilai desimal 33 - 127. Di luar
nilai itu, karakter yang ditampilkan hanyalah berupa tanda titik (dot atau
period).
Beberapa parameter yang dapat digunakan :
·
L (length /
panjang)
Memiliki arti menampilkan data sepanjang 2 byte, bila
parameter 'L' tidak diberikan, maka otomatis akan ditampilkan 128 byte data.
·
D 0100 L 2 (enter)
Alamat awal - alamat akhir.
·
D 0100 01FF (enter)
Alamat segment : offset.
·
D FFFF:0000
(enter)
Alamat segment : offset sampai segment : offset.
·
D F000:E000
F000:E000 (enter)
3.
U (Unassemble)
Berfungsi untuk menampilkan
listring dari suatu program bahasa mesin.
Contoh :
A:\>Debug (enter)
-U FFFF:0000 (enter)
· U F000:E05B (enter)
4.
E (enter)
Berfungsi untuk mengisi atau
mengubah data dalam memori.
Contoh :
A:\>Debug (enter)-E 0100 (enter)
Hasil :
Setelah angka 01, dapat dimasukkan nilai untuk mengganti
angkat tersebut langsung di belakangnya yang diakhir dengan menekan ENTER atau
menekan SPACE BAR untuk berpindah ke alamat berikutnya atau menekan tanda '-'
(Hyphen) untuk mundur ke lokasi sebelumnya.
5.
F (Fill)
Berfungsi untuk mengisi lokasi memori. Perbedaan dengan
perintah 'E (Enter)', yang menawarkan modifikasi memori secara satu alamt demi
satu alamat, sedang 'F (Fill" untuk mengubah isi alamat memori dalam
jumlah besar, sesuai dengan rentang (range) yang dikehendaki.
Contoh :
Contoh :
A:\>Debug (enter)
-F 0100 017F 58 (enter)
Berarti isilah mulai alamat offset 0100 sampai offset
017F dengan nilai heksa 58 (karakter ASCII 'x').
atau
atau
- F F 0100 017F 'x' (enter)
Beberapa bentuk perintah 'F' :
· F 0100 L 1 41 (enter)
Arti : mulai offset 0100 sebanyak 1 byte diisi dengan
nilai heksa 41 (karakter ASCII 'A').
6.
C (Compare)
Berfungsi untuk membandingkan isi sebuah blok memori
dengan isi blok memori lainnya.Format perintah : C alamat1 panjang alamat2.
Contoh :
A:\>Debug (enter)
-C 0100 L 10 0200 (enter)
Berarti mulai offset 0100 sebanyak 16 byte (10 heksa)
bandingkan dengan offset 0200. Hasil yang dimunculkan hanyalah nilai-nilai yang
berbeda setiap alamat. Apabila dilayar tidak
memberikan reaksi apapun selain kembali ke prompt '-' atau hyphen, berarti
kedua blok memori persis sama.
7.
S (Search)
Berfungsi untuk mencari data baik yang berupa karakter
maupun untaian karakter (string) di dalam suatu blok memori tertentu. Apabila dalam pencarian, data yang dicari diketemukan,
maka akan ditampilkan semua alamat dari data tersebut lengkap dengan nilai
segment dan offsetnya, sebaliknya bila tidak diketemukan akan kembali ke prompt
'-'. Format perintah : S alamat awal panjang
alamat akhir.
Contoh :
A:\>Debug (enter)
-S F000:E000 L FF "IBM" (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari
string "IBM".
-S F000:E000 L FF "A" (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari
string "A".
8. M (Move)
Berfungsi untuk memindahkan atau menyalin data yang ada di
suatu lokasi memori ke alamat memori lainnya. Format perintah : M alamat asal panjang alamat tujuan.
Contoh :
A:\>Debug (enter)
-M 0100 L 7F 0200 (enter)
Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi
memorinya pindahkan atau kopikan ke offset 0200.
KESIMPULAN
Dari pembahasan perintah-perintah DEBUG dapat disimpulkan
bahwa DEBUG dibuat
dengan tujuan untuk dapat mengeksplorasi program-program yang sudah
dibuat berikut segala dampaknya terhadap sistem dan aplikasi,sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang programmerdalam menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.
dengan tujuan untuk dapat mengeksplorasi program-program yang sudah
dibuat berikut segala dampaknya terhadap sistem dan aplikasi,sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang programmerdalam menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.
Tidak ada komentar:
Posting Komentar