80x86/  Pentium微机原理及接口技术

1.    计算机基础... 1

1.1常用术语... 1

1.2计算机中数与编码的表示方法... 1

1.2.1进制表示及进制转换... 1

1.2.2有符号数表示... 1

1.2.3编码表示... 2

2. 80x86及Pentium微处理器... 2

2.1 8086/8088微处理器的内部结构与工作原理... 2

2.1.1执行单元EU.. 3

2.1.2总线接口单元BIU.. 4

2.2 8086/8088的内部寄存器... 5

2.3工作模式与引脚... 5

2.4存储器组织... 7

2.4.1实模式下存储器组织... 7

2.4.2存储器分段管理... 8

2.4.3奇偶存储器结构... 9

2.5堆栈组织... 10

2.6时序... 11

80x86/ Pentium微机原理及接口技术

1. 计算机基础

1.1常用术语

(1)    位(bit):每一位只有两种状态0或1。计算机能表示的最小数据单位。

(2)    字节(Byte):8位二进制数为一个字节。计算机基本存储单元内容用字节表示。

(3)    字(Word):PC常将2个字节定义为一个字,一个字为16位二进制数。微处理器内部数据传输、处理基本单位。

(4)    指令:由0和1组成的代码。让微处理器进行某种操作的命令。

(5)    指令系统:一台计算机能识别的全部指令。

(6)    程序:为了使计算机完成某种工作而编制的一系列指令。

(7)    存储器:存储数据和程序。可以把存储器看成很多存储单元,每个存储单元存8位二进制编码(1字节)。存储单元编号称为存储地址。

(8)    存储容量单位:1B=8bit;1KB=1024B=1024×8bit;1MB=1024KB;

1.2计算机中数与编码的表示方法

1.2.1进制表示及进制转换

(1)    10进制数:123.45D=1×102+2×101+3×100+4×10-1+5×10-2

(2)    2进制数:1010.101B=1×23+0×22+1×21+0×20+1×2-1+0×2-2+1×2-3=10.875D

(3)    16进制数:A2.F3H=10×161+2×160+15×16-1+3×16-2=163.03125D

(4)    10进制转2进制:整数部分除2取余,直到商为0。余数从下往上写。小数部分乘2取整,直到满足精度要求。整数从上往下写。

(5)    2进制转16进制:从右到左每4位转换成对应的16进制数。10-15用A-F表示。

1.2.2有符号数表示

问题:计算机是如何处理有符号数的?

将符号数值化,2进制数最高位定义为符号位,0表示+,1表示-。

(1)    真值:现实中的数字(2进制)必须有+/-。

(2)    原码:最高位为符号位(0表示+,1表示-),其余位均为数值位的二进制数。

(3)    反码:正数反码和原码相同,负数反码=原码符号位不变,其他各位取反。

(4)    补码:正数补码和原码相同,负数补码=原码中符号位不变,其他各位取反后+1。

(5)    运算规则:[X]=[[X]];[X]=[[X]];[X±Y]=[X]±[Y]=[X]+[±Y]

1.2.3编码表示

(1)    非压缩型BCD码:1个字节表示1位10进制数,高4位清0。00000001 00000001表示11

(2)    压缩性BCD码:1个字节表示2位10进制数。00010001表示11

(3)    ASCII码:用7位2进制数对字符进行编码,共有27=128个字符。

2. 80x86及Pentium微处理器

2.1 8086/8088微处理器的内部结构与工作原理

图2-1 8086/8088CPU内部结构图

8086/8088微处理器内部分为执行单元EU和总线接口单元BIU两部分。

执行单元负责完成指令的执行工作,总线接口单元负责完成预取指令和数据传输工作。可以实现流水作业,在执行指令的同时取下一条指令。

2.1.1执行单元EU

EU包括:1个运算器,8个16位通用寄存器(4个数据寄存器,4个指针寄存器),1个16位标志寄存器FR,16位内部数据总线等。

(1)    运算器:完成8位或16位运算工作。

(2)    16位内部数据总线:用于微处理器内部各部分间数据传送,位数决定了微处理器的位数。

