Tham khảo bài thuyết trình ''cấu trúc máy tính lập trình hợp ngữ_chương 3'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
CHƯƠNG TRÌNH GỢ RỐI DEBUG Mục tiêu Dịch chương trình ngắn Xem ghi cờ CPU Xem thay đổi nội dung biến ù h n ä ộ b o g n o tr II C S ëc A aë o a h n â a h p ò h n g n ï d a û ò tìm trị Dò y l b m e s s A g n è a b h n ì tr g n h c ết i v p ä a t n ä ye u l ï ô r t ã o H 22/08/2011 Chuong Debug Dạng ng lệnh nh Debug Trong mã lệnh chữ A,B,C,D,E, thông số thay đổi tùy theo lệnh Các thông số : Địa : địa đầy đủ segment : offset hay cần offset đủ Segment dùng tên ghi Ex : F000:0100 DS: 200 22/08/2011 0AF5 Chuong Debug Dạng ng lệnh Debug Tập tin : tham khảo tên tập tin đầy đủ, phải có tên tập tin Danh sách : Là hay nhiều trị byte chuổi cách dấu phẩy Khoảng : tham khảo đến vùng nhớ Trị : số hệ 16 có tối đa có chữ số 22/08/2011 Chuong Debug Tập lệnh nh Debug A : cho phép viết từ bàn phím lệnh nh mã máy dạng ng gợi nhớ A [ ] Ex : - A 100 dịch địa CS:100h -A dịch địa (Debug lấy địa đoạn CS) - A DS:2000h dịch địa DS:2000h 22/08/2011 Chuong Debug Thí dụ minh họa lệnh nh A Phải nhập lệnh nh vào theo ng dòng ng kết thúc ng Enter Kết thúc nhập nhấn Enter dòng ng trống ng Ex : - A 100 User gỏ vaøo 5514:0100 MOV AH, 5514:0102 MOV DL, 41 5514:0104 INT 21H SEGMENT 22/08/2011 OFFSET Chuong Debug C (Compare) So sánh nh vùng ng nhớ liệt kê ô nhớ có nội dung khác Cú pháp : C , < địa chỉ> Ex : - C 100, 200, 3000 : 1000 So saù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 Chuong Debug D (Dump) Hiện nội dung nhớ theo dạng ng hệ 16 ASCII Cách gọi : D Ex : - D F000 : - D ES : 100 - D 100 22/08/2011 Chuong Debug Lệnh nh F (Fill) Cú pháp : F ng> ch> Công dụng ng : lấp đầy trị vào vùng ng nhớ địa mong muốn n Trị nhập vào byte theo hệ 16 Dấu trừ (-) dùng để lùi lại địa SPACE BAR dùng để tới địa ENTER để kết thúc 22/08/2011 Chuong Debug Minh họa lệnh nh F Lắp đầy vùng ng nhớ địa offset 100h chuổi “ Toi dua em sang song” F 100 “TOI DUA EM SANG SONG” OFFSET 100H 22/08/2011 Chuong Debug KẾT QUẢ -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 0ADD:0110 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 0ADD:0130 45 4D 20 53 41 4E 47 20-53 4F 4E 47 54 4F 49 20 0ADD:0140 44 55 41 20 45 4D 20 53-41 4E 47 20 53 4F 4E 47 0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0170 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 22/08/2011 Chuong Debug TOI DUA EM SANG SONGTOI DUA EM S ANG SONGTOI DUA EM SANG SONGTOI DUA EM SANG SONG TOI DUA EM SANG SONGTOI DUA EM S ANG SONGTOI DUA 10 Leänh nh R (Register) Công dụng ng : xem sửa nội dung ghi Cú pháp : - R enter (xem tất ghi) xem ghi AX : - R AX xem ghi cờ : R F Ex : muốn bật ghi cờ CF ZF ta nhập CY ZR 22/08/2011 Chuong Debug 16 Lệnh nh N (Name) Công dụng ng : tạo tập tin cần đọc hay ghi trước dùng ng lệnh nh L hay W Cú pháp : - N [ thông số] L [địa chỉ] 22/08/2011 Chuong Debug 17 Thí dụ minh họa lệnh nh N Ex : tạo tập tin Love.txt Dùng lệnh R để xác định vùng địa dành cho User Dùng lệnh để đưa câu thông báo “ I love you more than I can say’ địa 2000:100 Dùng lệnh D để kiểm tra vùng nhớ địa 2000:100 Dùng lệnh N để đặt tên tập tin đóa - N Love.txt Dùng lệnh R để định số byte cần thiết ghi lên đóa ghi BX CX Cụ thể trường hợp số byte cần ghi 1Eh byte BX = 0000 CX = 1E Dùng lệnh W 2000:100 để ghi liệu nhập vào tập tin địa nhớ 2000:100 22/08/2011 Chuong Debug 18 Thoát khỏi Debug 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ỗ nhớ 22/08/2011 Chuong Debug 19 Lệnh nh W (Write) Cú pháp : W [address] Thường sử dụng chung với lệnh N Ex : tạo tập tin có tên Love.txt Bước : dùng lệnh E để đưa câu ‘I love you more than I can say” vào ô nhớ địa 100 Bước : dùng lệnh D để kiểm tra lại địa 100 Bước : dùng lệnh N để đặt tên tập tin : - N Love.txt Bước : dùng lệnh R để định số byte cần ghi lên đóa ghi BX CX (BX chứa 16 bit cao, CX chứa 16 bit thấp) số byte cần ghi 1Eh Bước : dùng lệnh W để ghi câu nhập vào vùng nhớ có địa bắt đầu 100 22/08/2011 Chuong Debug 20 Lệnh nh T (Trace)và P cú pháp : - T [= ][số lần] n] Mục đích : dùng để chạy hay nhiều lần lệnh nhớ Ex : - T = 3000:1000 Ex : - T = 3000:1000 22/08/2011 Chuong Debug 21 Lệnh nh L (Load) nạp tập tin nạp sector luận lý từ đóa vào nhớ Cú pháp : - L [ ] Dạng : có địa dùng để nạp tập tin Tên tập tin phải gán trước lệnh N Tập tin luôn gán địa offset 100h Dạng : có đầy đủ thông số , dùng để đọc sector luận lý đóa vào nhớ Đóa : = ổ đóa A, =1 ổ đóa B, =2 ổ đóa C … 22/08/2011 Chuong Debug 22 Leänh nh H (Hex Arithmethic) thực phép cộng ng trừ hệ 16 Cú pháp : - H Kết : tổng hiệu trị trị 22/08/2011 Chuong Debug 23 Lệnh nh S (Search) Công dụng ng : tìm kiếm trị vùng ng nhớ Cú pháp : - S ng> ch> Giải thích : tìm kiếm trị có diện vùng ng nhớ định hay không? Nếu có Debug địa đầu nơi có chứa danh sách ch Ex : - S 100 L 1000 ‘DOS’ 18AF : 0154 18AF : 0823 Ex2 : - S 2000 2200 13,15,8A, 22/08/2011 Chuong Debug 24 Leänh nh M (Move) Công dụng ng : chép nội dung vùng ng nhớ đến địa khác c Cú pháp : - M ng> Ex : - M 100 105 200 Chép bytes từ DS:100 đến DS:200 Ex2 : - M CS:100 L 50 ES:300 Chép 50 bytes từ CS:100 đến ES:300 22/08/2011 Chuong Debug 25 Lệnh nh I (Input) Công dụng ng : nhập byte từ cổng ng xuất nhập hình Cú pháp : - I ng> địa cổng ng số hệ 16 tối đa chữ số Ex : - I 37E EC 22/08/2011 Chuong Debug 26 Lệnh nh O (Output) Công dụng ng : xuất byte cổng ng xuất nhập p Cú pháp :- O ng> địa cổng ng số hệ 16 tối đa chữ số Ex : - O 378 5E 22/08/2011 Chuong Debug 27 Summary Dùng ng lệnh nh D để xem nội dung vùng ng nhớ địa ROM BIOS F000:0000 Tương tự xem nội dung vùng ng nhớ RAM hình địa B800:0000; bảng ng vector ngắt quãng 0000:0000 Gỏ vào máy ng lệnh nh A, đoạn chương trình sau địa 2000:0100 22/08/2011 Chuong Debug 28 Summary 2000:0100 MOV AL,32 2000:0102 MOV AH, 4F 2000:0104 MOV CX, [200] 2000:0108 MOV WORD PTR [1800], 2000:010E MOV BYTE PTR [1800], 2000:0113 Xem lại đoạn chương trình vừa đánh nh ng lệnh nh U Chú ý quan sát phần mã máy y Tìm xem toán hạng ng tức thời địa xuất đâu phần mã máy lệnh nh Phần mã máy câu lệnh nh cuối có khác nhaukhi dùng ng toán tử WORD PTR vaø BYTE PTR 22/08/2011 Chuong Debug 29 Summary Dùng ng lệnh nh E nhập vào đoạn văn sau vào nhớ địa DS:0100 8086/8088/80286 Assembly language Copyright 1988, 1886 by Brady Books, a division of Simon, Inc All right reserved, including the of reproduction in whole or in part, in any form (chú ý ký tự đầu dòng ng xuống ng dòng ng có mã ASCCI 0D 0A) 22/08/2011 Chuong Debug 30 ... 20-45 4D 20 53 41 4E 47 20 0ADD:0110 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0120 41 4E 47 20 53 4F 4E 47-54 4F 49 20 44 55 41 20 0ADD:0 130 45 4D 20 53 41 4E 47 20- 53 4F 4E 47 54... 20 45 4D 20 53- 41 4E 47 20 53 4F 4E 47 0ADD:0150 54 4F 49 20 44 55 41 20-45 4D 20 53 41 4E 47 20 0ADD:0160 53 4F 4E 47 54 4F 49 20-44 55 41 20 45 4D 20 53 0ADD:0170 41 4E 47 20 53 4F 4E 47-54... PTR [1800], 2000:01 13 Xem lại đoạn chương trình vừa đánh nh ng lệnh nh U Chú ý quan sát phần mã máy y Tìm xem toán hạng ng tức thời địa xuất đâu phần mã máy lệnh nh Phần mã máy câu lệnh nh cuối