汇编debug调试指令与解析

一、win10下debug的环境配置

参考https://ask.dobunkan.com/article-4935.html,安装配置即可,本文主要讲解debug下具体怎么使用。

二、汇编debug常用指令

在这里插入图片描述
指令使用示例(不区分大小写):
(1)r指令
比如r 查看cpu寄存器的内容
在这里插入图片描述
r ax 修改ax寄存器内容,其他寄存器修改类似。
在这里插入图片描述
(2)d指令,查看内存内容
在这里插入图片描述
(3)u指令,内存的机器码翻译为汇编语言
在这里插入图片描述
(4)e指令,修改内存的内容
在这里插入图片描述
修改后:
在这里插入图片描述
(5)t指令,执行下一条机器指令
在这里插入图片描述
(6)a, 以汇编形式在内存中写入一条机器指令

在这里插入图片描述

三、AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,IP寄存器详解

在这里插入图片描述
如上图,AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,IP这些寄存器的具体含义是啥?

AX――累加器(Accumulator),使用频度最高
BX――基址寄存器(Base Register),常存放存储器地址
CX――计数器(Count Register),常作为计数器
DX――数据寄存器(Data Register),存放数据

DS is called data segment register. It points to the segment of the data used by the running program. You can point this to anywhere you want as long as it contains the desired data.

DS叫做段寄存器, 指向当前运行着的程序的数据段. 你可以把它指向任何你想要的地方, 只要那个地方有你想要的数据.

ES is called extra segment register. It is usually used with DI and doing pointers things. The couple DS:SI and ES:DI are commonly used to do string operations.

ES叫做额外的段寄存器(附加段寄存器). 它通常跟DI一起用来做指针使用. DS:SI和ES:DI配对时通常用来执行一些字符串操作.

SS is called stack segment register. It points to stack segment.

SS叫做栈段寄存器, 它指向栈段.

The register SI and DI are called index registers. These registers are usually used to process arrays or strings.

SI和DI两个寄存器叫做索引寄存器, 这两个寄存器通常用来处理数组或字符串.

SI is called source index and DI is destination index. As the name follows, SI is always pointed to the source array and DI is always pointed to the destination. This is usually used to move a block of data, such as records (or structures) and arrays. These register is commonly coupled with DS and ES.
SI叫做源索引寄存器, DI叫做目的索引寄存器. 正如它们的命名, SI通常指向源数组, DI通常指向目的数组. 他们通常被用来成块地移动数据, 比如移动数组或结构体. SI和DI通常和DS和ES一起使用.

The register BP, SP, and IP are called pointer registers.

BP, SP, 和IP叫做指针寄存器.

BP is base pointer, SP is stack pointer, and IP is instruction pointer. Usually BP is used for preserving space to use local variables.

BP是基指针, SP是栈指针, IP是指令指针. 通常BP用来保存使用局部变量的地址.

SP is used to point the current stack. Although SP can be modified easily, you must be cautious. It’s because doing the wrong thing with this register could cause your program in ruin.

SP用来指向当前的栈. 尽管SP可以被很容易地修改, 你还是一定要非常小心. 因为如果这个寄存器搞错了, 你的程序就毁了.

IP denotes the current pointer of the running program. It is always coupled with CS and it is NOT modifiable.

IP用来指示当前运行程序的当前指针. 通常和CS一起使用, IP是不允许修改的.

So, the couple of CS:IP is a pointer pointing to the current instruction of running program. You can NOT access CS nor IP directly.

所以, CS:IP配对用来指示当前运行的指令地址. 你不能直接访问CS, 也不能直接访问IP。

四、NV UP EI PL NZ NA PE NC含义

在这里插入图片描述
如上图,NV UP EI PL NZ NA PE NC的含义,可参考网上一片不错的文章查看分析:
https://www.cnblogs.com/AI-Algorithms/p/3919845.html

猜你喜欢

转载自blog.csdn.net/u014470361/article/details/100548752
今日推荐