Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244642
  • 博文数量: 21
  • 博客积分: 493
  • 博客等级: 下士
  • 技术积分: 308
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-05 12:21
文章分类

全部博文(21)

文章存档

2013年(1)

2012年(20)

分类: LINUX

2012-10-19 19:52:56

8086/8088寄存器组

4个16位数据寄存器:AX,BX,CX,DX
8个8位寄存器: AH,AL  BH,BL  CH,CL  DH,DL 
2个16位指针寄存器:SP,BP
2个16位变址寄存器:SI,DI
2个16位控制寄存器:IP,FLAG
4个16位段寄存器:CS,DS,ES,SS

1.通用寄存器
数据寄存器,指针寄存器和变址寄存器统称为通用寄存器。这些寄存器除了各自专门用途外,他们均可用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果。

(1)数据寄存器AX(AH,AL)BX(BH,BL)CX(CH,CL)DX(DH,DL)
主要用来保存操作数或运算结果等信息,他们的存在节省了为存取操作数所需占用总线和访问寄存器的时间
AX,AL又叫累加器
BX:基址寄存器(唯一可以作为存储器指针使用的寄存器)
CX:用于字符串操作,控制循环次数      CL:移位位数
DX:做32位乘除法,存放被除数,或者用它保留余数

(2)变址和指针寄存器
变址和指针寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器指针使用。作为通用寄存器,他们可以保存16位算数逻辑运算中的操作数和运算结果,有时运算结果就是需要的存储单元地址的偏移。
SI,DI 用于串操作
SP,BP用于堆栈 (SP保存堆栈指针栈顶地址,BP堆栈数据区基址的偏移)

2.段寄存器
CS,DS,ES,SS实现寻址1M字节物理地址空间,8086/8088把1M字节地址空间分成若干逻辑段,这四个段寄存器用来保存当前使用的段值
CS:代码段 放程序
DS:数据段 放操作数据
ES:附加段
SS:堆栈段 存取数据

3.控制寄存器
(1)指令指针
IP:给出接着要执行的指令在代码段中的偏移(说白了就是永远指向下一条指令)
(2)标志寄存器
包含9个状态,主要用于反映处理器运算结果的某些特征。
运算结果标志
1.进位标志CF
反映运算是否产生进位或借位,有进/借位CF=1 没有CF=0

2.零标志ZF
反映运算结果为0.若运算结果为0,ZF=0

3.符号标志位SF
反映运算结果的符号位。SF与运算结果的最高位相同  负数为1

4.溢出标志OF
运算结果超出了8位或16位有符号数表示的范围(-128~127)(-32768~32767),否则就溢出,OF=1

5.奇偶标志PF
反映结果中的1的个数。1的个数为偶数,则PF=1,否则PF=0

6.辅助进位标志AF
在字节操作时,如果发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字节进位或借位时AF=1

状态控制标志
1.方向标志DF
决定串操作,指针寄存器调整的方向。DF=1,串操作指令按减方式改变有关存储器指针。当DF=0时,按加方式。

2.中断允许标志IF
决定CPU是否响应外部可屏蔽中断请求,当IF=1时,CPU能够响应外部的可屏蔽中断请求;为0不响应。

3.追踪标志TF
当TF被置1后,CPU进入单步方式。是指在一条指令执行后,产生一个单步中断,主要用于调试程序。
阅读(1671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~