(3)    4个数据寄存器:AX、BX、CX、DX,存放参与运算的数据或运算结果。每一个数据寄存器都是16位,可以将高低8位作为2个独立的8位寄存器使用。高8位分别为AH、BH、CH、DH,低8位分别为AL、BL、CL、DL。

AX:累加器。

BX:基址寄存器。

CX:计数寄存器。

DX:数据寄存器。

(4)    4个指针寄存器:

SP:堆栈指针寄存器。

BP:基址指针寄存器。

SI:源变址寄存器。

DI:目标变址寄存器。

(5)    标志寄存器FR(状态控制寄存器):

反应运算结果的状态或控制某种状态。

图2-2标志寄存器FR

16位FR中有9位有效位;

6位为状态位:

CF:进位状态位

AF:辅助进位状态位

SF:符号状态位

PF:奇偶状态位

ZF:零状态位

OF:溢出状态位

3位为控制位:

IF:中断允许标志

DF:方向标志

TF:陷阱标志,用于单步操作

2.1.2总线接口单元BIU

BIU包括:1个20位地址加法器,4个16位段寄存器,1个16位指令指针寄存器IP,1个4/6字节指令队列和总线控制逻辑等。

(1)    4个段寄存器:存放当前段的16位段基值。微处理器要访问某个单元,必须将该单元所在段的段基值存到段寄存器里,使其成为当前段。

CS:代码段寄存器,常用于存程序代码段的段基址,只能读出,不能通过指令赋值。

SS:堆栈段寄存器

DS:数据段寄存器

ES:附加数据段寄存器

(2)    指令指针寄存器IP:存放指令的偏移地址。

专为微处理器使用,不能通过指令进行访问。

当微处理器从代码段CS和指令指针寄存器IP所决定的内存单元中取出一个字节或一个字指令代码后,IP自动加1或加2,指向下字节或字的指令代码。

(3)    指令队列:与CPU速度匹配的高速缓存器,用以支持流水线工作。

(4)    20位地址加法器:通过20位地址加法器可自动完成由16位描述的逻辑地址转换成20位的物理地址。

逻辑地址:8086/8088微处理器采用存储器分段描述方法,将整个存储区划分成很多段,每个存储单元均处于某个段中,每个单元可以用两个参数描述:段基址、偏移量,指令中书写格式为段基址:偏移量,称为逻辑地址。

物理地址:16位段寄存器里面的段基值左移4位(乘以16),再与16位偏移量相加,形成20位物理地址。

8086/8088微处理器有20根外部地址线,但内部总线、内部寄存器只有16位,通过20位地址加法器,将逻辑地址变成物理地址,从而描述存储器单元的20位地址。

2.2 8086/8088的内部寄存器

一共有14个16位寄存器:

4个段寄存器:存放当前段的16位段基值。微处理器要访问某个单元,必须将该单元所在段的段基值存到段寄存器里,使其成为当前段。

4个数据寄存器:AX、BX、CX、DX,存放参与运算的数据或运算结果。每一个数据寄存器都是16位,可以将高低8位作为2个独立的8位寄存器使用。

4个指针寄存器:SP:堆栈指针寄存器。BP:基址指针寄存器。SI:源变址寄存器。DI:目标变址寄存器。

1个指令指针寄存器IP:存放指令的偏移地址。

1个标志寄存器FR(状态控制寄存器):反应运算结果的状态或控制某种状态。

2.3工作模式与引脚

图2-3 8086/8088引脚分配

引脚分配图说明:内部标注的引脚是8088与8086定义不同的引脚。括号内为最大工作模式下的引脚定义。

8086和8088CPU主要特点:

8088

8086

相同点

内部数据总线为16位,寄存器和指令系统完全兼容

不同点

外部数据总线为8位

外部数据总线为16位

指令队列缓存器为4字节

指令队列缓存器为6字节

无控制线

有控制线

存储器和IO选择控制线为/M

存储器和IO选择控制线为M/

