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

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

1 DEBUG PROGRAM Suthida Chaichomchuen

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


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

1 1 DEBUG PROGRAM Suthida Chaichomchuen

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

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

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

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

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

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

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

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

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

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

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

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

14 14 D : Example  D 200 แสดงค่าที่ DS:200H จำนวน 80H bytes (128 bytes) แสดงค่าที่ DS:200H จำนวน 80H bytes (128 bytes) DDDD แสดงค่าโดยเริ่มต้นที่หน่วยความจำ สุดท้ายที่แสดงเป็นขนาด 80H bytes แสดงค่าโดยเริ่มต้นที่หน่วยความจำ สุดท้ายที่แสดงเป็นขนาด 80H bytes

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

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

17 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 18 D : Checking Memory Size  Location 413H-414H  D 40:13

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

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

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

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

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

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

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

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

27 27 R : Example RRRR  R DX  R IP  R F

28 28 R : Example  FLAG NAMESET CLEAR OVERFLOWOVNVOVERFLOWOVNV DIRECTIONDNUPDIRECTIONDNUP INTERRUPTEIDIINTERRUPTEIDI SIGNNG(-)PL(+)SIGNNG(-)PL(+)

29 29 R : Example  FLAG NAMESET CLEAR ZEROZRNZZEROZRNZ AUXILLIARYACNAAUXILLIARYACNA PARITYPEPOPARITYPEPO CARRYCYNCCARRYCYNC

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

31 31 T : Example TTTT  T 10  T =100 5

32 32 Machine Language Example I : Immediate data Machine InstructionSymbolic Code B82301MOV AX, ADD AX,0025 8BD8MOV BX,AX 03D8ADD BX,AX 8BCBMOV CX,BX 2BC8SUB CX,AX 2BC0SUB AX,AX 90NOP

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

34 34 Executing Program Instructions  R  T

35 35 Machine Language Example II : Defines data DS OFFSETHEX CONTENTS 0200H2301H 0202H2500H 0204H0000H 0206H2A2A2AH

36 36 Machine InstructionSymbolic Code A10002MOV AX,[0200] ADD AX,[0202] A30402MOV [0204],AX 90NOP Machine Language Example II...

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

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

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

40 40 A : Example AAAA  A 100  A 104

41 41 A : Example  A 100 MOV CL,42MOV CL,42 MOV DL,2AMOV DL,2A ADD CL,DLADD CL,DL NOPNOP

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

43 43 U : Example UUUU  U 100  U 100,106

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

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

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

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

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

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

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

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

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

53 53 S : Example  S 300 L 2000 “VIRUS”  S CS:

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

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

56 56 G : Example  A 100 MOVDL,61MOVDL,61 MOVAH,2MOVAH,2 INT21INT21 INT20INT20

57 57 G : Example GGGG  G =

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

59 59 N : Example  N A:Sam.com

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

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

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

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

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

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

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

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

68 68 INT instruction : Getting the Current Date MOVAH,2A INT21 NOP

69 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 70 INT : Determining the size of memory INT12 NOP AX = The size of base memory

71 71 INT : Displays data on the screen 100MOVAH,09 102MOVDX, INT21 107NOP 108DB‘your name’,’$’

72 72 INT : Keyboard Input 100MOVAH,10 102INT16 104JMP NOP

73 73 Using the PTR operator 100MOVAX,[11A] 103ADDAX,[11C] 107ADDAX,25 10AMOV[11E],AX 10DMOVWORD PTR [120],25 113MOVBYTE PTR [122],30

74 74 PTR operator NOP 119NOP 11ADB14,23 11CDB05,00 11EDB00,00 120DB00,00,00


ดาวน์โหลด ppt 1 DEBUG PROGRAM Suthida Chaichomchuen

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


Ads by Google