830 likes | 1.03k Views
课程内容. 微机原理:. CPU结构、汇编语言程序设计. 接口技术:. 接口、可编程接口芯片、中断技术等. 课程要求、学习方法. 课时: 72 学时(理论)+ 36 学时(实验). 课程内容抽象,不易理解, 多做练习,注重基本概念的理解。. 具体章节. 微机基础 80x86 微处理器 80x86 指令系统 汇编语言程序设计 半导体存储器 输入 / 输出与中断 输入 / 输出接口芯片及应用. << 微型计算机原理及应用 >> 周杰英等编 机械工业出版社 《微型计算机系统原理及应用》(第三版 上册) 周明德 编 ,清华大学出版社
E N D
课程内容 • 微机原理: CPU结构、汇编语言程序设计 • 接口技术: 接口、可编程接口芯片、中断技术等
课程要求、学习方法 课时:72学时(理论)+36学时(实验) 课程内容抽象,不易理解, 多做练习,注重基本概念的理解。
具体章节 • 微机基础 • 80x86微处理器 • 80x86指令系统 • 汇编语言程序设计 • 半导体存储器 • 输入/输出与中断 • 输入/输出接口芯片及应用
<<微型计算机原理及应用>> 周杰英等编 机械工业出版社 《微型计算机系统原理及应用》(第三版 上册) 周明德 编 ,清华大学出版社 《微计算机原理》潘名莲,马争,惠林 编 电子工业出版社 《汇编语言》 王爽 编,清华大学出版社 教材: 参考书:
第一章 绪论 第一节微型计算机的发展及应用 第二节数据的表示方法 第三节 微型计算机系统结构概述
第一节 微型计算机的发展及应用 一、计算机的发展历程 自1946年第一台电子计算机问世以来,计算机科学和技术的发展突飞猛进,已深入到人类生活的各个方面。半个世纪以来,伴随着电子管、晶体管、集成电路和超大规模集成电路的发展,计算机的发展可分为四代。 第一代电子计算机时代。从1946年第一台计算机研制成功到50年代后期,其主要特点是采用电子管作为基本器件,使用机器语言。在这一时期,计算机主要为军事与国防尖端技术的需要而研制的。
第二代晶体管计算机时代。 从20世纪50年代中期到60年代后期,这一时期计算机的主要器件逐步由电子管改为晶体管,因而缩小了体积,降低了功耗,提高了速度和可靠性,软件方面发展到汇编语言和高级语言,技术上的应用范围进一步扩大,在工程设计、气象、数据处理及其他科学领域得到广泛应用。 第三代集成电路计算机时代。 从20世纪60年代中期稻0年代初期,计算机采用集成电路作为基本器件,因此,功耗、体积、价格等进一步下降,而速度及可靠性相应地提高。开始出现操作系统软件,由于集成电路成本的迅速下降,使计算机的成本较低,因此计算机应用范围更加扩大,占领了许多数据处理的应用领域。 第四代大规模集成电路计算机时代。 从20世纪70年代至今,第四代计算机采用大规模或超大规模的集成电路。这种工艺可在硅半导体上集成几千、几万甚至几千万电子器件。计算机的体积、功耗和价格迅速降低,已经广泛普及到教育、企事业、科研、军事和家庭等各个领域。
Intel 4004 Intel 8008 Intel 8085 二、微处理器发展概述 1. 第一代微处理器 • Intel4004、Intel4040 — 4位微处理器 • Intel8008 — 低档8位微处理器 2. 第二代微处理器 • Intel8080、MC6800、6501、6502 — 8位微处理器 • Intel8085、Z80、MC6809 — 高档8位微处理器 • 指令比较完善,有了中断与DMA • 汇编、BASIC,FORTRAN、PL/M • 后期配备CP/M操作系统
3. 第三代微处理器 • Intel8086 、Z8000、MC68000 — 16位 • - 8086数据总线16位、地址总线20位 • Intel8088 — 准16位 • - 外部数据总线8位,内部数据总线16位- IBM PC、IBM PC/XT • Intel80286、MC68010 — 高档16位 • - 数据总线16位,地址总线24位 • - IBM PC/AT • - 实地址模式、虚地址保护模式 • - 虚地址模式可寻址16MB物理地址和1GB的虚拟地址空间
4. 第四代微处理器 • Intel80386 — 32位微处理器- 数据总线32位,地址总线32位 • - 实地址模式、虚地址保护模式、虚拟8086模式 • - 虚地址模式可寻址4GB(232)物理地址和64TB(246)的虚拟地址空间 • Intel80486 — 32位微处理器- 80386+80387+8KB的Cache • - 部分采用RISC技术、突发总线技术 • - 使用时钟倍频技术
5. 第五代微处理器 • Pentium(奔腾)— 32位微处理器 • Pentium MMX(多能奔腾) — 32位微处理器- 增加了57条MMX指令- 采用了SIMD技术- 同时处理8个字节的数据
6. 第六代微处理器 (P6核心结构) • Pentium Pro(高能奔腾) — 32位微处理器- 64条数据线、36条地址线(区别Pentium的32条地址线)- 实现了动态执行技术(乱序执行) • Pentium II(奔腾2)— 32位微处理器 • Pentium III(奔腾3) — 32位微处理器
7. 第六代之后的微处理器 • Pentium 4 — 32位微处理器(非P6核心结构) • Itanium — 64位微处理器- 采用EPIC技术、RISC技术和CISC技术 - 具有显式并行功能 - 具有断定执行功能 - 具有数据预装的功能 - 采用三级高速缓存 • AMD64 — 64位微处理器- AMD 使用x86结构并扩展到64位来获得x86-64结构- 处理器能全速高性能地运行x86和x86-64程序- 64位模式不采用分段模式- 具有长模式,包括64位模式和兼容模式(允许现有程序无需修改就运行在长模式下)
三、微型计算机的发展 • 微型化─ 便携式、低功耗 • 巨型化─ 尖端科技领域的信息处理,需要超大容量、高速度 • 智能化─ 模拟人类大脑思维和交流方式,多种处理能力 • 系列化、标准化─ 便于各种计算机硬、软件兼容和升级 • 网络化─ 网络计算机和信息高速公路 • 多机系统─ 大型设备、生产流水线集中管理(独立控制、 故障分散、资源共享)
四、微型计算机的应用 • 科学计算 ; • 数据处理和管理 ; • 计算机控制 ; • 计算机辅助设计/计算机辅助制造 (CAD/CAM); • 智能模拟 ;
第二节 数据的表示方法 • 重点理解 • 特点; • 表示方法; • 相互间的转换。
一、进位计数制 • 十进制——符合人们的习惯 • 二进制——便于物理实现 • 十六进制——便于识别、书写 • 八进制
1. 十进制 (标识:后缀D或省略) 特点:以十为底,逢十进一; 共有0-9十个数字符号(数码) 表示: (权展开式)
2. 二进制 (标识:后缀B) 特点:以2为底,逢2进位; 只有0和1两个数字符号 表示: (权展开式)
3. 十六进制 (标识:后缀H) 特点:以16为底,逢16进位; 有0--9及A--F共16个数字符号 表示: (权展开式)
进位计数制的一般表示 按进位的方法进行计数,称为进位计数制。在进位制中每个数规定使用的数码符号的数量,称为进位基数,用R表示。使用R为基数的计数制称为R进制数,常用的有十进制数、二进制数、十六进制数、八进制数等。若每位数码用ai来表示(下标i指示位数),则进位计数制表示的方法如下: N=(an-1 ,an-2 ,…,ai,…, a1, a0)R (数码) Rn-1, Rn-2 , …,Ri,…, R1,R0(权值)
进位计数制的一般表示 建立了权值的概念后,对任意一个R进制数N都可表示为: 其中: ai--N的第i位数码,可以是R个符号中任何一个; n,m –整数和小数的位数; R--基数; Ri-- K进制数的权
表1-1 四种计数法的表示 表1-2 四种计数法表示数的对应关系
微型计算机的常用术语和指标 1.位和字节 • 位(bit)是计算机所能表示的最小的数据单位,可缩写成b。 • 字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。字节可记作B。 K 是 kelo 的缩写,1K=1024=210; M是 mega的缩写,1M=1024K=220; G 是 giga 的缩写,1G=1024M=230; T 是 tera 的缩写,1T=1024G=240 ; P 是 Peta 的缩写,1P=1024T=250。
2.字长 • 字长是微处理器与存储器、I/O接口间一次传送二进制数据的位数(总线宽度)。 • 微处理器的字长有1位、 4位、8位、16位和32位
3.字(Word) 字是计算机中CPU处理和传送信息的最基本单位。它通常与寄存器、运算器、传输线的宽度一致。 4.存储容量 存储单元以字节为单位。存储容量是指CPU构成的系统所能访问的存储单元数。通常由地址总线AB的宽度决定。如AB = 16,所能寻访的地址码有216 =65536种,因此可区分65536个存储单元。计算机中210 =1024规定为1K,则216 = 65536 = 64KB,220 =1024K×1024K = 1MB(兆),230 =1024K×1024K×1024K = 1GB。 5 .指令 计算机能够识别和执行的基本操作命令。计算机指令有两种表示方式:机器码和助记符。机器码又称指令码,是机器能够接受的指令,但设计人员使用不便。助记符便于编写程序,在运行前须转换为机器码。通常一条指令由操作码和操作数两部分组成。前者说明进行何种操作,后者指出参与操作的数据的来源。
7.指令系统 计算机所能执行的全部指令的集合,称为该计算机的指令系统。微处理器的主要功能是由它的指令系统来体现的,不同的微处理器有不同的指令系统,其中每条指令对应着微处理器的一种基本操作。计算机的指令系统一般含有几十到几百条指令。 8.程序 为完成某一任务所作的指令(或语句)的有序集合称为程序。 9.运算速度 计算机完成一个具体任务所用的时间就是完成该任务的时间指标,计算机的速度越高,时间越短。以每秒执行基本指令的条数来大致反映计算机的运算速度。单位为百万条指令/秒(MIPS)。另一个衡量指标是计算机的主频,即CPU的时钟频率,单位为兆赫(MHz)或吉赫(GHz)。
二、数制间的相互转换 (1)任意进制数的表示。 例如:十进制数309.84可根据按权展开式写成: 3×102 + 0×101 + 9×100 + 8×10-1 + 4×10-2 对于八进制数 ( 406 )8 = 4×82 + 6×80 二进制数 ( 110101 )2 = 1×25 + 1×24+1×22 + 1×20 十六进制数 ( AC7.B )16 = 10×162+12×161+7×160+11×16-1 (2)二进制与十进制数的相互转换 1)二进制数转换为十进制数:可直接按权展开。 例把二进制数 (11011)2转化为十进制数。 解:(11011)2 = 1×24 + 1×23 + 1×21 + 1×20 = 16 + 8 + 2 + 1 = 27 例把二进制数 (111.011)2转化为十进制数。 解:(111.011)2 = 1×22 + 1×21 + 1×20 + 1×2-2 + 1×2-3= 4 + 2 + 1 + 0.25 + 0.125= 7.375
2)十进制数转换为二进制数:方法是:整数除以2取余,小数乘以2取整。2)十进制数转换为二进制数:方法是:整数除以2取余,小数乘以2取整。 例将十进制数37.375转换为二进制数,其方法如下。 解:0 ← 1 ← 2 ← 4 ← 9 ← 18 ← 37 . 375 →.75 → .5 → 0 ↓÷2 ↓÷2 ↓÷2 ↓÷2 ↓÷2 ↓÷2 ↓×2 ↓×2 ↓×2 1 0 0 1 0 1 0 1 1 故:37.375 = (100101.011)2 另外,也可采用记权值的方法转换为二进制数,例如 (86.625)10转换为二进制数。我们知道,二进制数权值依次为: 27 26 25 24 23 22 21 20 2-1 2-2 2-3 二进制权值 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ 128 64 32 16 8 4 2 1 0 0.5 0.125 十进制数
(3)二进制数与十六进制数的相互转换 1)二进制数转换为十六进制数:从小数点开始,分别向左、向右每4位二进制数划为一段,不足4位者填0补足。每段二进制数用1位十六进制数替代。 2)十六进制数转换成二进制数:将十六进制数的整数部分和小数部分用相应的4位二进制数替代即可。
例将 (1011011100011.0011011)2转换成十六进制数。 解:0001 0110 1110 0011 . 0011 0110(带下划线的数字是分组后添加的) ↓ ↓ ↓ ↓ ↓ ↓ 1 6 E 3 . 3 6 故:(1011011100011.0011011)2 = (16E3.36)16 例将 (AE7.D2)16转换成二进制数。 解: A E 7 . D 2 ↓ ↓ ↓ ↓ ↓ 1010 1110 0111 . 1101 0010 故: (AE7.D2)16 = (101011100111.1101001)2 注:为了便于区分不同数制所表示的数,规定在数字尾部用B表示二进制数,用Q表示八进制数,用D表示十进制数(也可不加),用H表示十六进制数。如78H、756Q、853D、1101101B分别表示十六进制、八进制、十进制和二进制数。
三、数值数据的表示方法 计算机处理的数据分为数值型和非数值型两类。 非数值型用于表示各种符号 数值型用于表示数量的多少 数值数据通常是带符号的,把二进制数的最高位定义为符号位,其余为数值位 • 符号位为 0表示正数,符号位为 1表示负数 机器数:连同符号位一起数值化了的数,称为机器数 真值:机器数所表示的真实的数值,称为真值 机器数也有不同的表示方法,通常用原码、反码和补码三种方式表示,主要是用来解决加、减、乘、除运算。
[例]: +52 = +0110100 B = 00110100 B 符号位数值位 -52 = -0110100 B = 10110100 B 真值 机器数
1.原码、反码和补码的表示方法 (1)原码。在数值的前面直接加一符号位的表示法称为原码表示法。 若字长为8位,则原码的表示范围为 -127 —+127;若字长为16位,则原码的表示范围为-32767 —+32767。 (2)反码。正数的反码与原码相同;负数的反码,符号位仍为“1”,数值部分“按位取反”。 字长为8位和16位时,反码的表示范围分别为-127 ~ +127和-32767 ~ +32767。
反码的例子 符号 符号位 真值 反码 X=+18=+0010010 [X]反 =0 0010010 X=-18=-0010010 [X]反 =1 1101101
数0的原码 数0的反码 [+0 ]原= 0 0000000 [- 0]原= 1 0000000 即:数0的原码不唯一 [+0]反 = 0 0000000 [- 0]反 = 1 1111111 即:数0的反码也不唯一
数0的补码: (3)补码正数的补码与原码相同;负数的补码则是符号位为“1”,数值部分按位取反后再在末位(最低位)加1。 例. +7和-7的补码分别为: [+7]补= 00000111B = 07H;[-7]补= 11111001B = F9H 数值0的补码只有一个,即[0]补=00000000B = 00H。 若字长为8位,则补码所表示的范围为 –128 ~ +127;若字长为16位,则补码所表示的范围为-32768 ~ +32767。 [+0]补= [+0]原=00000000 [-0]补 = [-0]反+1=11111111+1 =1 00000000 对8位字长,进位被舍掉 ∴[+0]补= [-0]补= 00000000 即:数0的补码是唯一的。
将一个用补码表示的二进制数转换为十进制数 1) [X]补 = 0 0101110B 真值为:+0101110B 正数 所以:X=+46 2) [X]补 = 1 1010010B 负数 X = [[X]补]补 = [11010010]补 = -0101110B 所以:X =-46 通过引进补码,可将减法运算转换为加法运算。规则如下: 和: [X+Y]补=[X]补+[Y]补 差: [X-Y]补=[X]补- [Y]补 或 [X-Y]补=[X]补+ [-Y]补 其中X,Y为正负数均可,符号位参与运算
补码的运算原理 模(module)就是一个计数系统的最大容量,其大小等于以进位计数制基数为底,以位数为指数的幂。凡是用器件进行的运算都是有模运算,运算结果超过模的部分被运算器自动丢弃。因此,当器件为n位时,有: X=2n+X (mod 2n) 不难验证, [X]补=2n+X (mod 2n) 因此, [XY]补= 2n+ (XY) (mod 2n) = (2n+ X)+ (2n Y) (mod 2n) = [X]补+ [Y]补
[例]: X=-0110100,Y=+1110100,求[X+Y]补 [X]原=10110100 [X]补= [X]反+1=11001100 [Y]补= [Y]原=01110100 所以: [X+Y]补= [X]补+ [Y]补 =11001100+01110100 =01000000
D4 D3 D1 D4 D3 D1 D6 D2 D6 D2 D7 D0 D7 D0 D5 D5 ·小数点 · 小数点 数值位 数值位 符号位 符号位 b) a) 图1-1定点数的格式 a)定点整数 b)定点纯小数 定点数和浮点数 依照小数点的不同表示方法,计算机中的数可分为两类:定点数和浮点数。下面说明这两种数的表示方法。 (1)定点数。 所谓定点数是指小数点的位置固定不变的数,定点数又分为定点整数和定点小数。 定点整数:其小数点的位置固定在数据的最低位之后,见图1-4a。 定点小数:其小数点的位置固定于符号位与数据位之间,见图1-1b。 例5 已知某数X的补码为10111011B,若将它理解为定点整数,它对应的十进制数是多少;若理解为定点小数,它对应的十进制数是多少? 解: 1)若理解为定点整数则X=[10111011]补= -1000101B= -69 2)若理解为定点小数则X=[10111011]补=-0.1000101B= -69/128
D7 D6 D5 D4 D3 D2 D1 D0 阶符 阶 码 数符 尾数高7位 尾数低8位 图1-2 三字节浮点数 (2)浮点数。 与定点数相反,若小数点的位置不固定,是浮动可变的,称这类数为浮点数。浮点数的引入克服了定点数所能表示的数的范围太小这一缺点。 计算机中的浮点数由尾数和阶码两部分组成:尾数是带符号的定点纯小数,它的符号称为数符,表示这个浮点数的正负;阶码是一个带符号的整数,其符号称为阶符。图1-2给出了一种浮点数的格式。 规格化浮点数:尾数的最高数值位不等于零 X1 = 2101×0.11001;X2 = -2101×0.1011 非规格化的数 :尾数的第一位不是1的浮点数 X3 = 2111×0.011001 要使浮点数规格化,只要移动小数点同时调整阶码即可。例如: X4 = 2100×0.00101=2110×0.10100
阶 码 阶符 数符 尾数 图1-3例5浮点数格式表示 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 例6将十进制数24.09375化为二进制形式的规格化浮点数, 用图的格式表示。 解: 1)先将该数化为二进制数 24.09375D = 11000.00011B(×20) 2)将此数规格化,将它的尾数变成最高位为1的纯小数。不难看出,要做到这一点,须将尾数中的小数点向左移动5位,每左移一位阶码加1,移位的次数便是该浮点数阶码的大小。于是,所得规格化浮点数的尾数和阶分别为: k = + 0.1100000011B b = + 5 = + 101B 3)将该数表示为图1-3浮点数的格式。
符号数运算中的溢出问题 • 进(借)位—— • 在加法过程中,符号位向更高位产生进位; • 在减法过程中,符号位向更高位产生借位。 • 溢出—— • 运算结果超出运算器所能表示的符号数范围
溢出的判断方法 • 方法1: • 同号相减或异号相加——不会溢出。 • 同号相加或异号相减——可能溢出: • 两种情况: • 同号相加时,结果符号与加数符号相反——溢出; • 异号相减时,结果符号与减数符号相同——溢出。 • 方法2: • 两个带符号二进制数相加或相减时,若 • C7C6=1, • 则结果产生溢出。 • C7为最高位的进(借)位;C6为次高位的进(借)位。
[例]: • 有符号数运算,有溢出表示结果是错误的 • 无符号数运算,有进位表示结果是错误的 CASE1: CASE2: • 1 0 1 1 0 1 0 1 • + 1 0 0 0 1 1 1 1 • 1 0 1 0 0 0 1 0 0 • 0 1 0 0 0 0 1 0 • + 0 1 1 0 0 0 1 1 • 1 0 1 0 0 1 0 1 CASE3: • 0 1 0 0 0 0 1 0 • + 1 1 0 0 1 1 0 1 • 1 0 0 0 0 1 1 1 1
【例2】求(-120)+(-18) 解 [-120]原=11110000B, [-120]补=10001000B; [-18] 原=10010010B, [-18] 补=11101110B; [-120]补10001000B + [-18]补11101110B [-120]补 + [-18]补=100011010B [-120] 补 + [-18]补=00011010B。最高位丢失。 (-120) +(-18)=00011010B 【例1】 已知X=+1,Y=+18求X-Y的值。 解X-Y=X+(-Y) [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补 [X]补=00001011B [-Y]原=[-18]原=10010010B [-Y]补=11101110B [X]补00001011B + [-Y]补11101110B [X]补 + [-Y]补=11111001B [X-Y]补=11111001B X-Y=10000111B 运行结果完全正确。