汇编语言实验debug
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)-t 执行CS:IP指向的一条指令并显示各寄存器状态 (2)-t <指令条数> -t 3 执行CS:IP开始的连续的3条指令并显示各寄存器状态 (3)-t <=起始地址> <指令条数> -t =052A 5 该指令会连续执行从052A开始的5条指令
练习
(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (2)用R命令修改CS的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (3)使用D命令,查看内存10000H处的内容; (4)使用D命令,查看1000:0~1000:8中的内容,并修改 这9个字节的内容为1、2、3、4、5、6、7、8、9 (5)采用三种不同的段地址和偏移地址查看同一物理地址
-e es:0
-e 0010 (默认修改数据段) (2)-e <起始地址> <内容表>
-e 1000:10 1 ‘a+b' 2 ‘c++’ 3
该指令会将1000:10开始的连续9个字节依次修改为01H、61H、 2BH、62H、02H、63H、2BH、2BH、03H
例:将内存1000:0~1000:9单元中的内容分别写为0、1、 2、3、4、5、6、7、8、9,可用“E 起始地址 数据 数 据 数据 数据 数据……”的格式来进行。 • 步骤:
反汇编显示从起始地址到结束地址的内容
例如:命令U 100 10C表示对从CS:100到10B的内存单元进行反汇编。
3.显示内存命令D
作用:查看指定范围内的内存中的内容
D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 元的内容 (1)直接输入D命令 输出3部分内容: (1)左边是每行的起始地址,用“XXXX:YYYY”表示,其中 XXXX表示内存单元的段地址,YYYY表示内存单元的偏移量; (2)中间以十六进制的形式显示从指定地址开始的128个内存 单元的内容,每行显示16个字节的内容; (3)右边显示每个内存单元中的数据对应的可显示的ASCII码 字符,若没有对应可显示的ASCII码字符,DEBUG用“.”来 代替。
OF溢出(是/否)
OV
wk.baidu.comNV
2.反汇编命令U 作用:反汇编,即显示机器码所对应的汇编指令,主要针
对代码段 格式:u [范围] (1)-u 从上一个U命令所显示地址后的第一个地址开始,反汇编显
示20H个字节内容
(2)-u <起始地址> 从起始地址处开始显示20H个字节内容
(3)-u <起始地址> <结束地址>
练习
(10)向内存从B8100H开始的单元中填写数据,如: -e b810:0000 01 02 03 04 05 05 06 注意:先填写不同的数据,观察产生的现象;再改变填写的的地址, 观察产生的现象。 (11)用汇编命令A输入如下指令: MOV AX,1 MOV BX,2 MOV CX,3 ADD AX,BX ADD AX,CX ADD AX,AX 用T跟踪观察寄存器内容的变化。 (12)上机练习课本P159第8题,并写出每个程序段执行后AL的内容及状态 标志位的值(提示:用A、R命令)
方法2:在运行对话框中输入“CMD”启动DOS命令窗口后输入
"DEBUG“ 方法3:在程序、附件、命令提示符,启动DOS命令窗口后输入
"DEBUG"
退出DEBUG的方法: -Q
三、DEBUG命令格式说明
(1)在提示符“-”下才能输入命令,在按“回车” 键后,该命令才开始执行; (2)命令是单个字母,后跟一个或多个参数,命令 和参数的大小写可混合输入,不区分大小写; (3)在DEBUG中使用的数都是以十六进制来表示的, 不能带后缀H; (4)以空格或逗号作为命令各项之间的分隔符; (5)可以用Ctrl+C或者Ctrl+Break来终止命令的执行; (6)当命令出现语法错误时,将在出错位置显示 “^Error”
• ① 用D命令查看1000:0~1000:f单元的内容:D 1000:
0 9 • ② 用E命令修改从1000:0开始的10个单元中的内容:E
1000:0 0 1 2 3 4 5 6 7 8 9
• ③ 用D命令查看1000:0~1000:9单元中内容的变化: D 1000:0 9 • 或以提问的方式修改内存内容
注:
(1)使用带参数的D命令后,接着使用D命令,可列出
后续的128个内存单元的内容。 (2)可指定段寄存器:-d CS:100 10F (3)不指定段寄存器时默认显示数据段内容
4.修改存储单元命令E 作用:用值表中的值替换从“起始地址”开始的内存单
元中的内容
(1)-e <起始地址> 以提问的方式依次修改内存单元的内容 -e 1000:0
10000H中的内容
练习
(6)用E命令向内存中写入字符。从内存1000:0开始写入:数值1,字 符“a”,数值2,字符“b”,数值3,字符“c”。 (7)用E命令向内存中写入字符串。从内存1000:0开始写入:数值1, 字符串“a+b”,数值2,字符串“c++”,数值3,字符“IBM”。 (8)用E命令以提问的方式来逐个地修改从某一地址开始的内存单元中 的内容。 (9)以从1000:10单元开始为例。 用E命令向内存中写入机器码,用U命令查看内存中机器码的含义。 机器码 对应的汇编指令 b8 01 00 MOV AX,0001 b9 02 00 MOV CX,0002 01 c8 ADD [BX+SI],AX 简单地使用A命令,从一个预设的地址开始输入指令
练习
(12)PC主板上的ROM中写有一个生产日期,在内存FFF00HFFFFFH的某几个单元中,请找到这个生产日期并试图修改。 (13)上机练习课本P159第8题,并写出每个程序段执行后AL的 内容及状态标志位的值(提示:用A、R命令)
(1)-R
显示所有寄存器(包括Flags)的值并反汇编CS:IP所指 的指令 (2)-R <寄存器名>
显示指定寄存器的值,在提示符“:”后键入新的值,
按回车键结束R命令。
(3)RF 只显示标志寄存器内容
状态标志位的符号表示
标志位 CF进位(有/否) PF奇偶(偶/奇) AF辅助进位 ZF全零(是/否) SF符号(负/正) IF中断(允许/禁止) DF方向(增量/减量) 标志为1 CY PE AC ZR NG EI DN 标志为0 NC PO NA NZ PL DI UP
(2)带参数的D命令 带参数的命令D将显示指定地址范围的内容。有三种方式: 方式一:D 起始位置 DEBUG从起始位置开始显示128个字节的内容。 例:D 1AF5:100 方式二:D 起始位置 结束位置 DEBUG从起始位置开始一直显示到结束位置。 例:D DS:100 11F 方式三:D 起始位置 L长度 DEBUG命令从起始位置开始显示指定长度内容。 例:D DS:100 L10
调试工具DEBUG的使用
一、上机目的 (1)学习如何在Windows的命令模式下启动 DEBUG。 (2)掌握DEBUG的常用基本命令。 (3)学习如何使用DEBUG查看CPU和内存以及 进行跟踪调试。
二、启动和退出DEBUG的方法
方法1:在Windows开始菜单中单击运行命令,直接在运行对话 框中输入"DEBUG“
5.编辑命令A 作用:以汇编指令的形式向内存中写入指令 (1)-a (2)-a <起始地址> -a 1000:0 mov ax, 1 mov bx, 2 mov cx, 3 add ax, bx add ax, cx add ax, ax
6、单步跟踪命令T 作用:跟踪执行,从起点(或当前点)执行若干条指令 若不写“地址”,则T命令从CS:IP处开始执行,“指令数” 是 要执行的指令数。
四、常用DEBUG命令
1. 用R命令查看、改变CPU寄存器的内容; 2. 用U命令将内存中的机器指令翻译成汇编指令; 3. 用D命令查看内存中的内容; 4. 用E命令改写内存中的内容; 5. 用A命令以汇编指令的格式在内存中写入机器指令
6. 用T命令执行一条机器指令
1、R命令
R命令用来显示和修改16位寄存器的值
练习
(1)用R命令修改IP的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (2)用R命令修改CS的值,并查看此时CS:IP的指向,存放 的机器码以及对用的汇编指令; (3)使用D命令,查看内存10000H处的内容; (4)使用D命令,查看1000:0~1000:8中的内容,并修改 这9个字节的内容为1、2、3、4、5、6、7、8、9 (5)采用三种不同的段地址和偏移地址查看同一物理地址
-e es:0
-e 0010 (默认修改数据段) (2)-e <起始地址> <内容表>
-e 1000:10 1 ‘a+b' 2 ‘c++’ 3
该指令会将1000:10开始的连续9个字节依次修改为01H、61H、 2BH、62H、02H、63H、2BH、2BH、03H
例:将内存1000:0~1000:9单元中的内容分别写为0、1、 2、3、4、5、6、7、8、9,可用“E 起始地址 数据 数 据 数据 数据 数据……”的格式来进行。 • 步骤:
反汇编显示从起始地址到结束地址的内容
例如:命令U 100 10C表示对从CS:100到10B的内存单元进行反汇编。
3.显示内存命令D
作用:查看指定范围内的内存中的内容
D命令可以显示0000:0000H-FFFF:FFFFH中的任何一个内存单 元的内容 (1)直接输入D命令 输出3部分内容: (1)左边是每行的起始地址,用“XXXX:YYYY”表示,其中 XXXX表示内存单元的段地址,YYYY表示内存单元的偏移量; (2)中间以十六进制的形式显示从指定地址开始的128个内存 单元的内容,每行显示16个字节的内容; (3)右边显示每个内存单元中的数据对应的可显示的ASCII码 字符,若没有对应可显示的ASCII码字符,DEBUG用“.”来 代替。
OF溢出(是/否)
OV
wk.baidu.comNV
2.反汇编命令U 作用:反汇编,即显示机器码所对应的汇编指令,主要针
对代码段 格式:u [范围] (1)-u 从上一个U命令所显示地址后的第一个地址开始,反汇编显
示20H个字节内容
(2)-u <起始地址> 从起始地址处开始显示20H个字节内容
(3)-u <起始地址> <结束地址>
练习
(10)向内存从B8100H开始的单元中填写数据,如: -e b810:0000 01 02 03 04 05 05 06 注意:先填写不同的数据,观察产生的现象;再改变填写的的地址, 观察产生的现象。 (11)用汇编命令A输入如下指令: MOV AX,1 MOV BX,2 MOV CX,3 ADD AX,BX ADD AX,CX ADD AX,AX 用T跟踪观察寄存器内容的变化。 (12)上机练习课本P159第8题,并写出每个程序段执行后AL的内容及状态 标志位的值(提示:用A、R命令)
方法2:在运行对话框中输入“CMD”启动DOS命令窗口后输入
"DEBUG“ 方法3:在程序、附件、命令提示符,启动DOS命令窗口后输入
"DEBUG"
退出DEBUG的方法: -Q
三、DEBUG命令格式说明
(1)在提示符“-”下才能输入命令,在按“回车” 键后,该命令才开始执行; (2)命令是单个字母,后跟一个或多个参数,命令 和参数的大小写可混合输入,不区分大小写; (3)在DEBUG中使用的数都是以十六进制来表示的, 不能带后缀H; (4)以空格或逗号作为命令各项之间的分隔符; (5)可以用Ctrl+C或者Ctrl+Break来终止命令的执行; (6)当命令出现语法错误时,将在出错位置显示 “^Error”
• ① 用D命令查看1000:0~1000:f单元的内容:D 1000:
0 9 • ② 用E命令修改从1000:0开始的10个单元中的内容:E
1000:0 0 1 2 3 4 5 6 7 8 9
• ③ 用D命令查看1000:0~1000:9单元中内容的变化: D 1000:0 9 • 或以提问的方式修改内存内容
注:
(1)使用带参数的D命令后,接着使用D命令,可列出
后续的128个内存单元的内容。 (2)可指定段寄存器:-d CS:100 10F (3)不指定段寄存器时默认显示数据段内容
4.修改存储单元命令E 作用:用值表中的值替换从“起始地址”开始的内存单
元中的内容
(1)-e <起始地址> 以提问的方式依次修改内存单元的内容 -e 1000:0
10000H中的内容
练习
(6)用E命令向内存中写入字符。从内存1000:0开始写入:数值1,字 符“a”,数值2,字符“b”,数值3,字符“c”。 (7)用E命令向内存中写入字符串。从内存1000:0开始写入:数值1, 字符串“a+b”,数值2,字符串“c++”,数值3,字符“IBM”。 (8)用E命令以提问的方式来逐个地修改从某一地址开始的内存单元中 的内容。 (9)以从1000:10单元开始为例。 用E命令向内存中写入机器码,用U命令查看内存中机器码的含义。 机器码 对应的汇编指令 b8 01 00 MOV AX,0001 b9 02 00 MOV CX,0002 01 c8 ADD [BX+SI],AX 简单地使用A命令,从一个预设的地址开始输入指令
练习
(12)PC主板上的ROM中写有一个生产日期,在内存FFF00HFFFFFH的某几个单元中,请找到这个生产日期并试图修改。 (13)上机练习课本P159第8题,并写出每个程序段执行后AL的 内容及状态标志位的值(提示:用A、R命令)
(1)-R
显示所有寄存器(包括Flags)的值并反汇编CS:IP所指 的指令 (2)-R <寄存器名>
显示指定寄存器的值,在提示符“:”后键入新的值,
按回车键结束R命令。
(3)RF 只显示标志寄存器内容
状态标志位的符号表示
标志位 CF进位(有/否) PF奇偶(偶/奇) AF辅助进位 ZF全零(是/否) SF符号(负/正) IF中断(允许/禁止) DF方向(增量/减量) 标志为1 CY PE AC ZR NG EI DN 标志为0 NC PO NA NZ PL DI UP
(2)带参数的D命令 带参数的命令D将显示指定地址范围的内容。有三种方式: 方式一:D 起始位置 DEBUG从起始位置开始显示128个字节的内容。 例:D 1AF5:100 方式二:D 起始位置 结束位置 DEBUG从起始位置开始一直显示到结束位置。 例:D DS:100 11F 方式三:D 起始位置 L长度 DEBUG命令从起始位置开始显示指定长度内容。 例:D DS:100 L10
调试工具DEBUG的使用
一、上机目的 (1)学习如何在Windows的命令模式下启动 DEBUG。 (2)掌握DEBUG的常用基本命令。 (3)学习如何使用DEBUG查看CPU和内存以及 进行跟踪调试。
二、启动和退出DEBUG的方法
方法1:在Windows开始菜单中单击运行命令,直接在运行对话 框中输入"DEBUG“
5.编辑命令A 作用:以汇编指令的形式向内存中写入指令 (1)-a (2)-a <起始地址> -a 1000:0 mov ax, 1 mov bx, 2 mov cx, 3 add ax, bx add ax, cx add ax, ax
6、单步跟踪命令T 作用:跟踪执行,从起点(或当前点)执行若干条指令 若不写“地址”,则T命令从CS:IP处开始执行,“指令数” 是 要执行的指令数。
四、常用DEBUG命令
1. 用R命令查看、改变CPU寄存器的内容; 2. 用U命令将内存中的机器指令翻译成汇编指令; 3. 用D命令查看内存中的内容; 4. 用E命令改写内存中的内容; 5. 用A命令以汇编指令的格式在内存中写入机器指令
6. 用T命令执行一条机器指令
1、R命令
R命令用来显示和修改16位寄存器的值