debug 命令及使用

20
DEBUG 命命命命命 DEBUG 命 DOS 命命命命命命命命命命命 命命 *.COM 命命命命命命命命命 命命 *.EXE 命 命命命命命命命“—” 命命命命命 命命 DEBUG 命命命命命命 命命命命 命命命 、、。 1 CS DS ES SS 命命命命命命命命命 命命命命命命命命 命命命 ,体。 2 AX BX CX DX BP SI DI 命命 0000H 3 IP 0100H 一、 DEBUG 的的的 1 命命 DEBUG 命命命命 -N EXA.COM (N 命命 ) -L (L 命命 ) 2 命命命命 C:>DEBUG PATH XXX.COM 演演 DEBUG 演演演演

Upload: karen-flowers

Post on 01-Jan-2016

106 views

Category:

Documents


16 download

DESCRIPTION

DEBUG 命令及使用. DEBUG 是 DOS 下汇编语言专用调试程序。可对*. COM 进行完全的调试保存,可对*. EXE 只能调试不能保存。 “—” 为其提示符,可 以用 DEBUG 命令进行汇编、反汇编、调试。 1. CS 、 DS 、 ES 、 SS 指向自由空间的底部,具体值与装入的操作系统有关。 2. AX 、 BX 、 CX 、 DX 、 BP 、 SI 、 DI 均为 0000 H 3.IP : 0100H 一、 DEBUG 的调用 1、 进入 DEBUG 命令状态 - N EXA.COM(N 命令 ) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: DEBUG 命令及使用

DEBUG 命令及使用 DEBUG 是 DOS 下汇编语言专用调试程序。可对 *.COM 进行完全的调试保存,可对 *.EXE 只能调试不能保存。

“—” 为其提示符,可以用 DEBUG 命令进行汇编、反汇编、调试。

1 . CS 、 DS 、 ES 、 SS 指向自由空间的底部,具体值与装入的操作系统有关。

2 . AX 、 BX 、 CX 、 DX 、 BP 、 SI 、 DI 均为 0000H

3 . IP : 0100H

一、 DEBUG 的调用

1、进入 DEBUG 命令状态

-N EXA.COM (N 命令 )

-L (L 命令 )

2、直接调用

C:>DEBUG PATH XXX.COM

演示DEBUG文件调用

Page 2: DEBUG 命令及使用

2 、内存修改命令 E -E 地址 内容表↙ -E DS : 100 F3 “ABC” 8D ↙

从 DS 的 100H 单元开始修改,依次各字节修改为 F3 “ABC” 8D 。

E命令演示

4 、运行命令 G

-G 地址 1 地址 2 …… ↙

-G 100 ↙

从 CS : IP=CS : 100H 开始执行。

二、 DEBUG 常用命令 1 、内存显示命令 D -D 地址 ↙ -D 100 ↙

显示连续 128 字节的内容

3 、寄存器修改命令 R

-R↙

-R 寄存器名↙

6 、汇编命令 A

-A↙

-A 地址 ↙

5 、跟踪命令 T 及 P

-T↙

当前 CS : IP 执行一条指令

-T = 地址 ↙

命令演示

Page 3: DEBUG 命令及使用

12 、输入输出命令 I 、 O

-I ( O )端口地址 ↙

7 、反汇编命令 U

-U ↙

当前地址 CS : IP 反汇编 32 字节指令

-U 地址 ↙

9 、 文件装入命令 L

10 、写文件命令 W

BX :文件长度的高 16 位

CX :文件长度的低 16 位

11 、退出 DEBUG 回到 DOS 状态命令Q

8 、命名命令 N

-N 文件名↙

N命令演示

命令演示

Page 4: DEBUG 命令及使用

•汇编语言的几个定义及指令格式指令:计算机完成某种操作的命令。机器语言:指令的二进制编码构成的程序设计语言。

3 . 1 寻址方式 汇编语言:指令的助记符编码构成的程序设计语言。例 MOV AX , 05C7H ;汇编指令而 B8C705H ;机器指令

汇编语言

机器语言高级语言

FORTRANBASICC/C++JAVA…...

第三章 80X86 微处理器的指令系统

指令性语句与机器语言一一对应的同属低级语言。

命令演示

Page 5: DEBUG 命令及使用

•指令基本格式

操作码 操作数 1 , 操作数 2

