Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
30
Dung lượng
5,78 MB
Nội dung
22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 1 1 CH CH ệ ệ ễNG TRèNH Gễế RO ễNG TRèNH Gễế RO I DEBUG I DEBUG Dũch Dũch ủử ủử ụ ụ ù ù c 1 ch c 1 ch ử ử ụng tr ụng tr ỡ ỡ nh nga nh nga ộ ộ n n Muùc tieõu Xem ca Xem ca ự ự c thanh ghi va c thanh ghi va ứ ứ cụ cụ ứ ứ cu cu ỷ ỷ a CPU a CPU Xem s Xem s ửù ửù thay thay ủ ủ o o ồ ồ i no i no ọ ọ i dung cu i dung cu ỷ ỷ a ca a ca ự ự c bie c bie ỏ ỏ n n D o D o ứ ứ t t ỡ ỡ m t r ũ ụ m t r ũ ụ ỷ ỷ d a d a ù ù n g n h ũ p h a õ n h o a n g n h ũ p h a õ n h o a ở ở c A S C II t r o n g b o c A S C II t r o n g b o ọ ọ n h ụ n h ụ ự ự H o ó H o ó t r ụ ù l u y e ọ n t a ọ p v i e ỏ t c h ử ụ n g t r ỡ n h b a ố n g A s s e m b l y 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 2 2 Da Da ï ï ng le ng le ä ä nh cu nh cu û û a Debug a Debug <mã le <mã le ä ä nh > <thông so nh > <thông so á á > > Trong đó mã lệnh là 1 trong các chữ A,B,C,D,E, còn thông số thì thay đổi tùy theo lệnh. Các thông số có thể là : Đòa chỉ : là 1 bộ đòa chỉ đầy đủ segment : offset hay chỉ cần offset là đủ. Segment có thể dùng tên thanh ghi. Ex : F000:0100 DS: 200 0AF5 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 3 3 Da Da ï ï ng ng le le ä ä nh cu nh cu û û a Debug a Debug Tập tin : là 1 tham khảo tên tập tin đầy đủ, ít nhất phải có tên tập tin. Danh sách : Là 1 hay nhiều trò byte hoặc chuổi cách nhau bằng dấu phẩy. Khoảng : là 1 tham khảo đến vùng bộ nhớ Trò : là 1 số hệ 16 có tối đa có 4 chữ số 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 4 4 Ta Ta ọ ọ p le p le ọ ọ nh cu nh cu ỷ ỷ a Debug a Debug A <Assemble> : A <Assemble> : cho phe cho phe ự ự p vie p vie ỏ ỏ t t t t ửứ ửứ ba ba ứ ứ n ph n ph ớ ớ m ca m ca ự ự c le c le ọ ọ nh maừ ma nh maừ ma ự ự y y d d ử ử ụ ụ ự ự i da i da ù ù ng gụ ng gụ ù ù i nhụ i nhụ ự ự . . A [ < A [ < ủ ủ ũa ch ũa ch ổ ổ >] >] Ex : Ex : - - A 100 dũch ụ A 100 dũch ụ ỷ ỷ ủ ủ ũa ch ũa ch ổ ổ CS:100h CS:100h - - A A dũch ụ dũch ụ ỷ ỷ ủ ủ ũa ch ũa ch ổ ổ hie hie ọ ọ n ta n ta ù ù i i (Debug la (Debug la ỏ ỏ y y ủ ủ ũa ch ũa ch ổ ổ ủ ủ oa oa ù ù n CS) n CS) - - A DS:2000h A DS:2000h dũch ụ dũch ụ ỷ ỷ ủ ủ ũa ch ũa ch ổ ổ DS:2000h DS:2000h 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 5 5 T T h h ớ ớ du du ù ù minh ho minh ho ù ù a le a le ọ ọ nh A nh A Pha Pha ỷ ỷ i nha i nha ọ ọ p le p le ọ ọ nh va nh va ứ ứ o theo t o theo t ửứ ửứ ng do ng do ứ ứ ng mo ng mo ọ ọ t va t va ứ ứ ke ke ỏ ỏ t thu t thu ự ự c ba c ba ố ố ng Enter. ng Enter. Ke Ke ỏ ỏ t thu t thu ự ự c nha c nha ọ ọ p nha p nha ỏ ỏ n Enter ụ n Enter ụ ỷ ỷ do do ứ ứ ng tro ng tro ỏ ỏ ng. ng. Ex : Ex : - - A 100 A 100 5514:0100 MOV AH, 2 5514:0100 MOV AH, 2 5514:0102 MOV DL, 41 5514:0102 MOV DL, 41 5514:0104 INT 21H 5514:0104 INT 21H SEGMENT OFFSET User goỷ vaứo 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 6 6 C (Compare) C (Compare) So sa So sa ù ù nh 2 vu nh 2 vu ø ø ng bo ng bo ä ä nhơ nhơ ù ù va va ø ø lie lie ä ä t kê ca t kê ca ù ù c ô nhơ c ô nhơ ù ù co co ù ù no no ä ä i dung kha i dung kha ù ù c nhau. c nhau. Cú pháp : C <khoảng> , < đòa chỉ> Ex : - C 100, 200, 3000 : 1000 So sánh ô nhớ DS:100h với ô nhớ 3000:1000h, ô nhớ DS:101h với ô nhớ 3000:1001h… Cho đến ô nhớ DS :200h với ô nhớ 3000:1100h. So sánh 101 bytes 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 7 7 D (Dump) D (Dump) Hie Hie ọ ọ n no n no ọ ọ i dung bo i dung bo ọ ọ nhụ nhụ ự ự theo da theo da ù ù ng he ng he ọ ọ 16 va 16 va ứ ứ ASCII ASCII . . Caựch goùi : D <khoaỷng> Ex : - D F000 : 0 - D ES : 100 - D 100 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 8 8 Le Le ä ä nh F ( nh F ( Fill) Fill) Cu Cu ù ù pha pha ù ù p : F <khoa p : F <khoa û û ng> <danh sa ng> <danh sa ù ù ch> ch> Công du Công du ï ï ng : la ng : la á á p p đ đ a a à à y trò va y trò va ø ø o vu o vu ø ø ng nhơ ng nhơ ù ù ngay ngay ta ta ï ï i i đ đ òa ch òa ch ỉ ỉ mong muo mong muo á á n. n. Trò nhập vào từng byte một theo hệ 16 Dấu trừ (-) dùng để lùi lại 1 đòa chỉ. SPACE BAR dùng để tới 1 đòa chỉ. ENTER để kết thúc. 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 9 9 Minh ho Minh ho ï ï a le a le ä ä nh nh F F La La é é p p ñ ñ a a à à y vu y vu ø ø ng nhô ng nhô ù ù ta ta ï ï i i ñ ñ òa ch òa ch æ æ offset 100h offset 100h chuo chuo å å i i “ “ Toi dua em sang song Toi dua em sang song ” ” . . F 100 “TOI DUA EM SANG SONG” OFFSET 100H 22/08/2011 22/08/2011 Chuong 3 Debug Chuong 3 Debug 10 10 KE KE Á Á T QUA T QUA Û Û -F 100 "TOI DUA EM SANG SONG" -D 100 0ADD:0100 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 TOI DUA EM SANG 0ADD:0110 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI DUA EM S 0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 ANG SONGTOI DUA 0ADD:0130 45 4D 20 53 41 4E 47 20-53 4F 4E 47 54 4F 49 20 EM SANG SONGTOI 0ADD:0140 44 55 41 20 45 4D 20 53-41 4E 47 20 53 4F 4E 47 DUA EM SANG SONG 0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 TOI DUA EM SANG 0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI DUA EM S 0ADD:0170 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 ANG SONGTOI DUA [...]... vector ngắt quãng 0000:0000 ng Gỏ vào máy bằng lệnh A, đoạn chương trình sau ở đòa ng nh chỉ 2000:0100 22/08/2011 Chuong 3 Debug 28 Summary 2000:0100 MOV AL ,32 2000:0102 MOV AH, 4F 2000:0104 MOV CX, [200] 2000:0108 MOV WORD PTR [1800], 1 2000:010E MOV BYTE PTR [1800], 1 2000:01 13 Xem lại đoạn chương trình vừa đánh trên bằng lệnh U Chú ý quan nh ng nh sát phần mã máy Tìm xem các toán hạng tức thời và... Ex : - S 100 L 1000 ‘DOS’ 18AF : 0154 18AF : 08 23 Ex2 : - S 2000 2200 13, 15,8A, 8 22/08/2011 Chuong 3 Debug 24 Lệnh M (Move) nh Công dụng : chép nội dung vùng nhớ đến 1 ng ng đòa chỉ khác c Cú pháp : - M ng> Ex : - M 100 105 200 Chép 5 bytes từ DS:100 đến DS:200 Ex2 : - M CS:100 L 50 ES :30 0 Chép 50 bytes từ CS:100 đến ES :30 0 22/08/2011 Chuong 3 Debug 25 Lệnh I (Input) nh Công dụng : nhập 1... dùng để kết thúc 22/08/2011 Chuong 3 Debug 13 Minh họa lệnh E nh Mục dích : thay đổi nội dung bộ nhớ Cú pháp : - E [address] [ list] Ex : thay đổi 6 bytes bắt đầu ở đòa chỉ 100 thành “ABCDE” - E 100 “ABCDE” Debug lấy đoạn chỉ b ơ ûi D S Nếu ta kh ông qui đò nh đòa chỉ đoạn 22/08/2011 Chuong 3 Debug 14 Lệnh U (Unassemble) công dụng : in ra 32 bytes mã máy của ng chương trình trong bộ nhớ ra màn hình dưới... hình Cú pháp : - I ng> đòa chỉ cổng là số hệ 16 tối đa 4 chữ số ng Ex : - I 37 E EC 22/08/2011 Chuong 3 Debug 26 Lệnh O (Output) nh Công dụng : xuất 1 byte ra cổng xuất nhập ng ng p Cú pháp :- O ng> đòa chỉ cổng là số hệ 16 tối đa 4 chữ số ng Ex : - O 37 8 5E 22/08/2011 Chuong 3 Debug 27 Summary Dùng lệnh D để xem nội dung vùng nhớ tại đòa chỉ của ng nh ng ROM BIOS F000:0000... nội dung vùng nhớ 16 bytes bắt đầu ở đòa chỉ F000:100 - D F000:100 L10 22/08/2011 Chuong 3 Debug 11 Thí dụ minh họa lệnh D nh đánh vào lệnh D để xem nội dung vùng nhớ nh nh ng của 30 h bytes bộ nhớ từ đòa chỉ 0000:0040 đến 0000:006F - D 0000:0040 006F Đòa chỉ bắt đầu - D 0000:0040 L 30 Số bytes 22/08/2011 Chuong 3 Debug 12 E (ENTER) Dùng để đưa dữ liệu byte vào bộ nhớ ngay ng tại đòa chỉ mong muốn n... dùng để đọc sector luận lý trên đóa vào bộ nhớ Đóa : = 0 ổ đóa A, =1 ổ đóa B, =2 ổ đóa C … 22/08/2011 Chuong 3 Debug 22 Lệnh H (Hex Arithmethic) nh thực hiện phép cộng và trừ hệ 16 ng Cú pháp : - H Kết quả : hiện ra tổng và hiệu của trò 1 và trò 2 22/08/2011 Chuong 3 Debug 23 Lệnh S (Search) nh Công dụng : tìm kiếm trò trong 1 vùng bộ nhớ ng ng Cú pháp : - S ng>... Ex : U 100 119 In ra m a øn hình c a ùc chỉ CS:1 lệnh mã máy tư 00 đế n C ø đ òa S : 119 22/08/2011 Chuong 3 Debug 15 Lệnh R (Register) nh Công dụng : xem và sửa nội dung thanh ghi ng Cú pháp : - R enter (xem tất cả thanh ghi) xem thanh ghi AX : - R AX xem thanh ghi cờ : R F Ex : muốn bật thanh ghi cờ CF và ZF ta nhập CY và ZR 22/08/2011 Chuong 3 Debug 16 Lệnh N (Name) nh Công dụng : tạo tập tin cần... 2 thanh ghi BX và CX Cụ thể trong trường hợp này số byte cần ghi là 1Eh byte BX = 0000 CX = 1E Dùng lệnh W 2000:100 để ghi dữ liệu đã nhập vào tập tin ở đòa chỉ bộ nhớ 2000:100 22/08/2011 Chuong 3 Debug 18 Thoát khỏi Debug và gọi lại tập tin theo cách sau : C :\> Debug Love.txt tìm xem Debug đã nạp tập tin Love.txt vào chỗ nào trong bộ nhớ 22/08/2011 Chuong 3 Debug 19 Lệnh W (Write) nh Cú pháp : W... đầu là 100 22/08/2011 Chuong 3 Debug 20 Lệnh T (Trace)và P nh cú pháp : - T [= ][số lần] n] Mục đích : dùng để chạy 1 hay nhiều lần các lệnh trong bộ nhớ Ex : - T = 30 00:1000 Ex : - T = 30 00:1000 22/08/2011 Chuong 3 Debug 21 Lệnh L (Load) nh nạp tập tin hoặc nạp sector luận lý từ đóa vào bộ nhớ Cú pháp : - L [ ] Dạng 1 : nếu chỉ có đòa chỉ dùng để nạp tập tin... đánh trên bằng lệnh U Chú ý quan nh ng nh sát phần mã máy Tìm xem các toán hạng tức thời và các đòa y ng chỉ xuất hiện ở đâu trong phần mã máy của lệnh nh Phần mã máy của 2 câu lệnh cuối có gì khác nhaukhi dùng các nh ng toán tử WORD PTR và BYTE PTR 22/08/2011 Chuong 3 Debug 29 Summary Dùng lệnh E nhập vào đoạn văn bản sau vào bộ nhớ tại đòa chỉ ng nh DS:0100 8086/8088/80286 Assembly language Copyright . 200, 30 00 : 1000 So sánh ô nhớ DS:100h với ô nhớ 30 00:1000h, ô nhớ DS:101h với ô nhớ 30 00:1001h… Cho đến ô nhớ DS :200h với ô nhớ 30 00:1100h. So sánh 101 bytes 22/08/2011 22/08/2011 Chuong 3 Debug Chuong. 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI DUA EM S 0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 ANG SONGTOI DUA 0ADD:0 130 45 4D 20 53 41 4E 47 20- 53 4F 4E 47 54 4F 49 20 EM SANG SONGTOI 0ADD:0140. 45 4D 20 53- 41 4E 47 20 53 4F 4E 47 DUA EM SANG SONG 0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 TOI DUA EM SANG 0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 SONGTOI