งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Suthida Chaichomchuen

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Suthida Chaichomchuen"— ใบสำเนางานนำเสนอ:

1 Suthida Chaichomchuen std@kmitnb.ac.th
DEBUG PROGRAM Suthida Chaichomchuen

2 DEBUG Program? เป็นโปรแกรมที่ใช้สำหรับตรวจสอบหาข้อผิดพลาดของโปรแกรม โดยจะแสดงรหัสในรูปแบบของเลขฐาน 16 และข้อมูลที่จะใส่เข้าไปก็ต้องเป็นเลขฐาน 16 ด้วย และยังสามารถ Run โปรแกรมในโหมดของการทำงานทีละขั้นได้

3 DEBUG allows ... View memory Enter programs in memory
Trace their execution

4 Rule of DEBUG Command DEBUG จะไม่สนใจตัวอักษรเล็กหรือใหญ่ โดยจะถือว่าเป็นตัวเดียวกัน เมื่อต้องการแยกค่า Parameter ออกจากคำสั่งให้ใส่เพียงช่องว่างเท่านั้น การอ้างถึง Segment และ Offset ต้องเขียนให้อยู่ในรูปแบบคือ Segment:Offset

5 Rule . . . DEBUG จะถือว่าตัวเลขทุกตัวเป็นเลขฐาน 16 หมด

6 DEBUG Commands A-Assemble C-Compare D-Display/Dump E-Enter F-Fill

7 Commands . . . G-Go H-Hexadecimal I-Input L-Load M-Move

8 Commands . . . N-Name O-Output P-Proceed Q-Quit R-Register

9 Commands . . . S-Search T-Trace U-Unassemble W-Write

10 The DEBUG Display The display consists of 3 parts :
Left : Hex Address [segment:offset] Center : Hexadecimal representation Right : ASCII representation Displays 8 lines of data (16 bytes/line) A hyphen (-) separates in each 8 bytes

11 Starting DEBUG C:\DEBUG <Enter> - (hyphen) - ? (help)

12 Q-Quit เป็นคำสั่งสำหรับออกจากโปรแกรม DEBUG โดยจะไม่มีการบันทึกไฟล์ก่อนออก มีรูปแบบคำสั่งคือ Q <Enter>

13 D-Display/Dump เป็นคำสั่งที่ใช้แสดงข้อมูลบางส่วนของหน่วยความจำในรูปแบบของ Hex และ ASCII รีจิสเตอร์ที่กำหนดเริ่มต้นคือ DS โดยมีรูปแบบคำสั่งคือ D [address] or D [range]

14 D : Example D 200 D แสดงค่าที่ DS:200H จำนวน 80H bytes (128 bytes)

15 D : Example D CS:150 D DS:20 L5 D 300 32C
แสดงค่าที่ CS:150H จำนวน 80H bytes D DS:20 L5 แสดงค่าที่ DS:20H จำนวน 5 bytes D C แสดงค่าที่หน่วยความจำ 300 จนถึง 32C

16 D : Checking System Equipment
Location 410H-411H D 40:10

17 D : Checking System Equipment
15,14 : Number of parallel printer ports attached 11-9 : Number of serial ports attached 7,6 : Number of diskette devices 5,4 : Initial video mode 1 : 1=math coprocessor is present 0 : 1=diskette drive present

18 D : Checking Memory Size
Location 413H-414H D 40:13

19 D : Checking Serial Number & Copyright Notice
Location FE000H D FE00:0

20 D : Checking ROM BIOS Date
Location FFFF5H D FFFF:5

21 D : Checking Model ID Location FFFFEH D FFFF:E

22 D : Checking Model ID Number of model IDs: F8 : PS/2 models 70 and 80
FA : PS/2 model 30 FB : PC-XT (1986) FC : PC-AT (1984), PC-XT model 286, PS/2 models 50 and 60, etc. FE : PC-XT (1982), portable (1982) FF : Original IBM PC

23 E-Enter เป็นคำสั่งสำหรับใส่ข้อมูลหรือคำสั่งเครื่องลงในหน่วยความจำ รีจิสเตอร์ที่กำหนดเริ่มต้นคือ DS โดยมีรูปแบบคำสั่งคือ E address [list]

24 E : Example E 105 13 3A 21 E CS:211 21 2A E 110 ‘anything’
ใส่ค่าที่ DS:105H จำนวน 3 bytes E CS: A ใส่ค่าที่ CS:211H จำนวน 2 bytes E 110 ‘anything’ ใส่ข้อความโดยเริ่มต้นที่ DS:110H

25 E : Example E 12C แสดงข้อมูลที่ DS:12CH

26 R-Register เป็นคำสั่งที่ใช้แสดงข้อมูลของรีจิสเตอร์และคำสั่งต่อไป มีรูปแบบคำสั่งคือ R [Registername]

