8086cpu
1、 8086CPU和8088CPU内部结构基本相同,不同之处在于8088有8条外部数据总线,因此为准16位。8086有16条外部数据总线。两个CPU的软件完全兼容,程序的编制也完全相同。
2、 8086CPU从功能上分为两大部分:一是执行部件(EU),二是总线接口部件(BIU)。
执行部件是由以下虽部分组成:
(1)四个通用寄存器:AX BX CX DX
(2)四个专用寄存器:基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI
(3)标志寄存器FR=flag
(4)算术逻辑部件ALU
功能是负责执行所有的指令,向总线接口部件提供指令执行的结果数据和地址,并对通用寄存器和标志寄存器进行管理。
总线接口部件由以下部件组成:
(1)四个段寄存器:代码段寄存器,数据段寄存器,附加段寄存器,堆栈段寄存器。
(2)指令指针寄存器
(3)地址加法器
(4)指令队列
功能:执行外部总线周期,负责存储器与外部端口I|O传送数据。也就是负责CPU与存储器和外设之间的信息交换。
3、共有14个寄存器,分成3个部分:
(!)通用寄存器8个 :AX, BX , CX, DX , SP , BP ,SI ,DI.
AX , BX ,CX , DX为数据寄存器,用来保存运算中的中间结果和有效地址。4个寄存器既可以做16位寄存器,也可以做8位寄存器 AL, AH, BL, BH, CL, CH, DL, DH.。
在程序设计中,一般把AX用作累加器。BX 用作基址寄存器,CX用作计数器,DX用作数据寄存器。
SP:堆栈指针寄存器;装栈顶指针偏移量。
BP:基址指针寄存器:装栈段中一个数据区的基址偏移量。
SI:源变址寄存器;装源操作数地址的偏移量。
DI:目的变址寄存器;装目的操作数地址偏移量。
(2)段寄存器4个
CS;代码段寄存器;装代码段的起始地址;
DS;数据段寄存器;装数据段的起始地址;
SS; 堆栈段寄存器;装堆栈段的起始地址;
ES: 附加段寄存器;装附加段的起始地址。
(3)控制寄存器两个:IP,FR。
IP:指令指针寄存器;始终存放当前指令的下一第指令的起始存储单元的偏移地址。
FR:状态标志寄存器;用来存放运算结果和特征。16位寄存器,用39位。
标志位分为两大类:一类是状态标志,用来表示算术、逻辑运算的结果特征。(CF,PF,AF,ZF,SF,OF)。一类是控制标志;用来表示控制CPU的操作特征。(IF、DF、TF)
CF(FR0):CF=1为加、减运算结果的最高位有进位或有借位,否则CF=0。
PF(FR2):PF=1为操作结果“1”的个数为偶数,否则PF=0。
AF(FR4):AF=1为运算结果的低4位向高4位有进位或有借位,(用于10进制BCD码运算指令)否则A=0。
ZF(FR6):ZF=1运算结果为0,否则ZF=0。
SF(FR7):SF=1运算结果最高为0(E),否则SF=0。
OF(FR11):OF=1在算术运算时,带符号数的运算结果超出数的表示范围。否则OF=0。
TF(FR8):TF=1CPU进入单步工作方式。
IF(FR9):IF=1允许CPU响应可屏蔽外部中断请求。IF=0禁止中断。
DF(FR10):DF=1在字符串操作时使地址指针自动减量。DF=0自动增量。
4、 8086系统的物理地址是将段地址寄存器的内容左移4位(或乘16)加上偏移地址,即可得到20位的物理地址。
2000H左移4位为20000H,加上2100H为22100H,则物理地址为22100H。
5、8086/8088CPU把BIU完成一次访问存储器或外设操作所需的时间称为一个总线周期。一个总线周期最少包含4个时钟周期(T1~T4)。当访问存储器(读、写)或外设时,存储器或外设不能及时地配合CPU传送数据,存储器或外设通过“READY:信号在T3之前向CPU发一个“数据未准备好”信号,CPU在T3之后插入一个或多个等待时钟周期TW。当存储器外设准备好数据,通过“READY”发“准备好”信号,CPU接收到这个信号后,会自动脱离TW状态进入T4状态。因此插入多少个TW取决于“READY”信号。
1、 最小模式:就是在系统中只有8086/8088一个微处理器。在该系统中,所有的总线控制信号都直接由8086/8088产生,因此,系统中总线控制电路被减到最少。
最大模式:在系统中包含两个或多个微处理器,其中一个主处理器就是不是8088/8086,其它处理器为协处理器,是协助主处理器工作的。它用在中等规模或大型的8088/8086系统中。一般情况下和8088/8086配合的协处理器有两个,一个是数值运算协处理器8087,一个是输入/输出协处理器8089。将8088/8086CPU的第33脚接地时,系统处于最大模式,当第33脚接+5V时,系统为最小模式。
2、 地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上的地址代码暂存起来。8088/8086的数据和地址总线采用分时复用不着操作方式,即用同一总线既传送地址又传送数据。当微处理器与存储器交换信号时,首先由CPU发送存储器的地址,同时发允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在锁存器中,随后才能传送数据。
3、 8086中的典型时序包括:
(1)存储器读与写周期。
(2)I/O设备的读与写周期。
(3)中断响应周期。
(4)系统复位。
(5)空转周期。
(6)CPU进入和退出保持状态的时序。
8086CPU的字节寻址范围有多大?为什么?存储器为什么分段?20位物理地址的形成过程是怎样的?
答:8086CPU寻址范围1MB。因为8086CPU地址线为20条,2^20=1024KB,即1MB。8086系统中,指令仅给出16位地址,与寻址有关的寄存器也只有16位长,因此寻址范围只有64KB,为了寻址1MB,所以分成四个逻辑段。当CPU访问内存时,段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏移量相加,形成20位的物理地址。
8086cpu的更多相关文章
- 汇编学习(二)——8086CPU
一.8086CPU 1.微处理器 (1)微控制机:也称单片机 (2)DSP芯片:数字信号处理芯片 (3)嵌入式微处理器 (4)通用微处理器:PC站.工作站.服务器使用的处理器 2.内部结构: (1)总 ...
- 8086cpu中的标志寄存器与比较指令
在8086CPU中有一个特殊的寄存器--标志寄存器,该寄存器不同于其他寄存器,普通寄存器是用来存放数据的读取整个寄存器具有一定的含义,但是标志寄存器是每一位都有固定的含义,记录在运算中产生的信息,标志 ...
- 8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
8086CPU的出栈(pop)和入栈(push) 都是以字为单位进行的
- 汇编中的移位指令(8086CPU)
原创 8086CPU中有8条移位指令,分为两大类. 非循环移位指令: SAL —— 算术左移 —— 最高位移入标志状态位CF SAR —— 算术右移 —— 最低位移入CF,最高位不变. 比如说:将10 ...
- 随笔总结:8086CPU的栈顶超界问题
我们学习编程都知道栈的超界限问题是非常严重的问题,他可能会覆盖掉其他数据,并且我们不知道这个数据是我们自己保存的用于其他用途的数据还是系统的数据,这样常常容易引发一连串的问题. 在学习汇编的时候,我们 ...
- 一个想了好几天的问题——关于8086cpu自己编写9号中断不能单步的问题
在<汇编语言>第十五章中我们可能遇到这样的问题:程序运行正确,但是debug单步调试,却无法运行,修改int 9h中断例程入口地址的指令,虚拟模式下,debug提示指令无效, ...
- 8086CPU各寄存器的用途
8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器.(2)指令指针.(3)标志寄存器和(4)段寄存器等4类. 1.通用寄存器有8个, 又可以分成2组,一组是数据寄存器(4个) ...
- 汇编语言标记寄存器标记位_NV UP EI NG NZ AC PE CY
在8086CPU中,有一种标记寄存器,长度为16bit: 其中存储的信息被称为程序状态字(Program Status Word,PSW),以下将该寄存器简称为flag. 功能:1)用来存储相关指令的 ...
- 【OS】实模式和保护模式区别及寻址方式
实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...
随机推荐
- Sublime Text 快捷键--持续更新
快捷键 功能 说明 ctrl+D 选取一个单词连续按组合键会选择页面所有相同的这个单词 ctrl+Z 撤销上一个操作 ctrl+Y 恢复上一个操作 ctrl+shift+F 底部打开搜索全 ...
- Object修改链表
以前学习过链表的时候由于类型的接收不同,每次要重写链表 下面修改可用链表 class Link{ private class Node{ private Object data ; private N ...
- Java 和Oracle的数据类型
一.BigDecimal BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成. 如果为零或正数,则标度是小数点后的位数. 如果为负数,则将该数的非标度值乘以 ...
- bzoj1562[NOI2009]变换序列——2016——3——12
任意门:http://www.lydsy.com/JudgeOnline/problem.php?id=1562 题目: 对于0,1,…,N-1的N个整数,给定一个距离序列D0,D1,…,DN-1,定 ...
- SqlParameter 使用
SqlParameter[] param = new SqlParameter[] { new SqlParameter ...
- Android组件生命周期(三)
Android系统试图尽可能长地保持一个应用程序进程,但是当内存低时它最终还是需要移除旧的进程.为了决定保持哪个进程及杀死哪个进程,Android将每个进程放入一个基于运行于其中的组件的重要性等级和这 ...
- 网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置方法)
原文链接:http://www.bzfshop.net/article/176.html 网站被攻击是一个永恒不变的话题,网站攻击的方式也是一个永恒不变的老套路.找几百个电脑(肉鸡),控制这些电脑同时 ...
- Apache自带压力测试工具ab用法简介
ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...
- 微信小程序来了,小程序都能做些什么
2017年的微信大动作就是微信小程序了,到底小程序都能做些什么?这是很多人关注的热点,小程序开发对企业又有什么帮助呢?下面让厦门微信小程序开发公司来为你就分析下. 微信小程序与APP的关系 ...
- jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限
jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...