说说寄存器和内存那些事(8088/8086中的寄存器)

最近一直在好奇一个问题:寄存器和内存之间到底什么关系?我是知道寄存器是在CPU中的,但是内存存储空间是在硬件的哪里呢?知道这个问题的答案之后,觉得自己问这种问题确实点憨。你是不是啥傻?忘了有个东西叫做内存条?它是在CPU之外的。想了这个问题之后,更加认识到实践到底多么重要,尤其像我这种之间根本不了解硬件的人。好了下面进入正题

寄存器

寄存器是什么?
寄存器由具有存储功能的触发器组合而成,1个触发器可以存储1位二进制数。那么16位的寄存器就需要16个触发器构成
寄存器的功能
寄存器可以用来暂存指令,数据和地址。
寄存器的作用
寄存器存放当前CPU的环境以及任务环境的数据。简单来说:寄存器是CPU与内存之间沟通的桥梁。

  1. 存放从内存中读取的数据和指令
  2. 告诉CPU所要读取得数据或代码在内存得什么位置
  3. 存放CPU的运算结果

这里顺便提一下高速缓存存储器Cache :是位于CPU和主内存间的一种容量较小但速度很高的存储器。Cache中保存着CPU中刚用过或者重复多次使用的一部分数据。

详解8086/8088中的寄存器

8086/8088CPU的内部结构如下图所示:
在这里插入图片描述

1.通用寄存器:AX BX CX DX
用于存放16位的数据和地址。也可用作8位寄存器,用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL,但只能存放数据不能存放地址。
值得注意的是:8086中为了缩短指令代码的长度,部分通用寄存器用作专门用途。

AX累加器:有些指令约定以AX(或AL)为源或目的寄存器。
BX基址寄存器:可用作间接寻址的地址寄存器和基地址寄存器。
CX计数寄存器:CX在循环和串操作中充当计数器,指令执行后CX内容自动修改。
DX数据寄存器:在I/O指令中可用作端口地址寄存器,乘除指令中用作辅助累加器。

2.指针和变址寄存器:BP SP SI DI
BP:基址指针寄存器 SP:堆栈指针寄存器
SI:源变址寄存器DI目的变址寄存器
这些寄存器和寻址有关系,在学习寻址的时候会更加详细的了解

3.段寄存器
8086/8088CPU中,内存空间是1MB(20位地址线),但寄存器只有16位,因此1MB被分成若干逻辑段,最长是64KB(因为8088/8086中寄存器是16位的)。这些逻辑段是动态的。

CS:代码段寄存器 DS:数据段寄存器SS:堆栈寄存器
ES:附加段寄存器(在串指令中,目的操作数指明必须在现行附加段中)

4.指令指针寄存器IP
存放将要执行的下一条指令在现行代码段中的偏移地址

5.标志位寄存器(共16位,但其中7位未用)
在这里插入图片描述
条件标志6位

CF(进位标志):反映运算结果的最高位有无进位或借位。
PF(奇偶标志):反映运算结果中“1”的个数的奇偶性,主要用于判断数据
传送过程中是否出错。
AF(辅助进位标准):加减运算时,若D3向D4产生了进位或借位则AF=1。否则
AF=0。在BCD码运算时,该标志用于十进制调整。
ZF(零标志) :反映计算结果是否为0。若结果为零则ZF=1,否则ZF=0。
SF(符号标志):映运算结果的最高位,即符号位的状态。如果运算结果的最高位为1则SF=1(带符号数为负数),否则SF=0(为正数)。
OF(溢出标志):反映运算结果是否超出了带符号数的表示范围。

控制标志3位

TF(陷阱标志):TF=1时CPU进入单步执行方式,主要用于调试程序。
IF(中断允许标志):用于控制CPU是否允许响应可屏蔽中断请求,
IF=1时允许中断,IF=0时禁止中断。
DF(方向标志):控制串处理指令中地址调整的方向,DF=1时自动减量,DF=0时自动增量。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值