汇编语言中各种寄存器的含义与功能

目录

1. 16位寄存器组

        1.1 基本知识

        1.2 各寄存器详解

1.2.1 通用寄存器(8个)

1.2.2 段寄存器(4个)

1.2.3 控制寄存器(2个)

2. 32位寄存器

        2.1 通用寄存器(8个)

        2.2 段寄存器(6个)

        2.3 控制寄存器(2)

3. 各种寄存器详解

        3.1数据寄存器

        3.2地址指针寄存器

        3.3段寄存器

        3.4控制寄存器


1. 16位寄存器组

        1.1 基本知识

  • 数据寄存器, 变址寄存器统称为通用寄存器
  • ax中的x表示"mix(混合)"
    • ax指al与ah的混合(al为高8位, ah为低8位)
    • eax中e表示extended(扩展)
  • 8086的16位寄存器共14个, 分为
    • 8个通用寄存器(ax-dx, si, di, sp,bp)
      • 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址
    • 4个段寄存器(cs, ds, es, ss)
    • 2个控制寄存器(IP, PC)

        1.2 各寄存器详解

1.2.1 通用寄存器(8个)
  • ax        Accumulator Register        累加寄存器        算术运算的主要寄存器
  • bx        Base Register        基址寄存器, 属于数据寄存器,但进程作为地址寄存器        
  • cx        Count Register        计数寄存器        串操作,循环控制的计数器;循环语句中默认存放循环次数, 位操作中低八位cl指明移位位数
  • dx        Data Register        数据寄存器, 乘除运算中为默认操作数;IO指令中用作地址寄存器
  • SI        Source Index Register        源变址寄存器
  • DI        Destination Index Register        目的地址寄存器         
  • SP        Stack Point Register       堆栈寄存器
  • BP        Base Pointer Register        基址指针寄存器
1.2.2 段寄存器(4个)
  • cs        code segment register        代码段寄存器       

  • ds        data segment register        数据段寄存器       

  • es        extra segment register        附加段寄存器       

  • ss        stack segment register        堆栈段寄存器        

1.2.3 控制寄存器(2个)
  • IP        instruction pointer        指令指针,即PC (program counter)程序计数器       
  • PSW        Processor State Word        微处理器状态字 其中PSW包括有9个标志位:
    • CF—Carry Flag,进位标志
    • PF—Parity Flag,奇偶标志
    • AF—Auxiliary Carry Flag,辅助进位标志
    • ZF—Zero Flag,零标志
    • SF—Sign Flag,符号标志
    • TF—Trap Flag,陷阱标志
    • IF—Interrupt Enable Flag,中断允许标志
    • DF—Direction Flag,方向标志
    • OF—Overflow Flag,溢出标志

2. 32位寄存器

        2.1 通用寄存器(8个)

32位CPU的寄存器是32位的,并且32位的寄存器组增加了一些新的寄存器。对32位的通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP的低16位数据进行存取不影响高16位,所以,这些通用寄存器的低16位依旧用16位的AX、BX、CX、DX、SI、DI、SP、BP寄存器来表示。。

32位的EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP与8086中的16位的AX、BX、CX、DX、SI、DI、SP、BP功能相似。

        2.2 段寄存器(6个)

CS—Code Segment Register,代码段寄存器
DS—Data Segment Register,数据段寄存器
SS—Stack Segment Register,堆栈段寄存器
FS—Flag Segment Register,标志段寄存器

  • FS寄存器指向当前活动进程的线程的TEB结构
  • FS:[0]的地址指向TEB结构, 该结构开头为NT_TIB结构

GS—Global Segment Register,全局段寄存器

        2.3 控制寄存器(2)

  • EIP—Extended Instruction Pointer,扩展的指令指针,即PC(Program counter),程序计数器。
  • PSW—Processor State Word,微处理器状态字, 有9+4个标志位
    • 溢出标志 IOPL—I/O Privilege Level,
    • I/O特权标志 NT—Nested Task,
    • 嵌套任务标志 RF—Restart Flag,重启动标志
    • VM—Virtual 8086 Mode,虚拟8086方式标志
    • 其余同16位寄存器的

