1. Trang chủ
  2. » Công Nghệ Thông Tin

Kiến trúc máy tính bài thực hành số 2

5 415 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 102,92 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài 2: Các thao tác xử lý chương trình với công cụ Debug 2.1... Thực thi đoạn chương trình trong bộ nhớ lệnh G, P, T Cú pháp: G [=address] [addresses] Ý nghĩa: Thực thi đoạn chương trì

Trang 1

Bài 2: Các thao tác xử lý chương trình với công cụ Debug

2.1 Nhập đoạn chương trình bằng mã gợi nhớ (lệnh A)

Cú pháp: A [address]

Ý nghĩa: Nhập đoạn mã gợi nhớ vào bộ nhớ ở địa chỉ address

Ví dụ: Nhập đoạn chương trình sau vào vùng nhớ 0B17:0100

MOV AX,500H MOV BX,16H ADD AX,BX

-a 0B17:100

0B17:0100 MOV AX,500

0B17:0103 MOV BX, 16

0B17:0106 ADD AX,BX

0B17:0108

-

Lưu ý: - Nếu địa chỉ chỉ gồm thành phần Offset thì Segment mặc định là nội dung của thanh ghi

CS

- Hệ cơ số mặc định được sử dụng là 16 nên không cần thêm hậu tố H cuối giá trị hằng

(500H  500; 16H  16)

- Dựa vào địa chỉ cuối cùng có thể tính được kích thước của đoạn chương trình vừa nhập

(Trong ví dụ trên, đoạn chương trình có kích thước 8 byte)

2.2 Xem đoạn chương trình trong bộ nhớ ở dạng mã gợi nhớ (lệnh U)

Cú pháp: U [range]

Ý nghĩa: Xem dưới dạng mã gợi nhớ một đoạn chương trình nằm trong bộ nhớ

Ví dụ: Xem đoạn chương trình đã nhập ở phần trên ở vùng nhớ 0B17:0100

Xem bắt đầu từ địa chỉ 0B17:0100, chiều dài 8 byte :

-u 0B17:100 L 8

0B17:0100 B80005 MOV AX,0500

0B17:0103 BB1600 MOV BX,0016

0B17:0106 01D8 ADD AX,BX

Hoặc xem bắt đầu từ địa chỉ 0B17:0100 đến địa chỉ 0106 :

-u 0B17:100 106

0B17:0100 B80005 MOV AX,0500

0B17:0103 BB1600 MOV BX,0016

0B17:0106 01D8 ADD AX,BX

Hoặc xem từ địa chỉ 0B17:0100:

-u 0B17:0100

0B17:0100 B80005 MOV AX,0500

0B17:0103 BB1600 MOV BX,0016

0B17:0106 01D8 ADD AX,BX

0B17:0108 6C DB 6C

0B17:0109 6F DB 6F

0B17:010A 48 DEC AX

0B17:010B 65 DB 65

0B17:010C 6C DB 6C

Trang 2

11

0B17:010D 6C DB 6C

0B17:010E 6F DB 6F

0B17:010F 48 DEC AX

0B17:0110 0000 ADD [BX+SI],AL

0B17:0112 0000 ADD [BX+SI],AL

0B17:0114 0000 ADD [BX+SI],AL

0B17:0116 0000 ADD [BX+SI],AL

0B17:0118 0000 ADD [BX+SI],AL

0B17:011A 0000 ADD [BX+SI],AL

0B17:011C 0000 ADD [BX+SI],AL

0B17:011E 0000 ADD [BX+SI],AL

Xem dưới dạng mã nhị phân:

-d 0B17:0100

0B17:0100 B8 00 05 BB 16 00 01 D8-6C 6F 48 65 6C 6C 6F 48 .loHelloH 0B17:0110 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 0B17:0120 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 0B17:0130 6C 6F 48 65 6C 6C 6F 48-65 6C 6C 6F 48 65 6C 6C loHelloHelloHell 0B17:0140 6F 48 65 6C 6C 6F 48 65-6C 6C 6F 48 65 6C 6C 6F oHelloHelloHello 0B17:0150 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3 0B17:0160 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3 0B17:0170 22 33 22 33 22 33 22 33-22 33 22 33 22 33 22 33 "3"3"3"3"3"3"3"3 -d 0B17:0100 L8

0B17:0100 B8 00 05 BB 16 00 01 D8

2.3 Thực thi đoạn chương trình trong bộ nhớ (lệnh G, P, T)

Cú pháp: G [=address] [addresses]

Ý nghĩa: Thực thi đoạn chương trình trong bộ nhớ bắt đầu từ địa chỉ [=address] và đặt các điểm

dừng (breakpoints) trong tham số [addresses]

Cú pháp: T [=address] [number]

Ý nghĩa: Thực thi [number] lệnh bắt đầu từ địa chỉ [=address] và dừng lại

Cú pháp: P [=address] [number]

Ý nghĩa: Tương tự lệnh T, tuy nhiên các lệnh gọi chương trình con, lệnh lặp, gọi ngắt được xem

như 1 lệnh và thực thi qua một bước

Ví dụ: Nhập đoạn chương trình sau vào vùng nhớ bắt đầu ở địa chỉ 0B17:0100 và thực thi Cho

biết nội dung các thanh ghi AX,BX,CX sau khi thực thi xong chương trình

MOV AX,516h

MOV BX,1

XCHG BH,BL

