630 likes | 813 Views
微机系统原理及应用. 周鸣 上海师范大学信息与机电工程学院. 第一章 概述. 从 8088 、 8086 到 80386 以上直至 奔腾 ,只有 16 位与 32 位的区分,没有本质区别。芯片的指令 80% 以上是完全相同的,芯片的实地址工作方式几乎完全一致,所以 8088 、 8086 是 Intel x 86 系列的基础,要学习 x86 系列的最好办法就是从 8088 、 8086 入手。 PC 机的存储器( M )容量很大,但基本存储单元的工作原理不变;存储器与 CPU 的接口原理、方法没有变。 本书从 8088 、 8086 入手学习 PC. 第一节 引言.
E N D
微机系统原理及应用 周鸣 上海师范大学信息与机电工程学院
从8088、8086到80386以上直至奔腾,只有16位与32位的区分,没有本质区别。芯片的指令80%以上是完全相同的,芯片的实地址工作方式几乎完全一致,所以8088、8086是Intel x 86系列的基础,要学习x86系列的最好办法就是从8088、8086入手。 • PC机的存储器(M)容量很大,但基本存储单元的工作原理不变;存储器与CPU的接口原理、方法没有变。 • 本书从8088、8086入手学习 PC 第一节 引言
一、计算机中的数制 • (一)二进制数的基本特点 • 1.具有两个不同的数字符号,即0和1。 • 2.逢二进位。 • 任意一个二进制数可以按“权”展开
1. 0至9 和 A至F。 • 2. 逢16进位。 • ① 16进制数转化为2进制数。 ② 2进制数转换为16进制数。 (二)16进制数
一)二进制编码的十进制数(BCD) 计算机的输入与输出是用十进制表示 • 二)字母与字符的编码 ASCⅡ:实用标准信息交换码,用7位二 进制编码,可表示128个字符。 用一个字节来表示一个ASCⅡ字符 0至9的ASCⅡ码为 30H至39H 大写字母A至Z的ASCⅡ码为 41H至5AH 小写字母a至z的ASCⅡ码为 61H至7AH • 三) 汉字的编码 这个字符集中的任何一个图形、符号及 汉字都是两个7位字节表示的(每个字节的 最高位置为0)。 二、二进制编码字符是用若干位二进制编码的组合表示字符、数,这称为二进制编码。
逻辑运算: • 1. “与”运算(AND) 3. “非”运算(NOT) • 2. “或”运算(OR) 4. “异或”运算(XNOT) • (一)二进制加法 • 它的运算规则如下: • 0+0=0 例如: • 0+1=1+0=1 • 1+1=0 进位1 • 1+1+1=1 进位1 • (二)二进制减法 • 它的运算规则如下: 三、二进制的运算计算机可进行两种基本的算术运算:加法和减法。利用这两种方法就可以进行乘法、除法以及其它数值运算。
(三)二进制乘法 • 它的运算规则如下: • 0*0=0 例如: • 0*1=0 • 1*0=0 • 1*1=1 • 由于此乘法的重复性差,不便 • 于在机器中实现,现在下面 • 用另外两种方式将运算实现。 0-0=0 借位 1-1=0 例如: 1-0=1 0-1=1 借位
1. 被乘数左移法 乘数 被乘数 部分积 1101 1111 乘数最低位 11110 为1,把被乘数 加部分积, 再 把被乘数左移 乘数为0,不加, 111100 被乘数左移 同上 1111000 同上 n*n2n位 2n位加法器
2. 部分积右移法 • 乘数 被乘数 部分积 • 1101 1111 • 乘数为1,加被乘 • 数部分积右移 • 0,不加部分积 • 右移 • 1,加被乘数部分 • 积右移 • 1,加乘数右移 • 2个n*n乘积2n位 • 此种方法只需要n位加法器。
(四) 二进制的除法 • 例如: • 四、带符号数的表示法 • (一)机器数与真值 • 数有正、有负,那么负数的符号是怎么表示的呢? • 通常一个数的最高位为符号位,若字长为8位,则
为符号位。符号位用“0”表示正,用“1”表示负。为符号位。符号位用“0”表示正,用“1”表示负。 • 例如: • 连用一个符号位在一起的一个数,称为机器数。 • 它的数值称为机器数的真值。在机器数中符号有三种 • 表示法:原码,反码和补码。 • (二)原码 • 正数的符号位用“0”表示,负数的符号位用“1”表示的 • 表示法称为原码。 • 例如: • 符号值 数值 • • (三)反码 • 正数的反码与其原码相同,负数的反码是它的正数按位
取反(连同符号位)而形成的。 • 例如: • 注: 符号位 取反的部分 • 反码的特点: • 1. “0”有两种表示法 • 2. 8位二进制反码所表示的数值范围为+127-127。 • 即 , • 3. 当一个符号数由反码表示时,最高位为符号数。 • 当符号数为“0”时,后面的七位为数值部分; • 当符号数为“1”时,后面的七位一定要把它们按位取反,以 • 表示它的二进制值。
(四)补码 : • 正数的补码表示与原码相同; • 负数的补码表示为它的反码,且在最后位(即最低位)加1所形成。 例如: • 8位带符号位的补码特点:1. ; • 2. 8位二进制补码所表示值为+127 -128; • 3. 一个用补码表示的二进制数 • 当符号位为“0”时,其余7位即为此数的真值; 当符号位为“1”时,其真值为其余7位按位取反,且在最 低位处加1后最终所得的结果。 例如:
采用补码表示的目的在于可以把减法转换成加法。采用补码表示的目的在于可以把减法转换成加法。 • 补码的加法规则: ;补码的减法规则: 。例如:下面举一个钟表的例子:将钟从10点拨至6点有正拨、倒拨两种方式。既可倒拨4个小时,亦可顺拨8个小时。 • 10-4(倒拨)=10+8 (顺拨) 则12称为模。
(10-4)与(10+8)对模12是同余的,-4与+8对模12互补。将两者分别用二进制加、减法计算释例:(10-4)与(10+8)对模12是同余的,-4与+8对模12互补。将两者分别用二进制加、减法计算释例: • 自然丢弃 一般说来,若Z=nK+Y(n为整数),则称Z与Y对模K互补,记为ZY。
第三节 计算机基础一、计算机的基本结构 • 二、名词术语1. 位(Bit) • 位是计算机所能表示的最基本最小的数据单元,位就是一个 二进制位,有0、1两种状态。 • 2. 字(Word)和字长 • 字是计算机内部进行的数据处理的基本单位,每个字的位数 为字长。 • 3. 字节(Byte) • 1Byte=8Bit三、指令程序和指令系统 指令:计算机执行的各种操作的命令的形式写下来的方式。 一条指令对应着一种操作。它由两部分组成:操作码字段和 操作数字段。 操作码表示计算机所要执行的操作;操作数表示参加 操作的数的本身或操作数所在的地址。
指令的格式为 一地址 二地址 • 8088指令的格式大多数为双操作指令。因为计算机只识别二进制数,所以计算机的指令系统中的所有指令都必须以二进制编码的形式来表示,这就是指令的机器码。例如 数据传送指令mov AL,7它的二进制机器码为 1011 0000 (mov AL,n) 0000 0111 ( n=7 )用助记符来表示操作码,用符号或符号地址来表示操作数地址的方式 称为汇编语言,它与机器指令是一一对应的。(例如 Mov,Add,Jmp等指令)当机器开始执行程序,给PC程序计数器赋以程序第一条指令所在的地址,然后每取出一个指令,PC中的内容自动加1,并指向下一条指令的地址,以保证指令顺序执行。值得注意的是只有在执行Jmp,Call,Interrupt时,PC才转到所需要的地方。 操作码 操作数... 操作数...
四、模型机 (一) CPU结构 (P18 如图1-9 1-10) (二) 存储器 • 不同二进制数 地址 内容 • 00H 01H DB FFHCPU控制 信号注意:每一个存储单元的地址和这个地址中存放的内容是 完全不同等概念,千万不能混淆。 • 确定单元后就可以对这个单元的内容进行读或写的操作。 下面举例说明: 1. 读操作 地 址 译 码 器 00H单元 01H单元 . . FFH单元 控制器
将04H单元格中的内容读出送至DR(数据寄存器)。 内容AR 00H 04H 04H FFH DB 读 地 址 译 码 器 00H单元 84H 1000 0100 FFH单元 控制器
2. 写操作 AR 内容 00H DR 10H FFH DB 写 (三) 执行过程 简单说来就是取指令加执行指令。当机器开始执行指令时, 把第一条指令所在地址赋给PC,然后就进入取指阶段,在取 指阶段从内存中读出的内容必为指令,由DR把它送至IR,然 后由指令译码器译码。开始执行将第一条指令的地址送PC 取指读内存 (由DR) IR ID 译码PLA 地 址 译 码 器 00H 10H 26H 0010 0110 FFH 控制器
取指的基本格式为在一条指令执行完以后就可以立即执行下一条指令,减少了CPU为等待的时间,提高了运行速度。8088CPU功能上分为BIU和EU,即分别是总线接口和执行单元。它们可以重叠。举例:把两个十进制数7和10相加。 Mov AL, 7 Add AL,10 HLT 第一条指令 1001 0000(Mov AL, 7) 0000 0111 ( n=7 ) 取指 执行 取指 执行 …... 取指 取指 取指 取指 …... 等待 执行 执行 执行 …...
第二条指令 0000 0100 (ADD AL, n) 0000 1010 ( n=10 )第三条指令 1111 0100 ( HLT ) 三条指令5个字节。 将三条指令放入存储器,若是从00H开始的存储单元。 二进制 地址(十进制数) 内容 0000 0000 00 mov AL,7 0000 0001 01 n=7 0000 0010 02 Add AL,7 0000 0011 03 n=10 0000 0100 04 HLT取第一条指令 取立即数 取第二条指令 取第二条指令第二字节及执行指令的过程五、软件 1011 0000 0000 0111 0000 0100 0000 1010 1111 0100
各种语言和它们汇编、编译、解释程序。 机器的监控管理程序(Moniter),调试程序 系统软件 (Delug),故障检查,诊断程序。 程序库。 操作系统。 软件 应用软件: 编制解决用户所碰到的各种实际问题的程序。 数据库及数据管理系统 由机器提供,为了使用和管理计算机
二、 Intel 8088的结构CPU: 16位微处理器 • DB : 8条 AB : 20条 采用40条引线封装 电源+5V 1M直接寻址 • (一)8088的寄存器结构 寄存器:由多个触发器可以组成一个多位寄存器。存储器:看作是一个寄存器堆,每个存储单元实际相当于一 个缓冲寄存器。(二)8088存储器 8088有20条地址总线, 220=1M,( 210 =1K),地址从00000FFFFF。 其寄存器为16位,8088对地址的运算只能是16位,寻址范围是 0000 FFFFH 。1M存储器以64K为范围分为若干段。 00000,00001,…. 0000E,0000F; 64K个行 00010,00011,…. 0001E,0001F; • 00020,00021,…. 0002E,0002F;
00000,00001,…. 0000E,0000F; 00010,00011,…. 0001E,0001F; • 00020,00021,…. 0002E,0002F; • 64K个行 • • • FFFF0, FFFF1, …. FFFFE, FFFFF • 16个列 • 00000H 由于它为小段的首地址,其低4位一定为0 • 00010H 段地址只取段起始地址高16位。 64K个 这样,每一个存储单元都有唯一的20位地 • 段首地址 42230H 址,此地址称为该存储单元的物理地址。 • 42240H 0000 (左移4位) • + • FFFE0H • FFFF0H 16位段地址 16位偏移地址 20位物理地址 计算方法
16位段地址存放在段寄存器中,偏移量存放在IP、SP、DI、SI、BP(基数)中。当取指令时CS的地址+IP的16位偏移量=要取的指令的物理地址 当堆栈操作时SS的地址+SP的16位偏移量=堆栈操作的20位物理地址 当涉及到操作数时 在不改变段寄存器DS或ES地址+16位偏移量 的情况下,寻址最大=操作数的20位物理地址 范围是64K。64K 代码段64K 堆栈段64K 数据段64K 附加数据段 CS SS DS ES
64 数据总线 A2~A31 BE0~BE3 线性地址总线 32 32 32 地址 32 高速缓存管理部件 地址 驱动器 桶形移位器 分段部件 系统 地址总线 32 高速缓冲存储器 寄存器组 线性地址 20 32数据 ALU 写缓冲器 4*80 物理地址 分页部件 8KB Cache 32数据 存储管理部分 数据总线 收发器 微指令 D0~D31 系统 数据总线 128 浮点运算单元(FPU) 控制与保护 部件 指令译码器 代码流 预取 控制 总线 24位 系统 控制总线 指令 总线 浮点 寄存器组 2*16 指令队列 控制ROM 运算部分 控制部分 译码部分 指令预取部分 总线接口部分
系统控制总线 数据32位 A2~A31、BE0~BE3 地址32位 地址驱动器 系统地址总线 写缓冲器 数据32位 D0~D31 系统数据总线 数据总线收发器 控制总线 (一) 7个功能块: 1.总线接口单元: 产生三总线信号,进行存储器和I/O端口的访问。
地址 地址 高速缓存 管理部件 C P U 32位 32位 数据 8KB Cache 32位 128 预取指令 2.高速缓冲存储器(CPU内部的Cache): 存放从存储器中取出的最近要执行的指令和数据,这样CPU就只需从Cache中取指令,不必经常访问存储器了。
Cache 代码流 指令译码器 128 24位 预取 2*16 指令队列 3.指令预取部分: 32字节的先进先出的队列,它从Cache中取指令,供译码器译码。
控制部分 微指令 指令预取队列 指令 总线 指令译码器 运算部分 代码流 24位 4.指令译码: 从指令预取队列中取指令机器码,翻译成微代码。
存储管 理部分 指令译码器 控制与保护 部件 微指令 运算部分 控制ROM 控制器 5.控制器: 控制器采用微程序设计,根据指令译码器送来的信息产生微指令,对运算器、存储器管理部分……发出控制信号。
桶形移位器 寄存器组 运算器 ALU 浮点运算单元(FPU) 浮点 寄存器组 6.运算器: 包括整数运算器和浮点运算器。
分段部件 线性地址 分页部件 存储器管理部分 7.存储器管理部分: 包括分段管理和分页管理二部分。
(二)基本结构寄存器: 内部寄存器分为4类: • 基本结构寄存器 • 浮点寄存器 • 系统级寄存器 • 调试测试寄存器 应用程序只能访问基本结构寄存器和浮点寄存器。(我们只介绍基本结构寄存器)
1.通用寄存器 D31 D16 D15 D8 D7 D0 AH A X AL EAX BH B X BL EBX CH C X CL ECX DH D X DL EDX SI ESI DI EDI BP EBP • 位序:左为高位,右为低位
汇编助记符: • 32位寄存器的汇编助记符为 • EAX~EDX、ESI、EDI、EBP • AH、AL是AX的高/低8位,AX又是EAX的低16位,设:EAX=12345678H 则: AX=5678H,AH=56H,AL=78H 反之,当89HAH,90HAL后 则: AX=8990H,EAX=12348990H 16位寄存器的汇编助记符为 AX~DX、SI、DI、BP 8位寄存器的汇编助记符为 AH、AL、BH、BL、CH、CL、DH、DL
2.段寄存器: D15 D0 CS 代码段寄存器 SS 堆栈段寄存器 DS 数据段寄存器 ES 附加数据段(附加段)寄存器 FS 附加数据段(附加段)寄存器 GS 附加数据段(附加段)寄存器
3.指针寄存器 D31 D16 D15 D0 IP EIP SP ESP 指令指针寄存器:32位称为EIP,低16位为IP 作用:存放指令单元的偏移地址 堆栈指针寄存器:32位称为EIP,低16位称为SP 作用:存放栈顶单元的偏移地址
4.标志寄存器(F): 为32位,存放两类标志:状态标志和控制标志。 D31 D16 D15 D0 (详细内容在后继课程中介绍)
四、32位微处理器的外部引脚 1.数据线及控制信号 数据线:D63~D0共64位 奇偶校验信号: DP7~DP0 ,每个字 节产生1个校验位 读校验错: PCHK 2.地址线及控制信号 A31~A3:高30位地址线 BE7~BE0:字节允许信号(存储体选中信号) 外围电路对BE7~BE0译码以产生A2~A0信号
3.系统控制信号 时钟输入CLK 可屏蔽中断请求 INTR 非屏蔽中断请求 NMI 系统复位信号 RESET 系统复位后,程序运行的地址为: FFFFFFF0H 实模式 CS: F000H, IP: 0FFF0H
CLK T 系统时钟 是微处理器内部与外部操作的同步时基信号,由时钟(CLK)输入信号来提供。 时钟周期: T状态:就是指时钟周期
M/IO:=1,表明该总线周期,CPU与存储器交换信息 =0,表明该总线周期,CPU与I/O接口交换信息 W/R: =1,表明该总线周期,CPU进行写操作 =0,表明该总线周期,CPU进行读操作 D/C :=1,表明该总线周期,传输的是数据 =0,表明该总线周期,传输的是指令代码 这三个信号的组合,决定了当前总线周期所要完成的操作。 4.总线周期定义信号(输出) “周期”是一段时间 CPU通过总线与存储器、I/O交换一个数据所需要的时间称为总线周期。
5.总线仲裁信号 (1)HOLD:总线保持请求(输入) (2)HLDA:总线保持响应(输出) AB DB CB HOLD 高速I/O接口 X86 DMAC HLDA