Bài giảng Cấu trúc máy tính: Chương 3 với mục tiêu chính như: Dịch được 1 chương trình ngắn, mục tiêu Xem các thanh ghi và cờ của CPU, xem sự thay đổi nội dung của các biến, dò tìm trị ở dạng nhị phân hoặc ASCII trong bộ nhớ, hỗ trợ luyện tập viết chương trình bằng Assembly.
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 1/19/2018 Chuong Debug Dạng lệnh Debug Trong mã lệnh chữ A,B,C,D,E, cịn 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 1/19/2018 0AF5 Chuong Debug Dạ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ố 1/19/2018 Chuong Debug Tập lệnh Debug A : cho phép viết từ bàn phím lệnh mã máy dạng gợi nhớ A [ ] Ex : - A 100 dịch địa CS:100h -A dịch địa - A DS:2000h 1/19/2018 (Debug lấy địa đoạn CS) dịch địa DS:2000h Chuong Debug Thí dụ minh họa lệnh A Phải nhập lệnh vào theo dòng kết thúc Enter Kết thúc nhập nhấn Enter dòng trống Ex : - A 100 User gỏ vào 5514:0100 MOV AH, 5514:0102 MOV DL, 41 5514:0104 INT 21H SEGMENT 1/19/2018 OFFSET Chuong Debug C (Compare) So sánh vù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 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 1/19/2018 Chuong Debug D (Dump) Hiện nội dung nhớ theo dạng hệ 16 ASCII Cách gọi : D Ex : - D F000 : - D ES : 100 - D 100 1/19/2018 Chuong Debug Lệnh F (Fill) Cú pháp : F Công dụng : lấp đầy trị vào vùng nhớ địa mong muố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 1/19/2018 Chuong Debug Minh họa lệnh F Lắp đầy vùng nhớ địa offset 100h chuổi “ Toi dua em sang song” F 100 “TOI DUA EM SANG SONG” OFFSET 100H 1/19/2018 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 1/19/2018 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 Lệnh R (Register) Công dụ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 1/19/2018 Chuong Debug 16 Lệnh N (Name) Công dụng : tạo tập tin cần đọc hay ghi trước dùng lệnh L hay W Cú pháp : - N [ thông số] L [địa chỉ] 1/19/2018 Chuong Debug 17 Thí dụ minh họa lệ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 1/19/2018 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ớ 1/19/2018 Chuong Debug 19 Lệ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 1/19/2018 Chuong Debug 20 Lệnh T (Trace)và P cuù pháp : - T [= ][số lần] Mục đích : dùng để chạy hay nhiều lần lệnh nhớ Ex : - T = 3000:1000 Ex : - T = 3000:1000 1/19/2018 Chuong Debug 21 Lệ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 … 1/19/2018 Chuong Debug 22 Lệnh H (Hex Arithmethic) thực phép cộng trừ hệ 16 Cú pháp : - H Kết : tổng hiệu trị trị 1/19/2018 Chuong Debug 23 Lệnh S (Search) Công dụng : tìm kiếm trị vùng nhớ Cú pháp : - S Giải thích : tìm kiếm trị có diện vùng nhớ định hay khơng? Nếu có Debug địa đầu nơi có chứa danh sách Ex : - S 100 L 1000 ‘DOS’ 18AF : 0154 18AF : 0823 Ex2 : - S 2000 2200 13,15,8A, 1/19/2018 Chuong Debug 24 Lệnh M (Move) Công dụng : chép nội dung vùng nhớ đến địa khác Cú pháp : - M 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 1/19/2018 Chuong Debug 25 Lệnh I (Input) Công dụng : nhập byte từ cổng xuất nhập hình Cú pháp : - I địa cổng số hệ 16 tối đa chữ số Ex : - I 37E EC 1/19/2018 Chuong Debug 26 Lệnh O (Output) Công dụng : xuất byte cổng xuất nhập Cú pháp :- O địa cổng số hệ 16 tối đa chữ số Ex : - O 378 5E 1/19/2018 Chuong Debug 27 Summary Dùng lệnh D để xem nội dung vùng nhớ địa ROM BIOS F000:0000 Tương tự xem nội dung vùng nhớ RAM hình địa B800:0000; bảng vector ngắt quãng 0000:0000 Gỏ vào máy lệnh A, đoạn chương trình sau địa 2000:0100 1/19/2018 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 lệnh U Chú ý quan sát phần mã máy Tìm xem tốn hạng tức thời địa xuất đâu phần mã máy lệnh Phần mã máy câu lệnh cuối có khác nhaukhi dùng tốn tử WORD PTR BYTE PTR 1/19/2018 Chuong Debug 29 Summary Dùng lệ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 xuống dịng có mã ASCCI 0D 0A) 1/19/2018 Chuong Debug 30 ... 0ADD:0 130 45 4D 20 53 41 4E 47 2 0- 53 4F 4E 47 54 4F 49 20 0ADD:0140 44 55 41 20 45 4D 20 5 3- 41 4E 47 20 53 4F 4E 47 0ADD:0150 54 4F 49 20 44 55 41 2 0-4 5 4D 20 53 41 4E 47 20 0ADD:0160 53 4F 4E... QUẢ -F 100 "TOI DUA EM SANG SONG" -D 100 0ADD:0100 54 4F 49 20 44 55 41 2 0-4 5 4D 20 53 41 4E 47 20 0ADD:0110 53 4F 4E 47 54 4F 49 2 0-4 4 55 41 20 45 4D 20 53 0ADD:0120 41 4E 47 20 53 4F 4E 4 7-5 4... , < địa chỉ> Ex : - C 100, 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