微机原理(FPGA设计CPU理解)

本文详细介绍了8088处理器的内部构造,包括寄存器分类如通用寄存器、控制寄存器和段寄存器的用途,以及内存管理中的地址变换和段寄存器的作用。还深入讲解了8086/8088指令系统,涵盖数据传送、算术运算等指令,并解析了各种寻址方式。此外,堆栈的使用和堆栈段的概念也被提及。
摘要由CSDN通过智能技术生成

目录

8088内部寄存器

通用寄存器

控制寄存器

段寄存器

内存储器管理

内存地址变换

段寄存器

逻辑段与逻辑地址

堆栈及堆栈段的使用

指令与指令系统

指令的格式

指令中操作数

立即数

寄存器操作数

存储器操作数

指令的寻址方式

寻址方式

立即寻址

寄存器寻址

存储器操作数的寻址方式

小结 

8086指令系统

数据传送类指令

通用数据传送指令

地址传送指令

标志传送指令

输入输出指令

算数运算指令


8088内部寄存器

含有14个16为寄存器,按照功能可以分为三类

8个通用寄存器、4个段寄存器、2个控制寄存器

通用寄存器

数据寄存器(AX,BX,CX,DX)

8088/808含四个16位数据寄存器,它们可以分为8个8位寄存器 拆开后彼此相互独立没有高八位,低八位之分。但是当两个寄存器合起来时AH一定是高八位,AL一定是低八位。

AX---->AH,AL

BX----->BH,BL

CX----->CH,CL

DX----->DH,DL

数据寄存器的专用方法

AX:累加器 所有I/O接口都通过AX与接口传送信息,多用于存放中间运算结果

BX:基址寄存器 间接寻址中用于存放基地址

CX:计数寄存器 用于循环或串操作中存放计数值

DX:数据寄存器 间接寻址的I/O指令中存放I/O端口地址 在32位乘除法运算时,存放高16位

地址指针寄存器(SP,BP)

SP堆栈指针寄存器,其内容为栈顶的偏移地址 (只要是堆栈存在,那么SP就作为专用寄存器,作为栈顶指针)

BP基址指针寄存器,常用作在访问内存时存放内存单元的偏移地址

变址寄存器(SI,DI)

SI 源变址寄存器

DI 目标变址寄存器

变址寄存器在指令中常用于存放数据在内存中的地址

控制寄存器

IP 指令指针寄存器,其内容为下一条要取指令的偏移地址

FLAGS 标志寄存器 存放运算结果的特征

6个状态标志位   (CF SF AF PF OF ZF)
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
AF (Auxiliary Carry Flag):   辅助进位标志位,加减操作,若bit3向bit4有进位(借位) AF=1
3个控制标志位   (IF TF DF)  
 TF (Trap Flag):             陷阱标志位, TF=1 时使CPU处于单步执行指令的工作方式
IF (Interrupt Enable Flag): 中断允许标志位, IF=1 时使CPU可以响应可屏蔽中断请求
DF (Direction Flag):        方向标志位,在数据串操作时确定操作方向

段寄存器

用于存放相应逻辑的段基地址

代码段:存放指令代码
CS(寄存器): 代码段寄存器,存放代码段的段基地址
数据段:存放操作的数据
DS(寄存器): 数据段寄存器,存放数据段的段基地址
附加段:存放操作的数据
ES(寄存器): 附加段寄存器,存放数据段的段基地址
堆栈段:存放暂时不用但是需要保存的数据
SS(寄存器):堆栈段寄存器,存放堆栈段的段基地址
 

内存储器管理

8088CPU是16位体系结构的微处理器

可以同时处理(产生)16位二进制码 可以产生64K个编码

8088CPU需要管理1MB内存 需要能够产生1M个地址编码(16×64K)

内存地址变换

欲实现对1MB内存空间的正确访问,每个内存单元在整个内存空间中必须具有唯一地址  ->物理地址 内存地址变换:如何将直接产生的16位编码变换为20位物理地址

内存每个单位的地址在逻辑上都由两部分组成:

段(基)地址:指示存储单元在整个内存空间中处于哪个区域(段)

段内地址(相对地址/偏移地址):指示存储单元在段内中的相对位置(与段内第一个单元的距离)

8088为16位结构,所以段地址和偏移地址均为16位

段地址(16位) 偏移地址(16位)

内存地址变换的目的就是如何将这个32位的地址变换成20位的物理地址

段首的偏移地址为0000H  16位的0和4位的零是一样的,据此我们可以将32位的地址转换为20位的地址 所以段首的物理地址为:

段地址(16位) 0000

内存物理地址由段基地址和偏移地址组成:物理地址=段基地址×16+偏移地址

物理分段的缺点是将内存按照一定的大小进行分块,在实际的使用中可能产生内存浪费,使用效率低的情况所以在实际过程中一般不使用物理分段的方法。

段寄存器

作用:用于存放相应逻辑段的段基地址

8086/8088内存中逻辑段的类型:

代码段:存放指令代码   

数据段:存放操作的数据

附加段:存放操作的数据

堆栈段:存放暂时不用但需要保存的数据

8086

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值