1 / 20

DEBUG 命令及使用

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 命令 )

Download Presentation

DEBUG 命令及使用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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. 二、DEBUG常用命令 1、内存显示命令 D -D地址↙ -D 100 ↙ 显示连续128字节的内容 4、运行命令G -G地址1 地址2 …… ↙ -G 100 ↙ 从CS:IP=CS:100H开始执行。 5、跟踪命令T及P -T↙ 当前CS:IP执行一条指令 -T=地址↙ 2、内存修改命令 E -E 地址内容表↙ -E DS:100 F3 “ABC” 8D ↙ 从DS的100H单元开始修改,依次各字节修改为F3 “ABC” 8D。 E命令演示 6、汇编命令A -A↙ -A地址↙ 3、寄存器修改命令R -R↙ -R 寄存器名↙ 命令演示

  3. 12、输入输出命令I、O -I(O)端口地址 ↙ 7、反汇编命令 U -U↙ 当前地址CS:IP反汇编32字节指令 -U 地址↙ 8、命名命令N -N 文件名↙ N命令演示 9、 文件装入命令L 10、写文件命令W BX:文件长度的高16位 CX:文件长度的低16位 11、退出DEBUG回到DOS状态命令Q 命令演示

  4. 机器语言 FORTRAN BASIC C/C++ JAVA …... 高级语言 汇编语言 第三章 80X86微处理器的指令系统 3.1寻址方式 汇编语言:指令的助记符编码构成的程序设计语言。 例 MOV AX,05C7H ;汇编指令 而 B8C705H ;机器指令 • 汇编语言的几个定义及指令格式 • 指令:计算机完成某种操作的命令。 • 机器语言:指令的二进制编码构成的程序设计语言。 指令性语句与机器语言一一对应的同属低级语言。 命令演示

  5. 操作码 操作数1, 操作数2 指令操作代码 源操作数 目的操作数 • 单操作数指令 • 双操作数指令 INC CX DEC AX ADD CX,1 SUB AX,1 只有目的操作数 指令基本格式

  6. 例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,ALMOV AH, 3064H 立即数不能作目的操作数 源目的操作数的字长一致 3.1.1寻址方式 • 数据的寻址方式 1、立即寻址——操作数存放在指令中,紧跟在操作码之后。 MOV AL,10H 汇编码 B010H 机器码 源操作数:10H立即数构成指令的一部分。 命令演示

  7. 2、寄存器寻址 ——操作数在指定的寄存器中。 例1 MOV AL,BL ;BL值送AL 例2MOV AX,BX ;BX的内容送AX 例3MOV CL,DH ;DH值送CL MOV SS,AL MOV AH, BX 字节寄存器只有 AH、AL、BH、BL、CH、CL、DH、DL SRC 和 DST的字长一致 命令演示

  8. 例:MOV AX, [2000H] EA=2000H, 假设(DS)=3000H, 那么(PA)=32000H (AX) = 3050H AH AL 地址增量 30 50 32000 50H 32001 30H • 存储器寻址 3. 直接寻址—— 有效地址EA由指令直接给出 有效地址EA:操作数的偏移地址 物理地址PA = (DS) 16d + EA 隐含的段为数据段 DS 适于处理单个变量 命令演示

  9. 偏移地址EA:BX、SI、DI→DS (BX) (SI) (DI) 物理地址PA= (DS)  16 + 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) • 存储器寻址 4. 寄存器间接寻址 ——EA在基址寄存器(BX/BP) 或变址寄存器(SI/DI)中 • 偏移地址EA:BP→SS • 物理地址PA= (SS)  16 +(BP)

  10. 16 (DS) 2000H 内存 0CH (AX) = 5678H BH BL 52H EA=(BX) 01H 00H AH AL 56H 78H 0H 2000H 20100 78H PA 20101 20100H 56H • 存储器寻址 例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 命令演示

  11. 16 (SS) 1000H 内存 0CH (AX) = 5678H 52H EA=(BP) 01H 20H AH AL BCH F0H 0H 1000H 10120 F0H PA 10121 10120H BCH • 存储器寻址 例2MOV 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 命令演示

  12. 存储器寻址 • 不允许使用AX、CX、DX存放EA • MOV AX, [CX] • SRC 和 DST的字长一致 • MOV DL, [BX] ; [BX]指示一个字节单元 • MOV DX, [BX] ; [BX]指示一个字单元 • 适于数组、字符串、表格的处理

  13. (BX) (SI) (DI) (BP) 偏移地址EA= + X ,8位16位移量 (BX) (SI) (DI) 物理地址PA=(DS)×16 + + X ,8位16位移量 物理地址PA=(SS)×16 + + X ,8位16位移量 (BP) • 存储器寻址 5、相对寄存器间接寻址

  14. DS 2000H 16 内存 00H 01H 0CH (AX) = ABCDH - 6 52H FAH EA=(BX-6) 00H AH AL ABH CDH 0H 2000H 200FA CDH PA 200FB 200FAH ABH • 存储器寻址 例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

  15. SS 1000H 16 内存 20H 01H 0CH (CX) = 1234H + 6 52H 26H EA=(BP+6) 01H CH CL 12H 34H 0H 1000H 2000A 34H 2000B 10126H PA 12H • 存储器寻址 例2MOV 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

  16. (BX) (BP) (SI) (DI) 偏移地址EA= + (SI) (DI) 物理地址PA=(DS)×16 +(BX) + (SI) (DI) 物理地址PA=(SS)×16 +(BP) + • 存储器寻址 6、基址加变址寻址 MOV AX, [BX][DI] 或 MOV AX, [BX+DI] MOV [BP+DI],AX 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX, [BX][BP]  MOV AX, [SI][DI]

  17. (BX) (BP) (SI) (DI) 偏移地址EA= + + X ,8位16位移量 (SI) (DI) 物理地址PA=(DS)×16 +(BX) + + X ,8位16位移量 (SI) (DI) 物理地址PA=(SS)×16 +(BP) + X ,8位16位移量 + • 存储器寻址 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]

  18. 跨段问题(段超越) 针对当前段,各段与寄存器有关的内存寻址之间是固定搭配的。 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) 源、目的操作数的字长一致 源、目的操作数不能同为内存单元 立即数不能作目的操作数

  19. 3.1.2 转移地址的寻址 在转移指令中讲述。 3.1.3 保护方式下的寻址 自学P86保护方式下的寻址方式。

  20. 课后作业: • P128 3.1 (1) (2) • 指出下列指令源操作数的寻址方式。 • MOV AX,[2001] • MOV [BX],SI • MOV [SI+200H],100H • MOV SI,[BX+DI] • MOV SI,[BP+DI+9]

More Related