`
zzc1684
  • 浏览: 1224527 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

学 Win32 汇编[16]: 常用寄存器的常规功能

 
阅读更多

 

通用寄存器 EAX EBX ECX EDX ESI EDI ESP EBP 指令指针寄存器 EIP 标志寄存器 EFLAGS
累加(Accumulator)寄存器 AX(AH、AL) 常用于乘、除法和函数返回值
基址(Base)寄存器 BX(BH、BL) 常做内存数据的指针, 或者说常以它为基址来访问内存.
计数器(Counter)寄存器 CX(CH、CL) 常做字符串和循环操作中的计数器
数据(Data)寄存器 DX(DH、DL) 常用于乘、除法和 I/O 指针
来源索引(Source Index)寄存器 SI 常做内存数据指针和源字符串指针
目的索引(Destination Index)寄存器 DI 常做内存数据指针和目的字符串指针
堆栈指针(Stack Point)寄存器 SP 只做堆栈的栈顶指针; 不能用于算术运算与数据传送
基址指针(Base Point)寄存器 BP 只做堆栈指针, 可以访问堆栈内任意地址, 经常用于中转 ESP 中的数据, 也常以它为基址来访问堆栈; 不能用于算术运算与数据传送
指令指针(Instruction Pointer)寄存器 总是指向下一条指令的地址; 所有已执行的指令都被它指向过.

标志(Flag)寄存器:
EFLAGS 中的 32 位被分成 0-31 个二进制位分别使用;
第 0、2、4、6、7、11 位是状态标志位;
第 10 位是字符串操作控制标志位;
其他标志位一般不用或无权使用
 

0 CF 进位(Carry)标志 目标无法容纳无符号算术运算的结果, 需要进位或借位时被设置; 可用 STC 指令设置, CLC 指令取消.
1      
2 PF 奇偶(Parity)标志 低 8 位中有偶数个 1 时被设置
3      
4 AF 辅助(Auxiliary)标志 使用 BCD 码运算导致 3 位到 4 位产生进位时被设置
5      
6 ZF 零(Zero)标志 运算结果为 0 时被设置
7 SF 符号(Sign)标志 运算结果为负数时被设置
8      
9      
10 DF 方向(Direction)标志 字符串操作是从高位到低位时被设置; 可用 STD 指令设置, CLD 指令取消.
11 OF 溢出(Overflow)标志 因有符号运算的结果太宽而导致数据丢失时被设置
...      
31      
...          


其中的 EAX、ECX、EDX 三个寄存器相对自由些, 所以练习时用它们较多.

没理会段寄存器: CS、DS、SS、ES、FS、GS, 是因在 Win32 保护模式下编程它们不再重要了.

还有 FPU、MMX 系列寄存器, 等用到再说吧.

分享到:
评论

相关推荐

    WIN32汇编用WINIO模拟键盘

    "WIN32汇编用WINIO模拟键盘"的主题涉及了几个关键知识点,包括WIN32汇编语言、驱动程序编程、键盘模拟以及WINIO库的使用。 首先,**WIN32汇编语言**是Windows操作系统平台上的一种低级编程语言,它允许程序员直接...

    使用VS2015调试罗云彬的32位汇编语言源代码

    ### 使用VS2015调试罗云彬的32位汇编语言源代码 #### 一、概述 本文旨在详细介绍如何使用Visual Studio 2015来调试罗云彬教授的《Windows环境下32位汇编语言程序设计(最新琢石成器版)》一书中所附带的32位汇编...

    win7 64位debug工具

    在学习汇编时,使用调试工具可以帮助理解程序的执行流程,检查内存、寄存器状态以及跟踪调用堆栈,这对于优化代码、查找错误至关重要。 2. **64位环境下的调试挑战** 在64位系统中,地址空间扩大,数据类型、指针...

    VS2015下搭建64位汇编环境

    在“配置属性”>“C/C++”>“常规”下,将“汇编语言选项”设置为“无”,因为我们将编写纯汇编代码,而不是C或C++混合代码。在“配置属性”>“链接器”>“系统”下,确保“子系统”设置为“控制台”。 3. **添加...

    OllyDB入门教程

    OllyDB由OllyDbg的开发者Olly冰在2000年发布,它提供了强大的反汇编能力、内存查看和修改功能、断点设置与管理等,使得用户能够追踪程序执行流程,观察和控制程序状态。OllyDB在Windows平台上运行,尤其适合分析32位...

    Libraries and System Calls Reference (库和系统调用参考)

    - **C-callable NtStyle Win32 API subset**:提供了一个兼容 Win32 API 的子集。 - **Register-based software interrupt interface**:为 TNT DOS-Extender, MS-DOS, 和 BIOS 系统调用提供基于寄存器的软件中断...

    用windows自带工具手写exe

    例如,使用NASM,我们可以使用`nasm -f win32 file.asm -o file.obj`命令来完成这个步骤。 接着,链接器(Linker)将.obj文件与其他必要的库文件链接,生成最终的.exe文件。在Windows中,Microsoft的link.exe工具...

    olldbg入门教程

    总结,olldbg作为一款强大的Win32调试工具,不仅适用于常规的bug调试,还在逆向工程和安全分析领域有着广泛的应用。通过掌握olldbg的基本操作和高级技巧,你可以更好地理解和控制程序的运行,从而提高开发和调试的...

    OllyICE,od

    代码高亮: OllyDbg 的反汇编器可以高亮不同类型的指令(如:跳转、条件跳转、入栈、出栈、调用、返回、特殊的或是无效的指令)和不同的操作数(常规[general]、FPU/SSE、段/系统寄存器、在栈或内存中的操作数,...

    Win95和NT下直接存取物理内存和端口IO地址的程序.zip_memory access_物理内存

    标题中的"Win95和NT下直接存取物理内存和端口IO地址的程序"指的是针对这两种早期Windows操作系统的程序,这些程序允许程序员或系统开发者绕过常规的内存管理和I/O管理机制,直接与硬件交互。 1. **物理内存访问**:...

    驱动级按键模拟winio源码

    此外,对汇编语言和计算机硬件原理的了解也是必不可少的,因为这些底层操作往往涉及到硬件寄存器的直接操作。最后,熟悉调试工具,如WinDbg,可以帮助开发者在开发过程中有效地调试和测试驱动程序。

Global site tag (gtag.js) - Google Analytics