通用寄存器

11 篇文章 0 订阅

计算的内置寄存器结构分布,以8086CPU的内部寄存器为例:

8086CPU的内部寄存器

16位CPU通用寄存器共有8个,AX,BX,CX,DX,SP,BP,SI,DI
AH和AL是将一个16位的寄存器分别作为两个独立的寄存器,高8位记作H,低8位记作L。
其中有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。
32位CPU通用寄存器共也有8个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI,特殊用途和16位的相同

数据寄存器出了作为通用寄存器外,他们还有各自的习惯用法

  • AX(Accumulator):累加器,常用语存放算是逻辑运算中的操作符,另外所有的I/O指令都使用累加器与外设接口传送信息
  • BX(Base):基址寄存器,常用于存放内存时的基地址
  • CX(Count):计数寄存器,在循环和串操作指令中用作计数器
  • DX(Data):数据寄存器,在寄存器间接寻址的I/O指令中存放I/O端口的地址

地址指针寄存器

  • SP(Stack Pointer):堆栈指针寄存器,他在堆栈操作中用来存放栈顶偏移地址,永远指向堆栈的栈顶
  • BP(Base Pointer):基址指针寄存器,一般也常用来存放访问内存时的基地址,但他常与ss寄存器配对使用

作为通用寄存器,SP、BP都可以存放数据,但是在实际中他们常见的用途是存放内存单元地址。

变址寄存器

  • SI(Source Index):源变址寄存器
  • DI(Destination Index):目的变址寄存器

他们常常在变址寻址方式中作为索引指针

段寄存器

  • CS(Code Segment):代码段寄存器
  • SS(Stack Segment):堆栈段寄存器
  • DS(Data Segment):数据段寄存器
  • ES(Extra Segment):附加段寄存器

段寄存器用于存放段基址,即段起始地址的高16位

控制寄存器

  • IP(Instruction Pointer):指令指针寄存器,用以存放预取指令的偏移地址
  • FLAGS:标志寄存器或程序状态字(PSW),他是16位寄存器但是只能使用9位,这9位包括6个状态标志,3个控制标志

FLAGS

状态标志位记录了算术和逻辑运算结构的一些特征:
CF:进位标志位,进行加减运算时若最高位有进位或者借位,则CF=1,否则为0
PF:奇偶标志位,当运算结构的低8位中的1的个数为偶数时PF=1,奇数时为0
AF:辅助进位标志位,在加减法操作中,D3向D4有进位或借位发生时,AF=1,否则AF=0,DAA和DAS指令检测这个标志位,以便在BCD加法或减法之后调整AL中的值
ZF:零标识位,当运算结果为0时ZF=1,否则ZF=0
SF:符号标志位,当运算结果的最高位为1时SF=1,否则SF=0
OF:溢出标志位,当算术运算的结果超出了带符号数的范围,即溢出时OF=1,否则OF=0
控制标志位用于设置控制条件,控制标志被舍弃后标对其后的操作产生控制作用
TF:陷阱标志位,当TF=1时,激活处理器的调试特性,使CPU处于单步执行指令工作方式,每执行一条指令后,自动产生一次单步中断,从而使用户能逐条指令的检查程序
IF:中断允许标志位,IF=1使CPU可以相应可屏蔽中断请求,IF=0使CUP禁止响应可屏蔽中断请求,IF的状态对不可屏蔽中断及内部中断没有影响
DF:方向标志位,在执行串操作指令时控制操作的方向,DF=1时按减地址方式进行,即从高地址开始,没进行一次操作地址指针自动减1或减2,DF=0时则按增地址方式进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值