《软件调试分析技术》学习笔记(二)

14 篇文章 0 订阅
13 篇文章 0 订阅

1.寄存器

寄存器M讲的比较透彻。寄存器是中央处理器CPU的组成部分,是有限存贮容量的高速存贮部件,它们可用来暂存指
令、数据和位址,是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。

1.1数据寄存器  
    数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问
存储器的时间。这些 低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器
相一致。在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,
但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑
运算结果,而且也可作为指针寄存器, 所以,这些32位寄存器更具有通用性。

1.2变址寄存器
    寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内
的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供
方便。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,
而且还具有特 殊的功能。

1.3指针寄存器
    寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元
的偏移量, 用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供
方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运
算结果

它们主要用于访问堆栈内的存储单元,并且规定:
BP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据; 
SP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

1.4段寄存器
    段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏
移量组合而成 的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址

1.5指令指针寄存器
    指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预
取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。
1.6标志寄存器
    标志寄存器(Flags Register,FR)又称程序状态字(Program Status Word,PSW)。这是一个存
放条件标志、控制标志寄存器,主要用于反映处理器的状态和运算结果的某些特征及控制指令的执
行。

其中有些要有一定的汇编基础,希望大家好好在实践里体验。

2  汇编指令
    汇编指令是汇编语言中使用的一些操作符和助记符,还包括一些伪指令(如assume,end)。用
于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编
程序所识别并指导汇编如何进行。汇编指令多到数不过来。这里来介绍些常用到的:
一、数据传输指令
MOV        传送字或字节
PUSH       把字压入堆栈
POP        把字弹出堆栈
PUSHA      把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈
POPA       把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈
PUSHAD     把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈
POPAD      把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈
PUSHF      标志入栈
POPF       标志出栈
LEA        装入有效地址
LDS        传送目标指针,把指针内容装入DS
LES        传送目标指针,把指针内容装入ES
LAHF       标志寄存器传送,把标志装入AH
SAHF       标志寄存器传送,把AH内容装入标志寄存器
二、算术运算指令
ADD        加法
ADC        带进位加法
INC        加 1 
SUB        减法
SBB        带借位减法
DEC        减 1
NEC        求相反数(以 0 减之)
CMP        比较(两操作数作减法,仅修改标志位,不回送结果)
MUL        无符号乘法
IMUL       整数乘法
DIV        无符号除法
IDIV       整数除法
三、逻辑运算指令
OR         或运算
AND        与运算
XOR        异或运算
NOT        取反
TEST       测试,两操作数作与运算,仅修改标志位,不回送结果
SHL        逻辑左移
SHR        逻辑右移
ROL        循环左移
ROR        循环右移
RCL        通过进位的循环左移
RCR        通过进位的循环右移
四、串指令
MOVSX      先符号扩展,再传送
MOVZX      先零扩展,再传送
MOVS       串传送
CMPS       串比较
五、程序转移指令
JMP        无条件转移指令
CALL       过程调用
RET        过程返回
JG/JNLE    大于转移
JGE/JNL    大于或等于转移
JL/JNGE    小于转移
JLE/JNG    小于或等于转移
JE/JZ      等于转移
JNE/JNZ    不等于时转移
LOOP       CX不为零时循环

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值