美文网首页AT&T 汇编语言
AT&T汇编语言(寄存器分类)

AT&T汇编语言(寄存器分类)

作者: 李2牛 | 来源:发表于2018-05-07 09:48 被阅读0次

    IA-32平台下的主要寄存器有一下几类:

    • 通用寄存器
    • 段寄存器
    • 指令寄存器
    1. 通用寄存器是8个32为寄存器,用于存储正在处理的数据
    • EAX 用于操作数和结果的累加器
    • EBX 指向数据内存段中的数据的指针
    • ECX 字符串和循环操作的计数器
    • EDX IO指针
    • EDI 用于字符串操作的目标数据指针
    • ESI 用于字符串操作的源数据指针
    • ESP 堆栈指针
    • EBP 堆栈数据指针
      前4个通用寄存器可也可以通过16位或者8位名称引用,以表示寄存器的老版本。例如:EAX 的低 16 位成为 AXAX 的高 8 位称为AH ,低 8 位称为 AL
    1. 段寄存器, 6个16位寄存器,用于处理内存访问。
    • CS 代码段(code segment)
    • DS 数据段(data segment)
    • SS 堆栈段(stack segment)
    • ES附加段指针(extra segment)
    • FS 附加段指针
    • GS附加段指针
      每个段寄存器都是16位的,包含指向内存特定段的起始位置的指针。CS 包含指向内存代码段中的指针。代码段是内存中存储指令码的位置。处理器按照 CS 寄存器的值和 EIP 指令指针寄存器中包含的偏移值从内存获得指令码。程序不能显式地加载或者改变 CS 寄存器。当程序被分配一个内存空间时,处理器将为 CS 寄存器赋值。
    1. 指令指针寄存器,EIP 有时也被称为程序计数器,它指向要执行的下一条指令。

    2. 标志寄存器,一个16位的标志寄存器,通常称为程序状态字(Program Status Word,PSW)PSW。

    • CF:进位标志,最高位产生了进位或借位,CF=1,否则CF=0
    • ZF:零标志,预算结果为0,ZF=1,否则 ZF=0
    • SF:符号标志,运算结果为负,SF=1,否则 SF=0
    • OF:溢出标志,有符号数的运算如果发生了溢出,OF=1,否则 OF=0

    相关文章

      网友评论

        本文标题:AT&T汇编语言(寄存器分类)

        本文链接:https://www.haomeiwen.com/subject/pncmrftx.html