Debug 的使用

R 命令:查看、修改寄存器的内容

-r:查看寄存器的内容

CS=0AF9,IP=0100,也就是说内存 0AF9:0100 处的指令为 CPU 当前要读取、执行的指令

Debug 也列出了 CS:IP 所指向的内存单元处所存放的机器码,并将它翻译成汇编指令

从上图可以看到,CS:IP 所指向的内存单元 0AF9:0100,此处存放的机器码为 E9ABD8,对应的汇编指令为 JMP D9AE

-r 寄存器:修改寄存器的内容

-r 查看一下修改的结果

-d:查看内存中的内容

查看 10000H 中的内容,-d 段地址:偏移地址,Debug 将列出从指定内存单元开始的 128 个内存单元的内容

Debug 列出了 1000:0 ~ 1000:7F 中的内容

左边是每行的起始地址

中间的是从指定地址开始的 128 个内存单元的内容,用十六进制的格式输出,每行的输出从 16 的整数倍的地址开始,最多输出 16 个单元的内容,内存 1000:0 单元中的内容是 00,内存 1000:67 单元中的内容是 19

右边是每个内存单元中的数据对应的可显示的 ASCII 码字符,如果没有对应可显示的 ASCII 字符,就用“.”替代

继续 -d 命令,可以查看之后 128 个内存单元的内容

-d 段地址:偏移地址 结尾偏移地址,可指定 -d 命令的查看范围

-e:修改内存中的内容

-e 段地址:偏移地址 数据...:修改数据

-e 段地址:偏移地址:逐个修改某一地址开始的内存单元中的内容

输入 -e 1000:0 回车

在 00. 后输入要修改成的数据,按空格键继续

也可以不修改该项的数据,直接按空格键跳过

不论是修改的还是没有修改的,只要按了空格键,就表示处理完成

按回车键,E 命令操作结束

-e 段地址:偏移地址 带单引号的字符:向内存中写入字符

没带引号修改内存单元中的内容,带引号修改内存的内容

向 1000:0、1000:2、1000:4 单元中写入数值 1,2,3;向 1000:1、1000:3、1000:5 单元中写入字符 a,b,c 的 ASCII 码值,向对应的内存中写入 a,b,c

也可以向内存中写入字符串

带双引号的是字符串

用 -e 命令向内存中写入机器码

1 机器码     对应的汇编指令
2 b80100     mov ax,0001
3 b90200     mov cx,0002
4 01c8       add ax,cx

从内存 1000:0 单元开始写入上段机器码

用 -u 命令查看内存中的机器码和对应的汇编指令

-u 命令的显示输出分为 3 部分,每一条机器指令的地址、机器指令、机器指令所对应的汇编指令

-t 命令可以执行一条或多条指令

首先通过 -r 命令把 CS:IP 指向 1000:0

然后通过 -t 命令执行写入的指令

mov ax,0001 执行后,AX 的值变为 1,IP 的值加上 3,因为 mov ax,0001 的指令长度为 3

-a 命令以汇编指令的形式在内存中写入机器指令

-a 段地址:偏移地址

-a:从一个预设的地址开始输入指令

 

posted @ 2018-07-29 23:02  Sch01aR#  阅读(279)  评论(0编辑  收藏  举报