8086微处理器的编程结构
8086 微处理器的编程结构(也称为软件模型或寄存器架构)是指程序员(通常使用汇编语言)在编写代码时可以看见和使用的内部资源,主要就是其寄存器组以及相关的存储器组织模型。它反映了程序员需要理解的CPU内部组件,以便编写、调试代码。
8086 的编程结构核心是其寄存器集,它们分为以下几类:
-
通用寄存器 (General Purpose Registers - GPRs):主要用于算术、逻辑运算、数据搬运以及作为地址指针。这些寄存器可以按 16 位整体使用,也可以按高、低 8 位分开使用(除了 SP 和 BP)。
AX(Accumulator):累加器。常用于算术运算、I/O 操作、字符串操作。可分解为AH(高 8 位)和AL(低 8 位)。BX(Base):基址寄存器。常用于存储器寻址(作为基址指针)。可分解为BH和BL。CX(Count):计数寄存器。常用于循环控制、字符串操作计数。可分解为CH和CL。DX(Data):数据寄存器。常用于 I/O 端口寻址、某些乘除运算中存放高位结果。可分解为DH和DL。- 注意:
SP(栈指针)和BP(基址指针)虽然也常被归类为 GPRs,但它们有更专门的用途,不能拆分成高/低 8 位使用。
-
指针和索引寄存器 (Pointer and Index Registers):主要用于存储器寻址。
SP(Stack Pointer):栈指针。指向当前栈顶的位置(栈是用于临时存储数据和地址的一块内存区域)。修改SP意味着在执行PUSH/POP/CALL/RET等指令时自动移动栈顶。其内容在指令执行过程中被硬件自动修改。BP(Base Pointer):基址指针。通常用于访问栈帧(函数调用时在栈上分配的数据区)内的局部变量或参数。相对于栈段(SS)进行寻址。SI(Source Index):源变址寄存器。在字符串/数组操作中,常指向源操作数的位置(配合DS段寄存器)。DI(Destination Index):目的变址寄存器。在字符串/数组操作中,常指向目的操作数的位置(配合ES段寄存器)。
-
段寄存器 (Segment Registers):定义了 8086 存储器模型中使用的段基地址。与指针/索引寄存器组合形成 20 位物理地址。都是 16 位。
CS(Code Segment):代码段寄存器。存储当前执行指令所在段的基地址。与IP(指令指针)组合指向下一条要执行的指令。DS(Data Segment):数据段寄存器。存储程序中默认数据变量所在段的基地址。访问数据时通常隐含使用DS(除非使用段超越前缀指定)。SS(Stack Segment):堆栈段寄存器。存储栈所在段的基地址。与SP/BP组合访问栈内数据。ES(Extra Segment):附加段寄存器。通常用于指定辅助的数据段(例如字符串操作的目的地址)。
-
指令指针寄存器 (Instruction Pointer - IP):
- 一个 16 位的寄存器,只对程序员间接可见(不能直接用 MOV 等指令修改,但可以通过
JMP,CALL,RET等控制转移指令隐式修改)。 - 存储下一条要执行的指令在
CS段内的偏移地址(Offset)。它与CS组合形成CS:IP,共同决定了要执行指令在内存中的物理地址(=CS左移4位 +IP)。
- 一个 16 位的寄存器,只对程序员间接可见(不能直接用 MOV 等指令修改,但可以通过
-
标志寄存器 (Flags Register - FLAGS):
- 一个 16 位的寄存器,存储 CPU 执行上条指令后的状态和控制信息。这些状态信息会影响后续的条件跳转指令等。重要的标志位有:
CF(Carry Flag):进位标志。无符号数运算产生进位(加)或借位(减)时置 1。PF(Parity Flag):奇偶标志。结果低 8 位中 1 的个数为偶数时置 1。AF(Auxiliary Carry Flag):辅助进位标志。用于 BCD 码运算(低 4 位产生进位或借位时置 1)。ZF(Zero Flag):零标志。运算结果为 0 时置 1。SF(Sign Flag):符号标志。结果为负数(最高位 MSB=1)时置 1。OF(Overflow Flag):溢出标志。有符号数运算结果超出表示范围时置 1。TF(Trap Flag):陷阱标志。调试单步执行时使用(置 1 时每执行一条指令后暂停)。IF(Interrupt Enable Flag):中断允许标志。置 1 允许响应可屏蔽中断(INTR)。DF(Direction Flag):方向标志。控制字符串指令的移动方向(0=递增,1=递减)。
- 一个 16 位的寄存器,存储 CPU 执行上条指令后的状态和控制信息。这些状态信息会影响后续的条件跳转指令等。重要的标志位有:
关键概念 - 存储器分段 (Memory Segmentation): 8086 采用分段管理内存是编程结构中最核心的概念之一。它将 1MB 物理地址空间(20 位地址)划分为多个重叠的“段”(Segment)。
- 段基地址 (Base Address):存储在 段寄存器 (
CS,DS,SS,ES) 中,是一个 16 位的值。 - 偏移地址 (Offset Address):存储在 指针/索引寄存器 (
IP,SP,BP,SI,DI), 通用寄存器 (BX等),或由指令直接给出。也是一个 16 位的值。 - 物理地址 (Physical Address) 计算:
物理地址 = (段寄存器内容 << 4) + 偏移地址- 这里
<< 4表示二进制左移 4 位(相当于乘以 16 / 0x10)。 - 例如:
DS = 0x1234,BX = 0x5678, 那么数据物理地址是:= (0x1234 << 4) + 0x5678 = 0x12340 + 0x5678 = 0x179B8(注意:0x12340是0x1234左移 4 位的结果)。
- 这里
总结: 8086 微处理器的编程结构主要包含:
- 8个16位通用寄存器 (
AX,BX,CX,DX,SP,BP,SI,DI),其中前 4 个 (AX,BX,CX,DX) 可高/低 8 位分开访问。 - 4个16位段寄存器 (
CS,DS,SS,ES)。 - 1个16位指令指针寄存器 (
IP)。 - 1个16位标志寄存器 (
FLAGS)。 - 基于段寄存器+偏移地址的内存寻址模型(存储器分段)。
理解这些寄存器的作用及其相互关系,是进行 8086 汇编语言编程的基础。建议结合教材或资料中的寄存器结构图来加深理解。
微处理器体系结构
《微处理器体系结构》适合作为高等院校集成电路设计相关专业工程硕士的教材,并可以作为微处理器硬件与软件设计相关专业高年级本科生和研究生的教材。
资料下载
ah此生不换
2021-04-14 10:29:03
16位和32位微处理器的相关资料推荐
第2章 16位和32位微处理器微处理器的性能指标最主要的是以下两项:1.字长2.主频一、16位微处理器80868086是Intel系列的16位
探讨一下嵌入式微处理器体系结构
嵌入式微处理器体系结构17As discussed earlier, the 8086 microprocessor consists of t
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机