咨询热线

HASHKFK

新闻资讯
您当前的位置: 首页 > 新闻资讯 > OD SPORTS
OD体育新闻 OD SPORTS

OD体育官方网站(OD SPORTS)全球赔率最高在线投注平台反汇编语言解释

时间:2024-10-01 14:57:40
更多
  

  OD体育官方网站(OD SPORTS)全球赔率最高在线投注平台(访问: hash.cyou 领取999USDT)

OD体育官方网站(OD SPORTS)全球赔率最高在线投注平台OD反汇编语言解释

  OD反汇编语言解释本文由雷岙禹贡献刚刚找老资料,翻出点好东西反汇编语言解释,新人来看吧刚刚找老资料翻出点好东西,OD反汇编语言解释新人来看吧翻出点好东西32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(BaseRegister)。它可作为存储器指针来使用;寄存器ECX称为计数寄存器(CountRegister)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(DataRegister)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。2、变址寄存器32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。寄存器ESI、EDI、SI和DI称为变址寄存器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。3、指针寄存器其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。32位CPU有2个32位通用寄存器EBP和ESP。它们主要用于访问堆栈内的存储单元,并且规定:EBP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据;ESP为堆栈指针(StackPointer)寄存器,用它只可访问栈顶。寄存器EBP、ESP、BP和SP称为指针寄存器(PointerRegister),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。4、段寄存器段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。CPU内部的段寄存器:ECS——代码段寄存器(CodeSegmentRegister),其值为代码段的段值;EDS——数据段寄存器(DataSegmentRegister),其值为数据段的段值;EES——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值;ESS——堆栈段寄存器(StackSegmentRegister),其值为堆栈段的段值;EFS——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值;EGS——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值。在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。。5、指令指针寄存器32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。指令指针EIP、IP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。6、标志寄存器一、运算结果标志位1、进位标志CF(CarryFlag)进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。2、奇偶标志PF(ParityFlag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采 用 奇偶校验的方法,就可使用该标志位。 3、辅助进位标志 AF(Auxiliary Carry Flag) 在发 生下列情况时,辅助进位标志 AF 的值被置为 1,否则其值为 0: (1)、在字操作时,发生低字节向高字节进位或借位时; (2)、在字节操作时,发生低 4 位 向高 4 位进位或借位时。 对以上 6 个运算结果标志位,在一般编程情况下,标志位 CF、 ZF、SF 和 OF 的使用频率较高,而标志位 PF 和 AF 的使用频率较低。 4、零标志 ZF(Zero Flag) 零标志 ZF 用来反映运算结果是否为 0。如果运算结果为 0,则其值为 1,否则其值 为 0。在判断运算结果 是否为 0 时,可使用此标志位。 5、符号标志 SF(Sign Flag) 符号 标志 SF 用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号 数采用码 表示法,所以,SF 也就反映运算结果的正负号。运算结果为正数时,SF 的值为 0, 否则其值为 1。 6、溢出标志 OF(Overflow Flag) 溢出标志 OF 用于反映有符号数加减运算 所得结果是否溢出。如果运算结果超过当前运算位数所能表示的 范围,则称为溢出,OF 的 值被置为 1,否则,OF 的值被清为 0。 “溢出”和“进位”是两个不同含义的概念,不要 混淆。如果不太清楚的话,请查阅《计算机组成原理》课程 中的有关章节。 二、状态控制 标志位 状态控制标志位是用来控制 CPU 操作的,它们要通过专门的指令才能使之发生改变。 1、追踪标志 TF(Trap Flag) 当追踪标志 TF 被置为 1 时,CPU 进入单步执行方式,即每执 行一条指令,产生一个单步中断请求。这种 方式主要用于程序的调试。 指令系统中没有专 门的指令来改变标志位 TF 的值,但程序员可用其它办法来改变其值。 2、中断允许标志 IF(Interrupt-enable Flag) 中断允许标志 IF 是用来决定 CPU 是否响应 CPU 外部的可屏 蔽中断发出的中断请求。 但不管该标志为何值,CPU 都必须响应 CPU 外部的不可屏蔽中断 所发出的中断请求,以及 CPU 内部产生 的中断请求。 具体规定如下: (1)、当 IF=1 时, CPU 可以响应 CPU 外部的可屏蔽中断发出的中断请求; (2)、当 IF=0 时,CPU 不响应 CPU 外部的可屏蔽中断发出的中断请求。 CPU 的指令系 统中也有专门的指令来改变标志位 IF 的值。 3、方向标志 DF(Direction Flag) 方向标志 DF 用来决定在串操作指令执行时有关指针寄存器发生调整的方向。 具体规定在第 5.2.11 节—— 字符串操作指令——中给出。 在微机的指令系统中,还提供了专门的指令来改变标 志位 DF 的值。 三、32 位标志寄存器增加的标志位 1、I/O 特权标志 IOPL(I/O Privilege Level) I/O 特权标志用两位二进制位来表示, 也称为 I/O 特权级字段。 该字段指定了要 求执行 I/O 指令的特权级。 如果当前的特权级别在数值上小于等于 IOPL 的值,那么,该 I/O 指令可执行,否则将发生一个保护异常。 2、嵌套任务标志 NT(Nested Task) 嵌套任务 标志 NT 用来控制中断返回指令 IRET 的执行。具体规定如下: (1)、当 NT=0,用堆栈中保 存的值恢复 EFLAGS、CS 和 EIP,执行常规的中断返回操作; (2)、当 NT=1,通过任务转换 实现中断返回。 3、重启动标志 RF(Restart Flag) 重启动标志 RF 用来控制是否接受调试 故障。规定:RF=0 时,表示“接受”调试故障,否则拒绝之。 在成功执行完一条指令后, 处理机把 RF 置为 0,当接受到一个非调试故障时,处理机就把它置为 1。 4、虚拟 8086 方式标志 VM(Virtual 8086 Mode) 如果该标志的值为 1,则表示处理机处于 虚拟的 8086 方式下的工作状态,否则,处理机处于一般保护方 式下的工作状态。 汇编指 令集合 一、常用指令 1. 通用数据传送指令. MOV 传送字或字节. MOVSX 先符号扩展,再传 送. MOVZX 先零扩展,再传送. 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 依次弹出堆栈. BSWAP 交换 32 位寄存器里字节的顺序 XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比 较并交换操作数.( 第二个操作数必须为累加器 AL/AX/EAX ) XADD 先交换再累加.( 结果在 第一个操作数里 ) XLAT 字节查表转换. BX 指向一张 256 字节的表的起点, AL 为表的索引

地址:OD体育官方网站(OD SPORTS)竞技游戏展示工作室有限公司   电话:HASHKFK
传真:0896-98589990
ICP备案编号:
Copyright © 2012-2024 OD体育官方网站(OD SPORTS)竞技游戏展示工作室有限公司 版权所有 非商用版本