目录
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)
- 8个通用寄存器(ax-dx, si, di, sp,bp)
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方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。
- IOPL,I/O Privilege Level,I/O特权标志,I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。该字段指定了要求执行I/O指令的特权级。
今天的文章汇编语言中各种寄存器的含义与功能是什么_verilog是什么分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81377.html