E N D
ดีบักคืออะไร ดีบักเป็นเครื่องมืออันหนึ่งที่ให้ผู้ใช้ตรวจสอบและแก้ไขค่าในหน่วยความจำ โหลดเก็บ ตรวจสอบค่าในเรจิสเตอร์และสามารถเขียนโปรแกรมแอสเซมบลีได้อย่างสะดวกดีบักเป็นซอฟต์แวร์ที่มากับระบบปฏิบัติการดอส เป็นไฟล์ประเภท COMไฟล์ ดังนั้นการเรียกใช้เพียงแต่ระบุชื่อไฟล์ (เมื่ออยู่ที่ดอสพร้อมต์)
ดังนี้C:\> debug เมื่อดีบักพร้อมที่จะทำงานจะอยู่ที่ Hyphen Prompt แสดงเครื่องหมาย Hyphen (-) C:\> debug ณ Hyphen Prompt ผู้ใช้สามารถใช้คำสั่งของดีบักได้และคำสั่งที่ให้ออกจากดีบักคือ Q(Quit) -Q
ชนิดของข่าวสารที่เป็นส่วนของคำสั่งดีบักชนิดของข่าวสารที่เป็นส่วนของคำสั่งดีบัก • 1. คำสั่งหนึ่งอักขระ (command letter) • เลขที่อยู่ (address) • 3. ชื่อเรจิสเตอร์ (register name) • 4. ชื่อแฟ้มข้อมูล (file name) • 5. ชื่อไดรฟ์ (drive name) • 6. ข้อมูล (data)
แบ่งคำสั่งดีบักในได้ 3 กลุ่ม • 1. คำสั่งตรวจสอบและแก้ไขค่าในหน่วยความจำ • คำสั่งเขียนและให้โปรแกรมทำงาน • คำสั่งโหลดและเซฟ
ชนิดของข่าวสารที่เป็นส่วนของคำสั่งดีบักชนิดของข่าวสารที่เป็นส่วนของคำสั่งดีบัก กลุ่มคำสั่งตรวจสอบและแก้ไขค่าในหน่วยความจำนี้ มีความจำเป็นต่อการตรวจสอบแก้ไขโปรแกรมเช่นอาจต้องตรวจสอบค่าในหน่วยความจำก่อน และหลังโปรแกรมทำงาน กลุ่มคำสั่งนี้มี 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 ค่าเดิม : ป้อนเข้าค่าใหม่