微机原理 11-内部寄存器

本文详细介绍了8088/8086微处理器内部的14个16位寄存器,分为通用寄存器、控制寄存器和段寄存器三类。通用寄存器包括数据寄存器、地址指针寄存器和变址寄存器,控制寄存器包含状态标志位和控制标志位,段寄存器用于存放逻辑段的段基地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内部寄存器的类型
14个16位寄存器,按功能可分为三类

在这里插入图片描述

一 、通用寄存器

  • 数据寄存器(AX,BX,CX,DX)
  • 地址指针寄存器(SP,BP)
  • 变址寄存器(SI,DI)
1、数据寄存器

8088/8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即:

在这里插入图片描述
AX:
累加器。所有I/O指令都通过AX与接口传送信息,中间运算结果也多放于AX中;
BX:
基址寄存器。在间接寻址中用于存放基地址;
CX:
计数寄存器。用于在循环或串操作指令中存放计数值;
DX:
数据寄存器。在间接寻址的I/O指令中存放I/O端口地址;在32位乘除法运算时,存放高16位数。

2、地址指针寄存器

SP:
堆栈指针寄存器,其内容为栈顶的偏移地址;
BP:
基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。
共同点:
1)默认指向堆栈区
2)多数情况用于存放地址

在这里插入图片描述

BX与BP在应用上的区别
作为通用寄存器,二者均可用于存放数据;
作为基址寄存器,用BX表示所寻找的数据在数据段;用BP则表示数据在堆栈段。

3、变址寄存器

SI:
源变址寄存器
DI:
目标变址寄存器
变址寄存器在指令中常用于存放数据在内存中的地址。
在这里插入图片描述

二、控制寄存器

在这里插入图片描述

状态标志位

CF(Carry Flag)
进位标志位。加(减)法运算时,若最高位有进(借)位则CF=1
OF(Overflow Flag)
溢出标志位。当算术运算的结果超出了有符号数的可表达范围时,OF=1
ZF(Zero Flag)
零标志位。当运算结果为零时ZF=1
SF(Sign Flag)
符号标志位。当运算结果的最高位为1时,SF=1
PF(Parity Flag)
奇偶标志位。运算结果的低8位中“1”的个数为偶数时PF=1,仅针对低8位
AF(Auxiliary Carry Flag)
辅助进位标志位。加(减)操作中,若Bit3向Bit4有进位(借位),AF=1,仅针对低8位

示例
在这里插入图片描述

控制标志位

TF(Trap Flag)
陷井标志位,也叫跟踪标志位。TF=1时,使CPU处于单步执行指令的工作方式。
IF(Interrupt Enable Flag)
中断允许标志位。IF=1使CPU可以响应可屏蔽中断请求。
DF(Direction Flag)
方向标志位。在数据串操作时确定操作的方向。

三、段寄存器

用于存放相应逻辑段的段基地址
8088有4个16位段寄存器

CS(代码段)
指明代码段的起始地址
SS(堆栈段)
指明堆栈段的起始地址
DS(数据段)
指明数据段的起始地址
ES(附加段)
指明附加段的起始地址

  • 存放相应段的段基址的高16位。每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途。
  • 它们要和BX、BP、SI、DI、IP配合形成存储单元的物理地址。
### TEC-8寄存器实验教程概述 TEC-8实验系统的寄存器实验主要用于帮助学生理解计算机内部寄存器的工作机制以及其在数据处理中的作用。以下是关于如何利用TEC-8实验系统进行寄存器相关实验的内容。 #### 实验目的 通过本实验,可以熟悉寄存器的基本结构、工作原理及其在计算机组成中的应用。具体目标包括: - 掌握寄存器的数据输入/输出过程。 - 学习寄存器的状态保存与恢复功能。 - 测试不同类型寄存器(通用寄存器、状态寄存器等)的行为特性[^3]。 #### 所需设备 为了完成该实验,需要准备以下硬件和软件环境: 1. 微型计算机一台。 2. TEC-8实验系统一套。 3. 数字双踪示波器一台。 4. 逻辑测试笔一支。 5. 运行Windows7操作系统的PC机,并安装串口调试助手以便于通信设置[^1]。 #### 实验步骤 ##### 准备阶段 确保所有连接正确无误后开启电源,初始化TEC-8实验平台上的控制台配置。调整8个数据开关至初始位置,确认16个双位开关均处于低电平状态,观察28个LED指示灯是否正常点亮表示默认值。 ##### 数据加载到寄存器 使用控制台上提供的写入命令将一组二进制数值送入指定的目标寄存器中。例如,可以通过设定特定地址并激活写存储器按钮来实现这一动作。此时应仔细记录下当前所使用的地址码及对应的实际物理地址映射关系。 ##### 验证寄存器内容 切换至读取模式,从刚才选定的寄存器里提取刚刚写入的信息加以验证。此过程中可借助外部工具如数字双踪示波器测量信号波形变化情况进一步分析结果准确性。 ##### 功能扩展探索 尝试改变不同的条件重新执行上述流程,比如修改时钟频率或者增加额外负载条件下再次评估性能表现差异等等。 ```python # Python模拟简单寄存器读写的伪代码例子 class Register: def __init__(self): self.value = None def write(self, data): """向寄存器写入数据""" self.value = data def read(self): """从寄存器读取数据""" return self.value register_example = Register() register_example.write(0b1010) # 假设我们往寄存器写了十进制数10 (即二进制下的1010) print(f'Read value from register: {bin(register_example.read())}') # 输出应该显示为 'Read value from register: 0b1010' ``` #### 结果讨论 通过对以上各环节的操作实践,能够深入体会到实际工程环境中涉及到的具体细节问题所在之处。同时也能锻炼动手能力和解决复杂技术难题的能力[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值