指令操作代码 目的操作数 源操作数

•双操作数指令

ADD CX , 1

SUB AX , 1

•单操作数指令

INC CX

DEC AX

只有目的操作数

Page 6: DEBUG 命令及使用

3 . 1 . 1 寻址方式

•数据的寻址方式 1 、立即寻址——操作数存放在指令中,紧跟在操作码之后。

MOV AL , 10H 汇编码

B010H 机器码

源操作数: 10H 立即数构成指令的一部分。例 MOV SI , 20H ;

MOV AL , 01000011B;

MOV AX , 4346H ;

MOV AX , 1506 ;

MOV AL ‘, B’

20H SI

01000011B AL

4346H AX

1506 AX

41H AL

MOV 3 , AL MOV AH, 3064H

立即数不能作目的操作数

源目的操作数的字长一致 命令演示

Page 7: DEBUG 命令及使用

2 、寄存器寻址 ——操作数在指定的寄存器中。

例 1 MOV AL , BL ; BL 值送 AL

例 2 MOV AX , BX ; BX 的内容送 AX

例 3 MOV CL , DH ; DH 值送 CL

MOV SS , AL

MOV AH, BX

字节寄存器只有 AH 、 AL 、 BH 、 BL 、 CH 、 CL 、 DH 、 DL

SRC 和 DST 的字长一致

命令演示

Page 8: DEBUG 命令及使用

•存储器寻址

3. 直接寻址 —— 有效地址 EA 由指令直接给出

有效地址 EA :操作数的偏移地址

物理地址 PA = (DS) 16d + EA

隐含的段为数据段 DS

适于处理单个变量 命令演示

50H

30H

32000

AH AL

30 50

(AX) = 3050H

32001

地址增量

例: MOV AX, [2000H]

EA=2000H, 假设 (DS)=3000H, 那么(PA)=32000H

Page 9: DEBUG 命令及使用

•存储器寻址4. 寄存器间接寻址 —— EA 在基址寄存器 (BX/BP) 或变址寄存器 (SI/DI)中•偏移地址 EA :BX 、 SI 、 DI→DS

物理地址 PA= (DS) 16 +

( BX)

( SI )

( DI)•偏移地址 EA : BP→SS

物理地址 PA= (SS) 16 + ( BP )

MOV AX, [BX] PA = 16d (DS) + (BX)

MOV AX, [BP] PA = 16d (SS) + (BP)

也称基址寻址

也称变址寻址

[SI] 源变址

[DI] 目的变址

MOV AX, [SI] PA = 16d (DS) + (SI)

MOV AX, [DI] PA = 16d (DS) + (DI)

Page 10: DEBUG 命令及使用

•存储器寻址例 1 MOV AX , [BX]

( DS ) =2000H ,( SS ) =1000H ,( BP ) =120H

( BX ) =100H ,( AX ) =1234H ,( 20100H ) =5678H

偏移地址 EA=(BX)=100H

物 理 地址 PA= 物 理 地 址 PA= (DS) 16 +( BX ) =20000H+100H=20100H

20100

AH AL

(AX) = 5678H

20101

56H 78H

BH BLEA=(BX)

2000H 0H

2000H

01H 00H

16

20100HPA

( DS)

78H

56H

0CH

52H

内存

命令演示

Page 11: DEBUG 命令及使用

•存储器寻址例 2 MOV AX , [BP]

( DS ) =2000H ,( SS ) =1000H ,( BP ) =120H

( BX ) =100H ,( AX ) =0133H ,( 10120H ) =BCF08H

偏移地址 EA=(BP)=0120H

物 理 地址 PA= 物 理 地 址 PA= (SS) 16 +( BP ) =10000H+100H=10120H

10120

AH AL

(AX) = 5678H

10121

BCH F0H

EA=(BP)

1000H 0H

1000H

01H 20H

16

10120HPA

( SS)

F0H

BCH

0CH

52H

内存

命令演示

Page 12: DEBUG 命令及使用

•存储器寻址

不允许使用 AX 、 CX 、 DX 存放 EA

MOV AX, [CX]

• SRC 和 DST 的字长一致 MOV DL, [BX] ; [BX] 指示一个字节单元

MOV DX, [BX] ; [BX] 指示一个字单元

• 适于数组、字符串、表格的处理

