ดีบักเป็นเครื่องมืออันหนึ่งที่ให้ผู้ใช้ ตรวจสอบ และแก้ไขค่าใน หน่วยความจำ โหลด เก็บ ตรวจสอบค่าในเรจิสเตอร์ และสามารถ เขียนโปรแกรมแอสเซมบลีได้อย่าง สะดวก ดีบักเป็นซอฟต์แวร์ที่มากับ ระบบปฏิบัติการดอส เป็นไฟล์ประเภท COM ไฟล์ ดังนั้นการเรียกใช้ เพียงแต่ระบุชื่อไฟล์ ( เมื่ออยู่ที่ดอส พร้อมต์ ) ดีบักคือ อะไร
ดังนี้ C:\> debug เมื่อดีบักพร้อมที่จะทำงานจะอยู่ที่ Hyphen Prompt แสดงเครื่องหมาย Hyphen (-) C:\> debug ณ Hyphen Prompt ผู้ใช้ สามารถใช้คำสั่งของดีบักได้ และคำสั่ง ที่ให้ออกจากดีบักคือ Q(Quit) -Q
1. คำสั่งหนึ่งอักขระ (command letter) 2. เลขที่อยู่ (address) 3. ชื่อเรจิสเตอร์ (register name) 4. ชื่อแฟ้มข้อมูล (file name) 5. ชื่อไดรฟ์ (drive name) 6. ข้อมูล (data) ชนิดของข่าวสารที่เป็นส่วน ของคำสั่งดีบัก
1. คำสั่งตรวจสอบและแก้ไขค่าใน หน่วยความจำ 2. คำสั่งเขียนและให้โปรแกรม ทำงาน 3. คำสั่งโหลดและเซฟ แบ่งคำสั่งดีบักใน ได้ 3 กลุ่ม
กลุ่มคำสั่งตรวจสอบ และแก้ไขค่า ในหน่วยความจำนี้ มีความจำเป็นต่อ การตรวจสอบแก้ไขโปรแกรม เช่น อาจ ต้องตรวจสอบค่าในหน่วยความจำก่อน และหลังโปรแกรมทำงาน กลุ่มคำสั่งนี้มี DUMP, ENTER, FILL, MOVE, COMPARE และ SEARCH ชนิดของข่าวสารที่เป็นส่วน ของคำสั่งดีบัก
1. D = dump คำสั่งนี้แสดงข้อมูลบางส่วนใน หน่วยความจำ แสดงไบต์ของหมายเลข รหัสแอสกีและอักขระของรหัสนั้น สามารถระบุเลขที่อยู่เริ่มต้นและเลขที่อยู่ สุดท้ายของหน่วยความจำที่ต้องการ ถ้า ไม่ระบุเลขที่อยู่สุดท้าย
ดีบักจะแสดงให้ 8 แถว แต่ละแถว แสดง 16 ไบต์ ตัวเลขที่แสดงเป็น เลขฐานสิบหก (Hexadecimal) และ ค่าดีฟอลต์ของคำสั่ง DUMP นี้เป็น เซกเมนต์ข้อมูล (Data Segment) รูปแบบคำสั่ง D [starting address] [ending address]
การระบุเลขที่อยู่หน่วยความจำที่ ต้องการทำงานในดีบัก สามารถระบุเป็นเร จิสเตอร์คู่เซกเมนต์และออฟเซต หรือ เพียงระบุเลขที่อยู่เพียงค่าออฟเซต ดีบัก จะใช้เซกเมนต์ด้วยค่าที่เป็นค่าที่กำหนด โดยปริยายหรือค่าดีฟอลต์ (Default) คำสั่งที่จัดการกับข้อมูลในหน่วยความจำ มีดีฟอลต์เซกเมนต์เป็นเซกเมนต์ ข้อมูล (Data Segment)
ดีบักแสดงผลเป็นสามคอลัมน์ คอลัมน์แรกทางซ้ายแสดงเลขที่อยู่ คอลัมน์ที่สองแสดงไบต์ของข้อมูลเป็น เลขฐานสิบหก ค่าหนึ่งไบต์เป็น เลขฐานสิบหกสองหลักจำนวน 16 ไบต์ ต่อแถว คอลัมน์ทางขวาแสดงอักขระ ของรหัสแอสกี (ASCII = American Standard Code for Information Interchange) ของแอสกีของอักขระใน คอลัมน์ที่สอง ซึ่งในบางเลขที่อยู่ แสดงอักขระเป็น dots (.) สำหรับ อักขระเป็น nonprintable เช่น แอสกี หมายเลข 00h และ FFh
2. E = Enter แก้ไขค่าในหน่วยความจำ รูปแบบคำสั่ง E [address] [list] address เลขที่อยู่หน่วยความจำ ที่ต้องการแก้ไขค่า list ชุดของข้อมูลที่ให้ แทนที่ในเลขที่อยู่ที่ระบุ
3. F = fill เติมบางส่วนของหน่วยความจำ เป็นกลุ่มหรือเป็นบล็อกด้วยค่าที่ระบุ รูปแบบคำสั่ง F [starting address] [ending address] [list]
4. M=Move คำสั่งนี้ให้ผู้ใช้ก๊อบปี้บล็อกข้อมูลจาก ตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่งใน หน่วยความจำ รูปแบบคำสั่ง M [starting address] [ending address] [destination address]
5. C=Compare เปรียบเทียบบล็อกข้อมูลสอง บล็อกในหน่วยความจำ รูปแบบคำสั่ง C [starting address] [ending address] [destination]
ผลการโต้ตอบของดีบักเป็นดังนี้ ดีบักจะแสดงหมายเลขที่อยู่และค่าใน ทั้งสองตำแหน่งนั้น ที่พบว่ามีข้อมูลไม่ เหมือนกัน ( ถ้าในบล็อกทั้งสองมีข้อมูล ที่เหมือนกัน ดีบักจะไม่แสดงผลใด ๆ )
6. S=Search ค้นหาข้อมูลในหน่วยความจำ ถ้า ค้นหาพบ ดีบักจะแสดงหมายเลขเลขที่อยู่ ให้ รูปแบบคำสั่ง S [starting address] [ending address] [list]
เรจิสเตอร์ภายในซีพียูเป็นเสมือน ตัวแปรที่มีให้ใช้ แต่เรจิสเตอร์แต่ละ ตัวมีหน้าที่เฉพาะทางอยู่บ้าง และ บางเรจิสเตอร์ก็เปลี่ยนค่าไปอย่าง อัตโนมัติ เช่น IP จะชี้ที่อยู่ของ คำสั่งถัดไปที่จะทำงาน การจัดการกับเรจิ สเตอร์
ในดีบักมีคำสั่งของแสดงค่าในเร จิสเตอร์แต่ละตัว และ ผู้ใช้สามารถ แก้ไขค่าในเรจิสเตอร์ได้ด้วยคำสั่ง R (Register) การแก้ไขค่าในเรจิสเตอร์ ใช้คำสั่ง R ตามด้วยชื่อเรจิสเตอร์ที่ ต้องการ
เช่น RAX หมายถึงต้องการแก้ไขค่า ของเรจิสเตอร์ AX โดยดีบักจะแสดง ค่าของเรจิสเตอร์นั้น และยอมให้ผู้ใช้ ป้อนเข้าค่าใหม่ลงไปได้ -rax AX 0000 ค่าเดิม : ป้อนเข้าค่า ใหม่