27 R : Example R R DX R IP R F

28 R : Example FLAG NAME SET CLEAR OVERFLOW OV NV DIRECTION DN UP
INTERRUPT EI DI SIGN NG(-) PL(+)

29 R : Example FLAG NAME SET CLEAR ZERO ZR NZ AUXILLIARY AC NA
PARITY PE PO CARRY CY NC

30 T-Trace เป็นคำสั่งที่จะ Execute โปรแกรมที่ละ Step คู่ของรีจิสเตอร์ที่กำหนดคือ CS:IP มีรูปแบบคำสั่งคือ T [=address] [value]

31 T : Example T T 10 T =100 5

32 Machine Language Example I : Immediate data
Machine Instruction Symbolic Code B MOV AX,0123 ADD AX,0025 8BD8 MOV BX,AX 03D8 ADD BX,AX 8BCB MOV CX,BX 2BC8 SUB CX,AX 2BC0 SUB AX,AX 90 NOP

33 Keying in Program Instructions
E CS:100 B E CS:106 8B D D8 8B CB E CS:10C 2B C8 2B C0 90

34 Executing Program Instructions

35 Machine Language Example II : Defines data
DS OFFSET HEX CONTENTS 0200H H 0202H H 0204H H 0206H 2A2A2AH

36 Machine Language Example II . . .
Machine Instruction Symbolic Code A MOV AX,[0200] ADD AX,[0202] A MOV [0204],AX 90 NOP

37 Keying in Program Instructions & Data
E CS:100 A E CS:107 A E DS: E DS: A 2A 2A

38 Display Memory Contents
To view the code: D CS:100,10A To view the data: D DS:200,208

39 A-Assemble เป็นคำสั่งที่ใช้แปลคำสั่งภาษาแอสเซมบลีให้เป็นภาษาเครื่อง เหมาะสำหรับการเขียนและทดสอบโปรแกรมภาษาแอสเซมบลีแบบสั้น ๆ โดยค่าเริ่มต้นของแอดเดรสจะเริ่มที่ CS:0100H เสมอ

40 A : Example A A 100 A 104

41 A : Example A 100 MOV CL,42 MOV DL,2A ADD CL,DL NOP

42 U-Unassemble เป็นคำสั่งที่ตรงข้ามกับคำสั่ง A คือจะแปลภาษาเครื่องให้ป็นภาษาแอสเซมบลี คู่ของรีจิสเตอร์ที่กำหนดคือ CS:IP มีรูปแบบคำสั่งคือ U [address] or U [range]

43 U : Example U U 100 U 100,106

44 F-Fill เป็นคำสั่งที่นำค่าคงที่ ไปใส่ในขอบเขตของหน่วยความจำที่กำหนด รีจิสเตอร์ที่กำหนดเป็นค่าเริ่มต้นคือ DS โดยมีรูปแบบคำสั่งคือ F range list

45 F : Example F 210 L19 ‘Help!’ F 210 229 ‘Help!’
กำหนดโดยใช้ Length คือ 19H (25) F ‘Help!’ กำหนดโดยใช้ Range 210H ถึง 229H

46 H-Hexadecimal เป็นคำสั่งที่ใช้แสดงค่าผลบวก และผลต่างของเลขฐาน 16 สองค่า กำหนดค่าได้สูงสุดคือ 4 หลัก โดยมีรูปแบบคำสั่งคือ H value1 value2

47 H : Example H 14F 22 ผลลัพธ์คือ 171 (sum) และ 12D (difference)

48 C-Compare เป็นคำสั่งที่ใช้เปรียบเทียบข้อมูลในหน่วยความจำ รีจิสเตอร์เริ่มต้นคือ DS โดยมีรูปแบบคำสั่งคือ C [range] [address]

49 C : Example การเขียนคำสั่งสามารถทำได้ 2 วิธี
เปรียบเทียบข้อมูลทั้งหมด 10H bytes โดยเริ่มต้นที่ DS:050 กับ DS:200 C 050 L ; เปรียบเทียบโดยการระบุความยาวของหน่วยความจำ C F 200 ; เปรียบเทียบโดยการใช้ช่วง

50 M-Move เป็นคำสั่งเคลื่อนย้าย/คัดลอก ข้อมูลในหน่วยความจำ รีจิสเตอร์ที่กำหนดคือ DS มีรูปแบบคำสั่งคือ M range address

51 M : Example M DS:50 L100 DS:400 M DS:50 150 DS:400
กำหนดขนาดโดยใช้ Length M DS: DS:400 กำหนดขนาดโดยใข้ Range