(1)    最小工作模式:构成单位处理器的简单系统,全部信号线均由8086/8088CPU提供,引脚MN/接+5V。

(2)    最大工作模式:构成多处理器的复杂系统。系统中除有一个主微处理器8086/8088外,还有两个协处理器:8087(用于数值运算处理),8089(用于输入输出设备服务),部分控制信号线是由8288总线控制器提供的,引脚MN/接地。

(3)    8086/8088为40引脚双列直插式DIP芯片。部分引脚采用复用技术,包括分时复用(某一时刻提供一种信息,另一些时刻提供另外一些信息),分状态复用(输入输出定义不同、高电平低电平定义不同、不同模式下定义不同)等。

主要引脚:

AD0~AD15:地址/数据分时复用线

A16/S3~A19/S6:地址/状态分时复用线

MN/:最小工作模式/最大工作模式控制信号

ALE:地址锁存允许信号,三态输出线。

:高8位数据总线允许/状态分时复用线,三态输出。

RESET:复位信号,输入线,高电平有效。使处理器马上结束当前操作,对处理器内部寄存器进行初始化。复位后除了内部寄存器CS=FFFFH,其他寄存器及指令队列均被清零。

:读控制信号,三态输出线,低电平有效。

:写控制信号,三态输出线,低电平有效。

M/:存储器/IO接口控制线,三态输出。高电平表示CPU与存储器进行数据传输,此时由20位地址线状态确定数据在存储器中的位置。低电平表示CPU与I/O接口进行数据传输,此时只有16位地址线有效。

、M/的不同组合可产生CPU对存储器单元或I/O接口进行读或写的控制信号。

图2-4 8086/8088对存储器或I/O操作信号

2.4存储器组织

2.4.1实模式下存储器组织

(1)    所有数据以字节形式存放在存储单元中,每一个单元均占一个地址,任何两个相邻字节构成一个字,占两个地址。80x86用地址值较小的那个字节单元地址作为这个字单元地址。

(2)    一个16位字中低8位数据存在较小地址单元中,高8位数据存在地址较高单元中。

图2-5单元地址的描述

2.4.2存储器分段管理

(1)    在软件中8086/8088对存储器采用分段描述的方法,将整个存储区划成很多段,每一段大小可各不相同,但均≤64KB。如下图2-6所示,各段之间可以紧密连接(a),部分或完全重叠(c),也可以不相关(b)。

图2-6 8086/8088内存分段管理

(2)    8086/8088所管理的存储器,所有数据以字节形式存放在存储单元中,每个单元均有一个唯一的20位地址,称为物理地址。每一个存储单元一定处于某个段中,且距该段的起始单元有一个偏移量,如下图2-7所示。指令中描述为段基值:偏移量,称为逻辑地址。通过20位地址加法器可自动完成由16位描述的逻辑地址转换成20位的物理地址。偏移量以字节数计算。

图2-7 物理地址和逻辑地址

(3)    8086/8088微处理器对每个存储单元的描述,一种是20位的物理地址,在地址总线上;一种是由两个16位参数描述的逻辑地址,在指令中。物理地址唯一,逻辑地址不唯一。

(4)    分段方法进行存储器组织的优点:可以使指令系统中大部分指令只涉及16位地址,减少了指令长度,提高运行程序的速度。8086存储空间高达1M,但在程序执行过程中,只在一个较小存储空间运行,段寄存器的值很少改变。

2.4.3奇偶存储器结构

8086有16个外部数据总线,为了使8086既可以传输8位数据,又可传输16位数据,8086的存储器采用奇偶两个存储体结构。两块存储体分别用和A0控制,两存储体可同时传输数据,达到传输16位数据的目的,也可以只对某一块存储体传输8位数据。

在总线周期的T1时刻引脚输出为低电平时,表示当前高8位数据总线D15~D8上数据有效。A0引脚输出低电平,则低8位数据线传送数据。

图2-8奇偶存储体结构

