debug 命令及使用
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 PresentationTRANSCRIPT
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文件调用
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 = 地址 ↙
命令演示
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命令演示
命令演示
•汇编语言的几个定义及指令格式指令:计算机完成某种操作的命令。机器语言:指令的二进制编码构成的程序设计语言。
3 . 1 寻址方式 汇编语言:指令的助记符编码构成的程序设计语言。例 MOV AX , 05C7H ;汇编指令而 B8C705H ;机器指令
汇编语言
机器语言高级语言
FORTRANBASICC/C++JAVA…...
第三章 80X86 微处理器的指令系统
指令性语句与机器语言一一对应的同属低级语言。
命令演示
•指令基本格式
操作码 操作数 1 , 操作数 2
指令操作代码 目的操作数 源操作数
•双操作数指令
ADD CX , 1
SUB AX , 1
•单操作数指令
INC CX
DEC AX
只有目的操作数
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
立即数不能作目的操作数
源目的操作数的字长一致 命令演示
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 的字长一致
命令演示
•存储器寻址
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
•存储器寻址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)
•存储器寻址例 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
内存
命令演示
•存储器寻址例 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
内存
命令演示
•存储器寻址
不允许使用 AX 、 CX 、 DX 存放 EA
MOV AX, [CX]
• SRC 和 DST 的字长一致 MOV DL, [BX] ; [BX] 指示一个字节单元
MOV DX, [BX] ; [BX] 指示一个字单元
• 适于数组、字符串、表格的处理
•存储器寻址
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 位移量
+
•存储器寻址例 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
内存
•存储器寻址例 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
内存
•存储器寻址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 )
•存储器寻址
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 位移量
•跨段问题(段超越)
针对当前段,各段与寄存器有关的内存寻址之间是固定搭配的。
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 )
3.1.2 转移地址的寻址
3.1.3 保护方式下的寻址
自学 P86 保护方式下的寻址方式。
在转移指令中讲述。
课后作业: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]