资源描述
第一章 微处理器技术基础,1.1 微处理器的发展简史 1.2 微处理器有关的技术名词 1.3 计算机编码及总线的概念 1.4 8086/8088微处理器内部结构,1.3 计算机编码及总线的概念,1.3.1 计算机中常用的进制数 人们最常用的数是十进制数,计算机中采用的是二进制数,同时有的时候为了简化二进制数据的书写,也采用八进制和十六进制表示方法。下面将分别介绍这几种常用的进制。 一、 十进制数 十进制数是大家熟悉的,用0,1,2,8,9十个不同的符号来表示数值,它采用的是“逢十进一,借一当十”的原则。,1.3.1 计算机中常用的进制数,二、二进制表示法 基数为2的记数制叫做二进制。 二进制数的计算规则是“逢二进一,借一当二”。,例:二进制数1011.1表示如下: (1011.1)B= 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20 +1 * 2-1,1.3.1 计算机中常用的进制数,运算规则: 加法运算: 0+0 = 0 0+1 = 1 1+0 = 1 1+1 =10 (逢二进一) 减法运算: 0-0 = 0 10-1 =1 (借位) 1-0 = 1 1-1 =0 乘法运算: 0 * 0 =0 0 * 1 =0 1 * 0 =0 1 * 1 =1 除法运算 0 / 1 =0 1 / 1 =1,1.3.1 计算机中常用的进制数,三、 八进制表示法 八进制数是基数为八的计数制。八进制数主要采用0,1,2,7这八个阿拉伯数字。 八进制数的运算规则为“逢八进一,借一当八”。,例:(467.6)O=4 * 82 + 6 * 81 + 7 * 80 + 6 * 8-1,1.3.1 计算机中常用的进制数,四、 十六进制表示法 基数为16,用0 - 9 、A - F 十六个字符来数值,逢十六进一。各位的权值为 16i 。,例:(56D.3)H = 5 * 162 + 6 * 161 + 13 * 160 + 3 * 16-1,1.3.2 进制间的转换,一 、 二进制数和十进制数之间的转换 (1)二进制数转换为十进制数 方法:按二进制数的位权进行展开相加即可。 例:11101.101 =124+123+122+021+120+12-1+02-2+12-3 =16+8+4+0+1+0.5+0.25+0.125 =29.875,1.3.2 进制间的转换,(2)十进制数转换为二进制数 方法: A、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。 B、整数转换采用除2取余法:用2不断地去除要转换的数,直到商为0。再将每一步所得的余数,按逆序排列,便可得转换结果。 C、小数转换采用乘2取整法:每次用2与小数部分相乘,取乘积的整数部分,再取其小数部分乘2直到小部分为0。将所取整数顺序放在小数点后即为转换结果。,1.3.2 进制间的转换,2 136 余数(结果) 低位 2 68 - 0 2 34 - 0 2 17 - 0 2 8 - 1 2 4 - 0 2 2 - 0 2 1 - 0 0 - 1 高位,例:将(136)D转换为二进制数。,转换结果:(136)D=(10001000)B,1.3.2 进制间的转换,转换结果:(87)D=(01010111)B,例:将(87)D转换为二进制数。 2 87 余数(结果) 低位 2 43 - 1 2 21 - 1 2 10 - 1 2 5 - 0 2 2 - 1 2 1 - 0 0 - 1 高位,1.3.2 进制间的转换,例:将(0.625)D转换为二进制数。 0.625 * 2 1.25 * 2 0.5 * 2 1.0 取整: 高位 低位,转换结果:(0.625)D = (0.101)B,例:将(0.1)D转换为二进制数。,0.1 * 2 0.2 * 2 0.4 * 2 0.8 * 2,1.6 * 2 1.2 * 2 (循环),取整: 高位 低位,转换结果:(0.1)D (0.00011)B,1.3.2 进制间的转换,二、 二进制数和八进制数、十六进制数间的转换 (1)二进制数到八进制数、十六进制数的转换 A、二进制数到八进制数转换采用“三位化一位”的方法。从小数点开始向两边分别进行每三位分一组,向左不足三位的,从左边补0;向右不足三位的,从右边补0。 B、二进制数到十六进制数的转换采用“四位化一位”的方法。从小数点开始向两边分别进行每四位分一组,向左不足四位的,从左边补0;向右不足四位的,从右边补0。 例:将(1000110.01)B转换为八进制数和十六进制数。 1 000 110 . 01 001 000 110 . 010,( 1 0 6 . 2 )O,1.3.2 进制间的转换,二进制数到十六进制数的转换: (1000110.01)B = 100 0110 . 01 0100 0110 . 0100,(4 6 . 4)H,(2)八进制、十六进制数到二进制数的转换 方法:采用“一位化三位(四位)”的方法。按顺序写出每位八进制(十六进制)数对应的二进制数,所得结果即为相应的二进制数。 例:将(352.6)o转换为二进制数。 3 5 2 . 6 011 101 010 110 =(11 101 010 . 11)B,1.3.3 带符号数的表示方法,1.3.3 带符号数的表示方法,计算机中的带符号的数,用二进制编码表示,数的符号 也用二进制表示。,带符号的数有三种表示方法: 1、原码 2、反码 3、补码,数X的原码记作X原 反码记作X反 补码记作X补,一、原码表示法:,原码用数的最左边一位(MSB)表示数的正负, 即在D7或D15位加0或1。 符号位:0表示正,1表示负; 数值位:真值的绝对值。,1.3.3 带符号数的表示方法,X原= X 0 X 2n-1-1 2 n-1 + X -(2 n-1-1) X 0,1.3.3 带符号数的表示方法,例:求X1=+1101011,X2=-0111011的原码表示。 (8位) X1原 = X1 = 01101011 X2原 = X2 = 10111011,例:求X1=1011,X2=-1011的原码。(8位) X1原=00001011 X2原=10001011,练习: 求+18和-18的原码。,1.3.3 带符号数的表示方法,0的表示形式(8位) +0原=00000000 -0原=10000000 特点: A、原码与真值的对应关系简单。 B、0的编码不唯一,处理运算不方便。,1.3.3 带符号数的表示方法,问题: A、一个负数和一个正数相加,和的符号位不是两符号直接运算的值:0+1=1,而是由两数的大小决定。即由两数中绝对值大的数决定。 B、两个负数相加,由于1+1=10,因此和的符号也不是由两符号位直接运算的结果决定的。,二、反码表示法:,若X0 ,则 X反=X原 若X0, 则 X反= 对应原码的符号位不变,数值部分按位求反。,1.3.3 带符号数的表示方法,练习: 求-52的原码和反码。,特例:0的反码也不唯一! +0 反= 0 0000000B - 0 反= 1 1111111B,+1100111反=01100111 -1100111反=10011000,三、补码表示法:,1.3.3 带符号数的表示方法,方法:正数的补码和原码相同。 负数的补码=相应反码+1。,X补= X 0X 2n-1-1 2 n + X -2 n-1 X 0,1.3.3 带符号数的表示方法,练习: 求-52的补码。,例:求+127和 -128的补码。(8位) +127补=01111111原=01111111 -128补=28-128=100000000-10000000=10000000 -0补=-0000000反+1=11111111+1=00000000 0补=+0补=-0补=00000000,四、注意的问题:,1.3.3 带符号数的表示方法,1、两个运算原则: X反反=X原 X补补=X原,X+Y补=X补+Y补 X-Y补=X补- Y补,2、补码运算的性质:,3、补码运算时,其符号位要与数值部分一起参加运算,但结果不能超出范围,否则会出现溢出错误。 4、符号运算后如有进位,则把这个进位舍掉不要。,1.3.3 带符号数的表示方法,五、补码运算:,例: 用补码进行下列运算: (+33)+(+15) (-33)+(+15) (+33)+(-15) (-33)+(-15),1.3.3 带符号数的表示方法,00100001B+33补 11011111B-33补,+ 00001111B+15补 + 00001111B +15补,00110000B+48补 11101110B-18补,1.3.3 带符号数的表示方法,00100001B+33补 11011111B-33补,+ 11110001B-15补 + 11110001B-15补,1 00010010B+18补 111010000B-48补,进位,丢掉,进位,丢掉,1.3.3 带符号数的表示方法,1、已知X原=01101000B,Y原=10001000B, 求X+Y补=?,2、已知X原=10001101B,Y原=10000001B, 求X+Y补=?,练习:,在计算机内, 任何信息都是用代码表示的,字母、数字和符号(以后简称为字符)也是用代码表示的。一般情况下,计算机依靠输入设备把要输入的字符编成一定格式的代码,然后才能接收进来。输出则是相反过程,为了在输出设备输出字符,计算机要把相应的字符的编码送到外部输出设备。 目前国际上使用的字符编码系统有许多种。,1.3.4 计算机中常用编码,一、编码介绍:,二、 ASCII字符编码,1.3.4 计算机中常用编码,全称是“美国信息交换标准代码”。 见ASCII码字符表。,说明: 用8位表示字符代码,其基本代码占7位,第8位用作 奇偶校验位,用以检测字符在传送过程中是否出错。 (奇校验:1的个数是奇数;偶校验:1的个数是偶数; ),ASCII码采用 7 位二进制代码来对字符进行编码。 它包括 32 个通用控制符号,10 个阿拉伯数字, 52 个英文大、小字母, 34 个专用符号, 共 128 个。例如阿拉伯数字 09 的ASCII码分别为 30H39H, 英文大写字母A、 B、 、Z的ASCII码是从 41H开始依次往下编排。并非所有的ASCII字符都能打印, 有些字符为控制字符用来控制退格,换行和回车等。 ASCII代码还包括几个其它的字符,例如文件结束(EOF)、 传送结束(EOT), 用作传送和存储数据的标志。,1.3.4 计算机中常用编码,通常,7 位ASCII代码在最高位添加一个“0”组成 8 位代码。因此,字符在计算机内部按 8 位一组存储,正好占一个字节。 在存储和传送信息时,最高位常用作奇偶校验位, 用来检验代码在存储和传送过程中是否发生错误。偶校验时,每个代码的二进制形式中应有偶数个 1。例如传送字母“G”,其ASCII码的二进制形式为 1000111,因有 4 个 1, 故偶校验位为 0, 8 位代码将是 01000111。 奇校验每个代码中应有奇数个 1。 若用奇校验传送字符“G”,则 8 位代码为 11000111。 奇偶校验只具有发现代码在存储和传送过程中出现奇数个位出现错误的能力。 由于它简单可行, 所以在计算机中, 广泛地被用于信息的存储和传送过程。,1.3.4 计算机中常用编码,1.3.4 计算机中常用编码,三、压缩BCD码,1.3.4 计算机中常用编码,定义: 用4位二进制数表示一位十进制数,也叫8-4-2-1码。,例题:十进制数4256的压缩BCD码表示为:,0100 0010 0101 0110 B,四、非压缩BCD码,定义: 用8位二进制数表示一位十进制数,这时高4位无意义,低4位是一个BCD码。,注意:数字的ASCII码是一种非压缩的BCD!,xxxx0100 xxxx0010 xxxx0101 xxxx0110 B,例题:十进制数4256的压缩BCD码表示为:,1.3.4 计算机中常用编码,1.3.5 微型计算机系统的三总线,一、几个概念的介绍:,1、总线:传递信息的一组公用导线。,2、系统总线:从处理器引出的若干信号线,CPU通过它们 与存储器或I/O设备进行信息交换。,系统总线分为: 数据总线、地址总线和控制总线。,二、数据总线(DB):,作用:传送数据或代码。 其条数与处理器字长相等。,如:8086的内、外数据线均为16位,记作D0D15。,1.3.5 微型计算机系统的三总线,在CPU进行读操作时,内存或外设的数据通过数据总线送往CPU; 在CPU进行写操作时,CPU数据通过数据总线送往内存或外设,数据总线是双向总线。,CPU在地址总线上输出将要访问的内存单元 或I/O端口的地址,该总线为单向总线。,三、地址总线(AB):,作用:传送地址信息。 其条数与微处理器寻址存储器单元的范围有关。,如:8086的地址线为20位,可以寻址220=1048576B1M的存储单元,地址范围为00000HFFFFFH。,1.3.5 微型计算机系统的三总线,1.3.5 微型计算机系统的三总线,四、控制总线(CB):,作用:传送控制信号。(输出控制信号和输入控制信号),一部分是从CPU输出:通过对指令的译码,由CPU内部产生,由CPU送到存储器、输入/输出接口电路和其它部件。如时钟信号、控制信号等。 另一部分是由系统中的部件产生,送往CPU,如:中断请求信号、总线请求信号、状态信号。,控制总线的方向:,1.4 8086/8088微处理器内部结构,1.4.1 8086的基本结构,8086CPU的内部由两个独立的工作部件组成,即执行部件 EU(Execution Unit)和总线接口部件BIU(Bus Integerface Unit),其中EU不与系统总线连接,只负责指令的执行, BIU则根据EU的请求,完成CPU与存储器或I/O设备之间的数据传送。 两部分各自执行自己的功能并行工作,这种工作方式与传统的计算机在执行指令时的串行工作相比极大的提高了工作效率。,20位,1.4.1 8086的基本结构,一、执行部件EU:,功能:从BIU的指令队列中取出指令代码,经指令译码 器译码后执行指令所规定的全部功能。执行指令所得结果或 执行指令所需的数据,都由EU向BIU发出命令,对存储器或 I/O接口进行读/写操作。,1.4.1 8086的基本结构,1、算术逻辑单元(ALU):,核心是16位的二进制加法器。,功能: (1)进行所有的算术和逻辑运算。 (2)按指令的寻址方式计算出寻址单元的16位的偏移地址或有效地址EA(Effecy Address),并将此偏移地址送到 BIU中形成一个20位的实际地址,以实现1M字节的存储空间寻址。,1.4.1 8086的基本结构,2、状态标志寄存器(Flags):,该寄存器为16位,用来反映CPU运算后的状态特征或 存放控制标志。,/,/,/,/,/,/,/,其中9位有效位(6位状态标志位,3位控制标志位), 7位无效位。,1.4.1 8086的基本结构,(1)状态标志位:用来反映EU执行算术或逻辑运算以后的结果特征。,CF:进位标志。 CF=1表示指令执行结果在最高位产生了一个进位或借位; CF=0表示无进位或借位产生。 AF:辅助进位标志(又叫半进位标志)。 AF=1表示字节操作时,结果的低4位产生了一个进位或借位; AF=0表示无进位或借位产生。 OF:溢出标志 。 OF=1表示带符号数在进行算术运算时产生了算术溢出; OF=0表示无溢出。,1.4.1 8086的基本结构,功能:当运算结果超出了范围, 8位为-128-+127, 16位为-3276832767, 那样就会产生溢出,即OF为1。 备注:溢出只能出现在两个同号数相加 或两个异号数相减的情况下。 OF的判断:次高位向最高位进位与最高位进位的异或,如果值为1,溢出,否则没有溢出。,1.4.1 8086的基本结构,具体地讲, 对于加运算, 如果次高位(数值部分最高位)形成进位加入最高位,而最高位(符号位)相加(包括次高位的进位)却没有进位输出时;或者反过来,次高位没有进位加入最高位,但最高位却有进位输出时,都将发生溢出。 因为这两种情况分别是:两正数相加,结果超出了范围,形式上变成了负数;两负数相加,结果超出了范围,形式上变成了正数。 对于减运算,当次高不需从最高位借位,但最高位却需借位(正数减负数,差超出范围); 或者反过来,次高位需从最高位借位, 但最高位不需借位(负数减正数,差超出范围), 也会出现溢出。,1.4.1 8086的基本结构,SF:符号标志。 SF=1表示运算结果为 负数; SF=0表示运算结果不为负数。 PF:奇偶标志 。 PF=1表示运算结果的低八位所含1的个数为偶数。 PF=0表示指令执行结果中有奇数个1。,ZF:零标志 。 ZF=1表示运算结果为零; ZF=0表示运算结果不为零。,1.4.1 8086的基本结构,举例: 0101 0100 0011 1001 + 0100 0101 0110 1010,1001 1001 1010 0011,显然,运算结果最高位为1,所以,SF=1;由于运算结果本身部位0,所以ZF=0;由于低8位所包含的1的个数为4,为偶数,所以PF=1;由于 最高位没有向前进位,所以CF=0;运算过程中,第3位向第4位产生了进位,所以AF=1;由于低位向最高位产生了进位,而最高位没有向前产生进位,所以OF=1。,1.4.1 8086的基本结构,练习: 分析01100110+01010110运算对标志的影响.,(2)控制标志位:用来控制CPU的操作,它由程序设置或由程序 清除。,DF:方向标志。用来控制数据串操作指令的地址步进方向。 DF=1表示数据串指令将以地址的递减顺序对数据串数据进行处理; DF=0表示数据串指令将以地址的递增顺序对数据串数据进行处理。 。 IF:中断允许标志 。 IF=1表示8086CPU开中断; IF=0表示8086CPU关中断。 TF:陷阱标志或单步操作标志 。 TF=1表示8086CPU处于单步工作方式; TF=0表示8086CPU正常执行程序。,1.4.1 8086的基本结构,3、数据暂存寄存器:,1.4.1 8086的基本结构,功能:协助ALU完成运算,对参加运算的数据进行暂存。,4、通用寄存器组:,(1)通用寄存器(数据寄存器) : AX、BX、CX、DX。可以作16位或作两个8位来使用。,(2)专用寄存器:,1.4.1 8086的基本结构,5、控制单元:,功能:接收从BIU的指令流队列中来的指令,经过指令 译码器译码,形成各种控制信号,对EU的各个部件实现 完成规定的操作。,总线接口部件BIU内部设有四个16位段地址寄存器:代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES,一个16位指令指针寄存器IP,一个6字节(对8086而言)指令队列缓冲器,20位地址加法器和总线控制电路。,二、总线接口部件BIU :,1.4.1 8086的基本结构,主要功能:根据执行部件EU的请求,负责完成CPU与存储器或I/O设备之间的数据传送。,1.4.1 8086的基本结构,1、指令队列缓冲器:,功能:用来暂存一组预取指令,即在执行指令的同时, 从内存中取下一条指令,并放入指令队列缓冲器中。采用 “先进先出”原则,顺序存放,顺序被取到EU中去执行。, 2、指令指针寄存器IP:,它是一个16位的寄存器,存放EU要执行的下一条指令 (预取指令)的偏移地址(段内地址),用以控制程序中指 令的执行顺序,实现对代码段指令的跟踪 。,1.4.1 8086的基本结构,3、地址产生器:,由于指令指针和通用寄存器都是16位,因而寻址范围只有 64K字节。8086为了实现1MB的存储单元的寻址,采用分段管 理方式。由段寄存器提供段地址,指令(IP)提供偏移地址, 经地址产生器(加法器)运算产生20位的物理地址PA(Physical Address),此地址也称为实际地址。,逻辑地址LA(Logic Address):是在程序中使用的地址,它由段地址和偏移地址两部分组成(16位)。 表示形式为:“段地址偏移地址”,1.4.1 8086的基本结构,补充:,物理地址PA:就是存储器的实际地址,它是指CPU和 存储器进行数据交换时所使用的地址(20位)。,物理地址=段地址10H偏移地址,存储器中的每个存储单元都可以用两个形式的地址来表示:实际地址(或称物理地址)和逻辑地址。,1.4.1 8086的基本结构,段寄存器值,偏移量,+,物理地址,16位,4位,16位,20位,存储器物理地址的计算方法,段基址:CS、DS、ES、SS。 偏移地址:IP、DI、SI、BP、SP等。,1.4.1 8086的基本结构,例题: 计算逻辑地址035AH:32B8H的物理地址PA。,练习: 计算逻辑地址1645H:3BA0H的物理地址PA。,4、总线控制逻辑:,1.4.1 8086的基本结构,功能:用来分时传送20位地址信号和16位数据信号、4位 状态信号以及其他控制信号的输入与输出。,5、段寄存器:,CS:16位代码段寄存器 DS:16位数据段寄存器 ES:16位附加段寄存器 SS:16位堆栈段寄存器,CS 0000,IP,代码段,DS或ES 0000,SI、DI或BX,SS 0000,SP或BP,数据段,堆栈段,存储器,段寄存器和偏移地址寄存器组合关系,1.4.1 8086的基本结构,1、20位地址的形成,并将此地址送至程序存储器指定单元,从该单元取出指令字节,依次放入指令队列中。 2、每当8086的指令队列中有2个空字节,8088指令队列中有1个空字节时,总线接口部件就会自动取指令至队列中。 3、执行部件从总线接口的指令队列首取出指令代码,执行该指令。 4、当队列已满,执行部件又不使用总线时,总线接口部件进入空闲状态。 5、执行转移指令、调用指令、返回指令时,先清空队列内容,再将要执行的指令放入队列中。,三、补充-8086/8088CPU执行程序的操作过程:,1.4.2 8086的内部寄存器功能,8086CPU中可供编程使用的有14个16位寄存器,按其用途可分为3类:通用寄存器、段寄存器、指针和标志寄存器,如图所示。,1.4.2 8086的内部寄存器功能,一、通用寄存器 :,分为数据寄存器和指针寄存器、变址寄存器两组。,1、数据寄存器:,作用:主要用来存放操作数或中间结果。数据寄存器包括4个 16位的寄存器AX、BX、CX和DX,一般用来存放16位数据,故称 为数据寄存器。其中的每一个又可根据需要将高8位和低8位分成 独立的两个8位寄存器来使用,即AH、BH、CH、DH和AL、BL、 CL、DL两组,用于存放8位数据,它们均可独立寻址、独立使用。,AX:累加器;BX:基址寄存器; CX:计数寄存器;DX:数据寄存器,2、指针寄存器和变址寄存器:,1.4.2 8086的内部寄存器功能,前者作用:用来存取位于当前堆栈段中的数据。 后者作用:用来存放当前数据段的偏移地址。,表3.1 通用寄存器的特定用法,二、段寄存器 :,1、代码段寄存器CS(Code Segment):,1.4.2 8086的内部寄存器功能,2、数据段寄存器DS (Data Segment):,4、附加段寄存器ES(Extra Segment):,3、堆栈段寄存器SS(Stack Segment):,作用:提供CPU运行的当前代码段,CPU执行的指令将从该段中取得。,作用:指向程序当前使用的数据段。,作用:通常用来存放数据,典型用法是用来存放串操作的目的数据。,作用:给出程序当前使用的堆栈段。,1.4.2 8086的内部寄存器功能,三、状态标志寄存器 :,前面已经介绍。,
展开阅读全文