当操作字时,对于偶地址字,在一个读/写周期内,低8位数据线传送低字节,高8位数据线传送高字节,此时A0=0、=0,如下图2-9中(3)所示。对于奇地址字必须由两个读/写周期完成,第1个周期低8位数据线空闲,高8位数据线传输数据的低字节,此时A0=1、=0,第2个周期低8位数据线传送数据的高字节,高8位数据线空闲,此时A0=0、=1,如下图2-9中(4)所示。

当操作字节时,若该字节地址为偶数,则在读/写操作周期中,低8位数据线传输数据,高8位数据线空闲,此时A0=0、=1;若该字节地址为奇数,则在读/写操作周期中,高8位数据线传输数据,低8位数据线空闲,此时A0=1、=0。

图2-9 8086存储器传输特点

2.5堆栈组织

(1)    8086/8088的堆栈组织:

堆栈是一个特定的存储区,在内存中开辟一块存储区,专门用来存数据,一端是固定的,一端是活动的,所有的信息存取都在活动的一端进行。栈指针始终指向堆栈的顶部,操作原则是后进先出。

8086/8088微机的堆栈是按字组织的,每次在堆栈中存取数据均是两个字节的操作,数据的高8位存于地址较高单元,低8位存于地址较低单元。

如图2-10所示,堆栈是由堆栈段寄存器SS指定的一段存储区,由SP作为栈指针指向栈顶,即指向存放数据的最小字地址单元。堆栈段可以有一个或多个,每一个堆栈的容量≤64,如果更换堆栈区,应重新设置SS,而且更换SS内容时要紧接着赋给SP新值。

图2-10 8086/8088堆栈组织

(2)    8086/8088的堆栈操作:栈区操作为16位数据操作且默认通过SS:SP访问。

设置栈区:使用栈区之前设置SS和SP的初值,栈区的容量(长度)。

进栈操作:PUSH src;进栈时指针SP先减2,再把1个字压入栈区。SPSP-2、SS:[SP]低字节、SS:[SP+1]高字节。

出栈操作:POP dest;出栈时栈顶中的字先出栈,然后指针SP加2。低字节SS:[SP]、高字节SS:[SP+1] 、SPSP+2。

(3)    堆栈操作用途:

堆栈可以作为缓冲器,暂存一些希望运行时不被破坏的参数;调用子程序或中断过程发生时,用堆栈保护断点及现场参数。在子程序返回或中断返回时弹出断点及现场参数,使主程序继续工作;可以利用堆栈实现数据交换。

2.6时序

图2-11时钟周期、总线周期、指令周期

处理器的周期状态可分为时钟周期、总线周期、指令周期。

(1)    时钟周期是两个脉冲信号的前沿之间的间隔,用T表示。取决于系统主频,是处理器完成一个微操作所需的时间,也是处理器的基本时间计量单位。

(2)    总线周期是处理器完成一个基本操作所用的时间。总线读或写操作的周期由4个时钟周期组成。总线周期包括:存储器写总线周期、存储器读总线周期、I/O接口写总线周期、I/O接口读总线周期、中断响应周期、DMA响应周期、复位周期等。

(3)    指令周期是处理器执行一条指令所需的时间。