MOV CX, AX

XCHG AL,BL

Nhập bắt đầu từ địa chỉ 0B17:0100:

-a 0b17:100

0B17:0100 MOV AX,516

0B17:0103 MOV BX,1

0B17:0106 XCHG BH,BL

0B17:0108 MOV CX,AX

0B17:010A XCHG AL,BL

0B17:010C

Thực thi từ địa chỉ 0B17:0100 đến 0B17:010C

-g=0b17:100 0b17:010C

Trang 3

AX=0500 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010C NV UP EI PL NZ NA PO NC

0B17:010C 0000 ADD [BX+SI],AL DS:0116=00

Thực thi từng lệnh từ địa chỉ 0B17:0100 (5 lệnh)

-t 0B17:0100

AX=0516 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0103 NV UP EI PL NZ NA PO NC

0B17:0103 BB0100 MOV BX,0001

-t

AX=0516 BX=0001 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0106 NV UP EI PL NZ NA PO NC

0B17:0106 86FB XCHG BH,BL

-t

AX=0516 BX=0100 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=0108 NV UP EI PL NZ NA PO NC

0B17:0108 89C1 MOV CX,AX

-t

AX=0516 BX=0100 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010A NV UP EI PL NZ NA PO NC

0B17:010A 86C3 XCHG AL,BL

-t

AX=0500 BX=0116 CX=0516 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=17E1 ES=17E1 SS=17E1 CS=0B17 IP=010C NV UP EI PL NZ NA PO NC

0B17:010C 0000 ADD [BX+SI],AL

-

Bài tập: Nhập chương trình sau vào vùng nhớ CS:0100 và thực thi

jmp 126

db 0d,0a,"This is my first DEBUG program!"

db 0d,0a,"$"

mov ah,9

mov dx,102

int 21

int 20

Lưu ghi chương trình lên đĩa cứng với tên first.com Chạy thử trên nền windows Khởi động lại Debug và nạp chương trình first.com vào để kiểm tra

Hướng dẫn:

Nhập chương trình ở địa chỉ 100h (Segment mặc định chứa trong CS)

-A 100

CS:0100 jmp 126

CS:0102 db 0d,0a,"This is my first DEBUG program!"

CS:0123 db 0d,0a,"$"

CS:0126 mov ah,9

CS:0128 mov dx,102

CS:012B int 21

CS:012D int 20

CS:012F

Xem lại chương trình từ địa chỉ 0100h đến 012Fh, lưu ý trong vùng nhớ này vừa chứa chương trình vừa chứa dữ liệu

-u 100 012F

CS:0100 EB24 JMP 0126

CS:0102 0D0A54 OR AX,540A

CS:0105 68 DB 68

Trang 4

13

:0106 69 DB 69

CS:0107 7320 JNB 0129

CS:0109 69 DB 69

CS:010A 7320 JNB 012C

CS:010C 6D DB 6D

CS:010D 7920 JNS 012F

CS:010F 66 DB 66

CS:0110 69 DB 69

CS:0111 7273 JB 0186

CS:0113 7420 JZ 0135

CS:0115 44 INC SP

CS:0116 45 INC BP

CS:0117 42 INC DX

CS:0118 55 PUSH BP

CS:0119 47 INC DI

CS:011A 207072 AND [BX+SI+72],DH

CS:011D 6F DB 6F

CS:011E 67 DB 67

CS:011F 7261 JB 0182

CS:0121 6D DB 6D

CS:0122 210D AND [DI],CX

CS:0124 0A24 OR AH,[SI]

CS:0126 B409 MOV AH,09

CS:0128 BA0201 MOV DX,0102

CS:012B CD21 INT 21

CS:012D CD21 INT 20

CS:012F 0000 ADD [BX+SI],AL

Xem dữ liệu từ địa chỉ 102h đến 125h, để mặc định Data Segment cần thay đổi thanh ghi DS cùng giá trị với nội dung thanh ghi CS

-r ds

DS 17E1

:

-d 102 125

DS:0100 0D 0A 54 68 69 73-20 69 73 20 6D 79 20 66 This is my f

DS:0110 69 72 73 74 20 44 45 42-55 47 20 70 72 6F 67 72 irst DEBUG progr

DS:0120 61 6D 21 0D 0A 24 am! $

Thực thi chương trình:

-g=100

This is my first DEBUG program!

Program terminated normally

-

Ghi vào file first.com

-N C:\first.com

-r bx

BX 0000

:

-r cx

CX 0000

:2f

-w 100

Writing 0002F bytes

-

Thoát và chạy lại chương trình debug, nạp lại first.com lên bộ nhớ

-N C:\first.com

-L 100

Xem nội dung vừa nạp:

Trang 5

-d 100

17F2:0100 EB 24 0D 0A 54 68 69 73-20 69 73 20 6D 79 20 66 .$ This is my f 17F2:0110 69 72 73 74 20 44 45 42-55 47 20 70 72 6F 67 72 irst DEBUG progr

17F2:0120 61 6D 21 0D 0A 24 B4 09-BA 02 01 CD 21 CD 20 00 am! $ !

17F2:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

17F2:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

17F2:0150 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

17F2:0160 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

17F2:0170 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

Thực thi thử:

-g=100

This is my first DEBUG program!

Program terminated normally

-

Ngày đăng: 03/12/2015, 13:13

TỪ KHÓA LIÊN QUAN