52 S-Search เป็นคำสั่งที่ใช้ค้นหาตัวอักษรในหน่วยความจำ รีจิสเตอร์ที่กำหนดคือ DS มีรูปแบบคำสั่งคือ S range list

53 S : Example S L “VIRUS” S CS:

54 P-Proceed เป็นคำสั่งที่ใช้ Execute Subroutine CALL, LOOP, INT หรือ REP จนถึงคำสั่งถัดไป มีรูปแบบคำสั่งคือ P [=address] number

55 G-Go เป็นคำสั่งที่ใช้ในการ execute โปรแกรมที่พิมพ์เข้าไป รีจิสเตอร์ที่เป็นค่าเริ่มต้นคือ CS โดยมีรูปแบบคำสั่งคือ G [=address] address [address…] การ execute จะทำจนกระทั่งเจอคำสั่ง INT

56 G : Example A 100 MOV DL,61 MOV AH,2 INT 21 INT 20

57 G : Example G G =

58 N-Name เป็นคำสั่งใช้กำหนดชื่อโปรแกรมหรือไฟล์ที่ต้องการอ่านหรือเขียนบนดิสก์ มีรูปแบบคำสั่งคือ N pathname arglist โดยสามารถอ่านและเขียนไฟล์ได้เมื่อใช้ร่วมกับคำสั่ง L-Load หรือ W-Write

59 N : Example N A:Sam.com

60 W-Write เป็นคำสั่งที่ใช้เขียนไฟล์จาก DEBUG โดยใช้ร่วมกับคำสั่ง N-Name ในการกำหนดชื่อไฟล์ รีจิสเตอร์ที่กำหนดคือ CS มีรูปแบบคำสั่งคือ W [address] [drive] [firstsector] [number] ไฟล์ที่เก็บจะอยู่ในรูปแบบของนามสกุล .COM เท่านั้น

61 W นอกจากนี้สามารถใช้ในรูปแบบที่ไม่มี Operand ได้โดยการใช้คู่ของรีจิสเตอร์ BX:CX เป็นตัวกำหนดขนาดของไฟล์แทน

62 W R BX ; เรียกใช้รีจิสเตอร์ BX 0 ; กำหนด BX=0 N filespec ; ใส่ชื่อไฟล์
R CX ; เรียกใช้รีจิสเตอร์ CX length ; ใส่ขนาดของไฟล์ในรูปแบบของ Hex W ; เขียนไฟล์

63 L-Load เป็นคำสั่ง load File หรือ Disk Sector มาไว้ใน Memory คำสั่งมี 2 รูปแบบคือ 1. เรียก DEBUG พร้อมด้วย ไฟล์.EXE 2. เรียกโดยใช้ร่วมกับคำสั่ง N เมื่ออยู่ในโปรแกรม DEBUG แล้ว

64 L : Example C:\DEBUG SAM.EXE L [address] N c:\sam.exe ; Name of file
L ; Load at CS:100

65 L : Example L [address [drive start number]] L 100 0 20 15
address ; ตำแหน่งหน่วยความจำเริ่มต้นที่ต้องการ Load ข้อมูล (Default คือ CS:100) drive ; กำหนด disk drive (0=A, 1=B etc.) start ; ระบุเซกเตอร์แรกที่จะ Load (default คือ 0) number ; จำนวนของเซกเตอร์ที่ต้องการ Load L

66 I-Input เป็นคำสั่งสำหรับใส่ค่าและแสดงค่า 1 byte จาก Port รูปแบบคำสั่งคือ I portaddress

67 O-Output เป็นคำสั่งใช้ส่งข้อมูล 1 byte ออก Port มีรูปแบบคำสั่งคือ
O port byte

68 INT instruction : Getting the Current Date
MOV AH,2A INT 21 NOP

69 INT : Getting the Current Date
AL: Day of week (0=Sunday) CX: Year (07D0H=2000) DH: Month (01H - 0CH) DL: Day of the month (01H-1FH)

70 INT : Determining the size of memory
NOP AX = The size of base memory

71 INT : Displays data on the screen
100 MOV AH,09 102 MOV DX,108 105 INT 21 107 NOP 108 DB ‘your name’,’$’

72 INT : Keyboard Input 100 MOV AH,10 102 INT 16 104 JMP 100 106 NOP

73 Using the PTR operator 100 MOV AX,[11A] 103 ADD AX,[11C] 107 ADD AX,25
10A MOV [11E],AX 10D MOV WORD PTR [120],25 113 MOV BYTE PTR [122],30

74 PTR operator . . . 118 NOP 119 NOP 11A DB 14,23 11C DB 05,00
11E DB 00,00 120 DB 00,00,00


ดาวน์โหลด ppt Suthida Chaichomchuen

งานนำเสนอที่คล้ายกัน


Ads by Google