80x86/Pentium微机原理及接口技术-微处理器-学习笔记的更多相关文章

  1. 《嵌入式系统原理与接口技术》——嵌入式系统接口应用基础

    本文为我负责编写的电子工业出版社出版的<嵌入式系统原理与接口技术>一书第七章部分,这里整理的仍然是修改稿,供需要的同学参考,本书为普通高等教育"十二五"规划教材,电子信 ...

  2. 2017.11.1 微型计算机原理与接口技术-----第七章 中断系统与8237A DMA控制器

    第七章 微型计算机原理与接口技术-----中断系统与8237A DMA控制器 (1)数据传送的两种方式:中断方式和直接存储器存取方式(DMA):中断是微处理器与外部设备交换信息的一种方式:DMA是存储 ...

  3. Hbase技术详细学习笔记

    注:转自 Hbase技术详细学习笔记 最近在逐步跟进Hbase的相关工作,由于之前对Hbase并不怎么了解,因此系统地学习了下Hbase,为了加深对Hbase的理解,对相关知识点做了笔记,并在组内进行 ...

  4. 2017.10.18 微机原理与接口----汇编语言语法和DOS功能调用

    4.1 汇编语言中的基本数据 ·标识符 ·常数 ·变量具有三个属性: (1)段地址(SEG):变量所在段的段地址 (2)偏移地址(OFFSET):变量所在段内的偏移地址 (3)类型(TYPE):每个变 ...

  5. 接口与协议学习笔记-Ethernet UDP通信协议(一)

    总线(BUS,即公共汽车,数据的公共传输路线)分类的方式有很多,如被分为外部和内部总线.系统总线和非系统总线等等,下面是几种最常用的分类方法.另外,总线的传输核心思想是多路复用:时分多路复用-TDMA ...

  6. php页面静态化技术;学习笔记

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. Selenium 实现 Web 自动化的原理 (软件测试52讲学习笔记)

    Selenium 1.0 的工作原理 Selenium 1.0,又称Selenium RC ,RC是Remote Control的缩写.Selenium RC利用的原理:JavaScript代码可以方 ...

  8. Intel微处理器学习笔记(二) 三种模式

    三种模式:实模式.保护模式和平展模式. 实模式存储器(DOS存储器)位于00000H~FFFFFH,共1M空间(任何型号微处理器都支持). 保护模式存储器(Windows存储器)可位于整个保护存储系统 ...

  9. Intel微处理器学习笔记(三) 不可见寄存器

    参考资料: 1.  http://blog.chinaunix.net/uid-20797642-id-2495244.html 2.  http://www.techbulo.com/708.htm ...

随机推荐

  1. 腾讯QQ,人人都是高手

    今天,腾讯果然给出了官方回应,具体表述如下: 可能你看不太懂,其实我也看的不太懂,不过这就是公关的能力体现,就像我"人人都是高手"的大连车务组微机室小编一样,把一个降级flash描 ...

  2. XSS - Labs 靶场笔记(上)

    上周在网上看到的一个XSS平台,刷一波<doge Less - 1: 1.进入主界面,由图二可知是GET请求,提交name=test,回显在页面 2.查看源代码可知 没有做任何过滤,显然存在反射 ...

  3. Python3.9的http.client.py下的HTTPMessage类中的方法getallmatchingheaders的bug修复建议

    在官方网站已经提交相关issue,不过目前看好像还没有修复.具体的bug位置为: http文件夹下的client.py文件,代码位置为:类HTTPMessage下的方法getallmatchinghe ...

  4. Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中. 栈区: ...

  5. STL_deque容器

    一.deque简介 deque是"double-ended queue"的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口 ...

  6. Java中的Date类型无法赋值给数据库的datetime类型

    因为Java中new Date()的结果是"Thu Aug 27 19:03:54 CST 2020",而mysql中的datetime不接受这样的日期格式,插入数据会报错. 解决 ...

  7. Py-多态,封装,反射,描述符,包装标准类型,面向对象进阶

    多态: 对象可以通过他们共同的属性和动作来访问,而不需要考虑他们的类多态是继承的应用 class H2o: def __init__(self,temp): self.temp=temp def ht ...

  8. CoeMonkey少儿编程第4章 变量

    点击这里,现在就开启CodeMonkey的趣味编程之旅. 目标 了解什么是变量 了解变量的命名规则 掌握如何使用变量 变量 什么是变量?顾名思义,变量就是可以变化的量. 和变量相对的是常量,即不可变化 ...

  9. 人工智能"眼睛"——摄像头

    摄像头机器视觉人工智能的"眼睛",其重要性在嵌入式领域不言而喻.但是如何理解和使用摄像头却是一个非常棘手的问题.本文主要针对调试摄像头过程中遇到的问题,对摄像头的基本原理及概述进行 ...

  10. 【转载】【网络安全】渗透中 PoC、Exp、Payload 与 Shellcode 的区别

    原文地址 渗透中 PoC.Exp.Payload 与 Shellcode 的区别 概念 PoC,全称"Proof of Concept",中文"概念验证",常指 ...