3. 各种寄存器详解

        3.1数据寄存器

  • ax, bx, cx, dx
  • 在16位CPU中, 这几个寄存器不能作为基址和变址寄存器来存放存储单元的地址
  • EAX为32位寄存器
    AX为EAX的低16位的 “ 子寄存器 ”
    ——这么叫是为了方便理解
    AL为EAX(或说AX)低8位的 “ 子寄存器 ”
    AH为AX高八位的“ 子寄存器 ”

    其他的同理!!

        3.2地址指针寄存器

  • 地址指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
  • SI(源地址寄存器), DI(目标地址寄存器), BP(基址指针寄存器), SP(堆栈指针寄存器)

        3.3段寄存器

  • 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
  • CS,Code,代码段寄存器,用于存放当前执行程序的段地址,IP为指令指针。
  • DS,Data,数据段寄存器,用于存放当前数据段的段地址。
  • ES,Extra,附加段寄存器,用于存放当前附加数据段的段地址
  • SS,Stack,堆栈段寄存器,用于存放当前堆栈段的段地址。
  • FS,Flag,标志段寄存器,FS寄存器指向当前活动线程的TEB结构(线程结构)。
  • GS,Global,全局段寄存器

        3.4控制寄存器

  •  IP,Instruction,指令指针寄存器,用于保存下一条即将要执行的指令的段内偏移地址。一般要通过转移指令、子程序调用、返回指令等才能改变IP的值。 
    • 32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。
  • PSW,Processor State Word,微处理器状态字,其中DF、IF、TF标志用于控制CPU操作,其他ZF、SF、AF、PF、CF、OF反映ALU前一次操作的结果状态。
    •  CF,Carry,进位标志,加减运算时,最高位有进(借)位时,CF=1
    • PF,Parity,奇偶标志,操作结果的低8位中含有“1”的个数为偶数个时,PF=1
    • AF,Auxiliary Carry,辅助进位标志,加减运算时,D3位有进(借)位时,AF=1
    • ZF,Zero,零标志,运算结果为0时,ZF=1
    • SF,Sign,符号标志,操作结果的符号,结果为负,SF=1
    • OF,Overflow,溢出标志,有符号数运算时是否溢出的标志,溢出,则OF=1
    • 控制CPU的标志位:
      • DF,Direction,方向标志,字符串操作中,DF=0时,地址寄存器(SI,DI)的内容递增;DF=1时,(SI,DI)的内容递减。
      • IF,Interrupt Enable,中断允许标志,IF=1时,CPU能够响应可屏蔽中断请求;IF=0时,则CPU不能响应中断请求
      • TF,Trap,陷阱标志,TF=1时,则CPU处于单步执行方式,即每执行一条指令就自动执行一次类型1的内部中断,这主要用于Debug中。
    • 32位寄存器特有:
      • IOPL,I/O Privilege Level,I/O特权标志,I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。
        如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。
      • NT,Nested Task,嵌套任务标志,嵌套任务标志NT用来控制中断返回指令IRET的执行。NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;NT=1,通过任务转换实现中断返回。
      • RF,Restart Flag,重启动标志,重启动标志RF用来控制是否接受调试故障。RF=0时,表示“接受”调试故障,否则拒绝之。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。
      • VM,Virtual 8086 Mode,虚拟8086方式标志,VM=1,表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。
  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ARMv8是一种广泛应用于高性能计算机和嵌入式系统的指令集架构。ARMv8汇编语言官方手册文提供了对ARMv8架构的深入了解和详细的指令集说明。该手册包含了ARMv8指令的语法、指令格式、寄存器用法、代码示例等内容,为使用ARMv8汇编语言进行开发的程序员提供了重要参考。 这本手册以简洁明了的方式介绍了ARMv8指令的各个方面。它首先介绍了ARMv8架构的基本概念,包括指令的分类、寄存器的用途以及条件执行等。然后,通过一系列易于理解的示例和图表,详细说明了各种ARMv8指令的用法和功能。 此外,该手册还介绍了一些高级主题,例如异常处理、协处理器、向量处理等。这些主题对于需要进一步优化性能和处理特定任务的开发者来说尤为重要。手册还提供了一些实用的编程技巧和建议,以帮助开发者更好地利用ARMv8指令集进行优化。 总体来说,ARMv8汇编语言官方手册文提供了全面的指令集文档和编程指南,对于想要深入理解ARMv8架构及其汇编语言的开发者来说是一本不可或缺的参考资料。无论是从事高性能计算机还是嵌入式系统开发,掌握该手册的知识都将为开发者带来巨大的帮助。 ### 回答2: armv8汇编语言官方手册文是一本关于armv8架构下汇编语言的权威指南。在这本手册,详细介绍了armv8架构的指令集和编程模型,为开发人员提供了完整的参考。 这本手册以简洁明了的语言描述了每个指令的用途、操作方式和操作数,并提供了详细的示例代码和解释。无论是初学者还是有经验的开发人员,都能从获得宝贵的知识和指导。 除了指令集和编程模型外,手册还包含了有关程序的加载和运行的信息,以及关于内存管理单元(MMU)和异常处理的相关内容。这些内容对于理解armv8架构的工作原理和优化程序性能至关重要。 手册还介绍了一些常用的工具和技术,如调试器、仿真器和性能分析器。这些工具和技术能够帮助开发人员更好地调试和优化他们的程序。 总之,armv8汇编语言官方手册文是开发人员学习和掌握armv8汇编语言的必备指南。它提供了全面的信息,并以易懂的方式呈现,无论是初学者还是有经验的开发人员都能从受益。无论是为嵌入式系统编程还是为移动设备开发应用程序,这本手册都是一个不可或缺的工具。 ### 回答3: ARMv8汇编语言官方手册文是一本详细介绍ARMv8指令集以及其使用的汇编语言的指南。这本手册包含了ARMv8架构的基本概念、寄存器使用方式、指令编码、指令格式和寄存器操作等内容,提供了深入理解ARMv8架构和汇编语言的重要信息。 首先,手册介绍了ARMv8汇编语言的基本概念和特点,例如寄存器的使用、立即数和地址计算等。它还提供了一些常用指令的示例用法,如数据传输指令、算术运算指令和逻辑运算指令等,通过这些示例可以帮助读者掌握基本的指令使用方法。 手册还详细解释了指令的编码方式和指令格式,包括操作码、寄存器编号、立即数和地址计算等。这些内容帮助读者理解指令的含义和作用,为编写和调试ARMv8汇编代码提供了指导。 此外,手册还介绍了ARMv8架构的一些高级特性和扩展指令集,如SIMD指令集和浮点指令集。这些特性和指令集能够显著提高ARMv8处理器的计算性能和并行处理能力,对于实现高效的算法和应用程序非常重要。 总的来说,ARMv8汇编语言官方手册文是学习和掌握ARMv8架构和汇编语言的重要参考资料。读者通过详细阅读和理解手册的内容,可以深入了解ARMv8的基本原理和编程技巧,为开发高性能、低功耗的ARMv8应用程序奠定坚实基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值