Page 13: DEBUG 命令及使用

•存储器寻址

5 、相对寄存器间接寻址

偏移地址EA=

( BX )

( SI )

( DI )

( BP )

X , 8 位 16 位移量

+

物理地址 PA= ( DS ) ×16 +

( BX )

( SI )

( DI )

X , 8 位 16 位移量

物理地址 PA= ( SS ) ×16 +

( BP)

X , 8 位 16 位移量

Page 14: DEBUG 命令及使用

•存储器寻址例 1 MOV AX , [BX - 6]

( DS ) =2000H ,( SS ) =1000H ,( BP ) =120H

( BX ) =100H ,( AX ) =1234H ,( 20100H ) =ABCDH

偏移地址 EA=(BX) - 6=0FAH

物 理 地址 PA= 物 理 地 址 PA= (DS) 16 + ( BX ) -6=20000H+100H-6=200FAH

200FA

AH AL

(AX) = ABCDH

200FB

ABH CDH 2000H0H

2000H

01H 00H

16

200FAHPA

DS

EA=(BX-6) 00H FAH- 6

CDH

ABH

0CH

52H

内存

Page 15: DEBUG 命令及使用

•存储器寻址例 2 MOV CX , 6[BP]

( DS ) =2000H ,( SS ) =1000H ,( BP ) =120H

( BX ) =100H ,( CX ) =0012H ,( 20126H ) =1234H

偏移地址 EA=(BP)+6=126H

物 理 地址 PA= 物 理 地 址 PA= (SS) 16 + ( BP ) + 6=10000H+120H+6=20126H

34H

12H

2000A

CH CL

(CX) = 1234H

2000B

12H 34H 1000H0H

1000H

01H 20H

16

10126HPA

SS

EA=(BP+6) 01H 26H

+ 60CH

52H

内存

Page 16: DEBUG 命令及使用

•存储器寻址6 、基址加变址寻址

偏移地址EA=

( BX )

( BP )+

( SI )

( DI )

物理地址 PA= ( DS ) ×16 +( BX )

+( SI )

( DI )

MOV AX, [BX][DI] 或 MOV AX, [BX+DI]

MOV [BP+DI] , AX

必须是一个基址寄存器和一个变址寄存器的组合 MOV AX , [BX][BP]

MOV AX , [SI][DI]

物理地址 PA= ( SS ) ×16 +( BP )

+( SI )

( DI )

Page 17: DEBUG 命令及使用

•存储器寻址

6 、相对基址加变址寻址

MOV AX , 6 [BX][DI] 或 MOV AX , [BX+DI+6]

MOV [BP+DI-9] , AX

必须是一个基址寄存器和一个变址寄存器的组合 MOV AX , [BX+BP+9]

MOV AX , 10H[SI][DI]

偏移地址EA=

+ ( SI)

( DI)

( BX)

( BP)

+ X , 8 位 16 位移量

物理地址 PA= ( DS ) ×16 +( BX )

+( SI)

( DI)

+ X , 8 位 16 位移量

物理地址 PA= ( SS ) ×16 +( BP )

+( SI )

( DI )+ X , 8 位 16 位移量

Page 18: DEBUG 命令及使用

•跨段问题(段超越)

针对当前段,各段与寄存器有关的内存寻址之间是固定搭配的。

DS : BX , DI , SI

SS : BP

源、目的操作数的字长一致

源、目的操作数不能同为内存单元

立即数不能作目的操作数

加上段前缀,可打破这种关系完成跨段操作。

例: MOV AX , ES : [BX] PA= ( ES ) ×16+ ( BX )

MOV CX , SS : [SI] PA= ( SS ) ×16+ ( SI )

MOV CS : [BX+DI] , AX PA= ( CS ) ×16+ ( BX ) +( DI )

Page 19: DEBUG 命令及使用

3.1.2 转移地址的寻址

3.1.3 保护方式下的寻址

自学 P86 保护方式下的寻址方式。

在转移指令中讲述。

Page 20: DEBUG 命令及使用

课后作业:1. P128 3.1 ( 1 ) ( 2 )

2. 指出下列指令源操作数的寻址方式。

(1) MOV AX , [2001]

(2) MOV [BX] , SI

(3) MOV [SI+200H] , 100H

(4) MOV SI , [BX+DI]

(5) MOV SI , [BP+DI+9]