1、课程目标课程目标 微机原理是学习和掌握微机硬件知识和汇编语言程序设计的入门课程:微型计算机的基本工作原理 汇编语言程序设计 微型计算机接口技术 目的:建立微型计算机系统的整体概念,形成微机系统软硬件开发的初步能力。教学内容教学内容第一章第一章 微型计算机基础微型计算机基础第二章第二章 8086/8088 CPU的指令系统的指令系统第三章第三章 汇编语言程序设计汇编语言程序设计第四章第四章 半导体存储器半导体存储器第五章第五章 数字输入输出接口数字输入输出接口第六章第六章 模拟量输入输出模拟量输入输出教材杨素行主编,微型计算机系统原理及应用,清华大学出版社杨素行主编,微型计算机系统原理及应用,清
2、华大学出版社课程情况教学:教学:70学时学时实验:实验:10学时学时考试:作业考试:作业10%,实验,实验10%,期末考试,期末考试80%第一章第一章 微型计算机基础微型计算机基础第一节第一节 概述概述 一、一、计算机的产生与发展计算机的产生与发展 电子计算机它是一种能够自动、高速、精确地完成各种信息的存储、处理和控制功能的电子器件。社会需求和电子器件的发展于1946产生了第一台电子计算机(ENIAC)ENIAC(1946)掌上电脑掌上电脑(2000)1.根据使用的基本电子器件,计算机经历了四个阶段:根据使用的基本电子器件,计算机经历了四个阶段:电子管计算机电子管计算机(19461956)晶体
3、管计算机晶体管计算机(19571964)集成电路计算机集成电路计算机(19651970)超大规模集成超大规模集成电路计算机电路计算机(1971至今至今)l 用机器语言、汇编语言编写程用机器语言、汇编语言编写程l 用于军事和国防尖端技术用于军事和国防尖端技术l 开始使用高级语言开始使用高级语言l 开始用于工程技术、数据处理和开始用于工程技术、数据处理和 其它科学领域其它科学领域l 采用微程序、流水线等技术,采用微程序、流水线等技术,提高运行速度提高运行速度l 出现操作系统、诊断程序等软件出现操作系统、诊断程序等软件l 采用半导体存储器采用半导体存储器l 采用图形界面操作系统采用图形界面操作系统l
4、 器件速度更快器件速度更快,软件、外设更加丰富软件、外设更加丰富 主主要要特特点点以以Intel公司生产的公司生产的80 x86为例为例:推推出出年年代代CPU芯芯片片寄寄存存器器位位 数数数数据据线线宽宽 度度地地址址线线宽宽 度度最最大大主主频频MHz1971.114004440.11972.41974.480088080888814160.221978.61979.61982.2808680888028616161616816202024108161985.101989.4803868048632323232323233661993.31995.111997.51999.2Pentium
5、Pentium ProPentium IIPentium III32323232646464643232363610020045010002.计算机发展的趋向计算机发展的趋向一微型化:生产性能更好的单片机及一微型化:生产性能更好的单片机及4 4位、位、8 8位微型计算机位微型计算机,主要是面向主要是面向要求低成本的家电、传统工业改造及普及教育等要求低成本的家电、传统工业改造及普及教育等,其特点是专用化、其特点是专用化、多功能、可靠性好多功能、可靠性好;二巨型化:发展二巨型化:发展1616位、位、3232位、位、6464位微型计算机位微型计算机,面向更加复杂的数据处面向更加复杂的数据处理、科学计
6、算等理、科学计算等,其特点是大量采用最新技术成果其特点是大量采用最新技术成果,在在ICIC技术、体系技术、体系结构等方面结构等方面,向高性能、多功能的方向发展,如天气预报、灾难预报、向高性能、多功能的方向发展,如天气预报、灾难预报、科学计算。科学计算。世界最快超级计算机为世界最快超级计算机为天津天津国家超级计算机中心的天河国家超级计算机中心的天河-1A,速度,速度为每秒为每秒2.5千万亿次千万亿次.三网络化:知识大爆炸、信息高速公路三网络化:知识大爆炸、信息高速公路 二、二、计算机的特点、应用计算机的特点、应用自动性:自动执行存储在存储器中的程序,以完成一定的信自动性:自动执行存储在存储器中的
7、程序,以完成一定的信息处理任务息处理任务高速性:高速性:PentiumPentium指令周期只有几个指令周期只有几个 几十个毫微秒几十个毫微秒准确性:准确性:逻辑性:逻辑判断逻辑性:逻辑判断通用性:通用性:l应用面广:应用面广:科学计算,数据处理,事务管理,教学培训科学计算,数据处理,事务管理,教学培训 计算辅助设计和制造,家庭娱乐,网络通信计算辅助设计和制造,家庭娱乐,网络通信 原理:模拟计算机和数字计算机;原理:模拟计算机和数字计算机;用途:专用计算机和通用计算机;用途:专用计算机和通用计算机;字长:字长:4 4、8 8、1616、3232、6464位;位;组装形式:单片机、单板机、微机系
8、统;组装形式:单片机、单板机、微机系统;性能:巨型机,大型机,性能:巨型机,大型机,中型机,小型机,微中型机,小型机,微机机应用领域:控制机(生产自动化)、数据处理机应用领域:控制机(生产自动化)、数据处理机(办公自动化、数据库);(办公自动化、数据库);制造工艺:制造工艺:MOSMOS型、双极型。型、双极型。三、计算机的分类三、计算机的分类1.位位(bit)l 指指计算机能表示的最基本最小的单位计算机能表示的最基本最小的单位l 在计算机中采用二进制表示数据和指令,故:在计算机中采用二进制表示数据和指令,故:位就是一个二进制位,有两种状态,位就是一个二进制位,有两种状态,“0”和和“1”2.字
9、节字节(Byte)l 相邻的相邻的8位二进制数称为一个字节位二进制数称为一个字节 1 Byte=8 bit 如:如:1100 0011 0101 0111 有关术语:有关术语:3字和字长字和字长 l 字长字长是每一个字所包含的二进制位数。是每一个字所包含的二进制位数。常与常与CPU内部的寄存器、内部的寄存器、运算装置、总线宽度一致运算装置、总线宽度一致l 字字是是CPU内部进行数据处理的基本单位。内部进行数据处理的基本单位。字长是衡量字长是衡量CPU工作性能的一个重要参数。工作性能的一个重要参数。不同类型的不同类型的CPU有不同的字长。有不同的字长。如如:Intel 4004 是是 4 位位
10、8080 是是 8 位位 8088/8086/80286 是是 16 位位 80386/80486、Pentium 是是 32 位位位位 1 或或 0 1位位字节字节 1100 0011 8位位字字 1100 0011 0011 1100 16位位双字双字 1100 0011 0011 1100 1100 0011 0011 1100 32位位高字节高字节低字节低字节 高高 字字 低低 字字把一个把一个字字定为定为16 位位,1 Word=2 Byte 一个一个双字双字定为定为32位位 1 DWord=2 Word=4 Byte4.位编号位编号 为便于描述,对字节为便于描述,对字节,字和双字中
11、的各位进行编号。字和双字中的各位进行编号。从低位开始,从右到左依次为从低位开始,从右到左依次为 0、1、2 编号编号7654321010100010D7 D6 D5 D4 D3 D2 D1 D0A7 A6 A5 A4 A3 A2 A1 A0字节字节数据数据Data地址地址AddressD0D7D15D8158101010101010101070A0A7A15A8字字的编号为的编号为15 0双字双字的编号依此类推,为的编号依此类推,为31 0第二节运算基础 第二节第二节:计算机中的数制和编码计算机中的数制和编码一、一、无符号数的表示及运算无符号数的表示及运算1.无符号数的表示无符号数的表示进位计
12、数制:按进位的方法进行计数进位计数制:按进位的方法进行计数常用的有二进制、十进制、十六进制以及八进制。常用的有二进制、十进制、十六进制以及八进制。一个一个R R进制的数据有以下主要特点:进制的数据有以下主要特点:(1)(1)具有具有R R个不同的数字符号:个不同的数字符号:0 0、1 1、2 2、R-1R-1。(2)(2)逢逢R R进一进一任一个任一个R进制数进制数S都可用都可用位置表示法位置表示法表示为:表示为:a n-1a n-2a 1 a 0.a-1a-2a-m,其中,其中n为小数点为小数点前的位数,前的位数,m为小数点后的位数,为小数点后的位数,a i 是是R进制的进制的一个数字符号,
13、一个数字符号,R称为基数。则称为基数。则S用用按权展开式按权展开式表表示为:示为:S=a n-1a n-2a 1 a 0.a-1a-2a m =a n-1Rn-1+a n-2Rn-2+a 1R1+a 0R0 +a-1R-1+a-mR-m(1)十进制数)十进制数 十进制的表示:可用()10 或不加后缀。(1009)10、1009 按权展开:758.75=7102+510 1+8100+710 1+510-2=758.75(2)二进制数二进制数 a具有十个不同的数字符号:09 十进制数的概念 b进位规律:逢十进一 a每个数只有0、1两个取值 二进制数的概念 b进位规律:逢二进一二进制的表示:可用(
14、)2或用后缀B表示。如(1001)2、1001B(10110.101)2 =124+02 3+12 2+12 1+02 0+12-1+02-2+12 3=(22.625)10(3)十六进制数)十六进制数表示:可用()16或用后缀H表示,如(20A)16或20AH。按权展开:1AF.4H =1162+1016 1+1516 0+416-1 =(431.25)10 a每个数可取09、AF十六个值 特点 b进位规律:逢十六进一2、各种数制之间的转换、各种数制之间的转换(1)二进制、十六进制转十进制:按权展开即可。二进制、十六进制转十进制:按权展开即可。例如:例如:(10110.101)2=124+0
15、2 3+12 2+12 1+02 0+12-1+02-2+12 3=(22.625)10(1AE.8)16=1162+1016 1+1416 0+816-1 =(430.5)10(2)十进制转二进制十进制转二进制 原则:整数部分采用除基取余法,小数部分采用乘基取整法。原则:整数部分采用除基取余法,小数部分采用乘基取整法。例如:十进制数例如:十进制数22.625转换为二进制数。转换为二进制数。整数部分:整数部分:小数部分:小数部分:2 22 0.625 2 11 余余0(低位)(低位)2 2 5 余余1 1.25 取整数取整数1(高位)(高位)2 2 余余1 2 2 1 余余0 0.5.取整数取
16、整数0 0 余余1(高位)(高位)2 1.0 .取整数取整数1(低位)(低位)所以(所以(22)10=(10110)2 (0.625)10=(0.101)2结果:(结果:(22.625)2=(10110.101)2(3)十进制转十六进制)十进制转十六进制 原则:整数部分采用除原则:整数部分采用除16取余法,小数部分采用乘取余法,小数部分采用乘16取整法。取整法。(4)二进制和十六进制的转换)二进制和十六进制的转换原则:每一位十六进制数对应四位二进制数;原则:每一位十六进制数对应四位二进制数;若要将二进制数转换为十六进制数,只要以小数若要将二进制数转换为十六进制数,只要以小数点为分界,分别向左和
17、向右每四位二进制数分为一点为分界,分别向左和向右每四位二进制数分为一组(最高位或最低位不够四位则补组(最高位或最低位不够四位则补0),对应转换),对应转换为十六进制数即可。为十六进制数即可。例如:二进制数例如:二进制数110101110.01B转换为十六进制数转换为十六进制数 0001 1010 1110.0100 1 A E .4 即即110101110.01B=1AE.4H练习:练习:1、(、(1234.5)10=()2=()16 2、271.33=()16=()23、无符号二进制数的运算(加减和逻辑)、无符号二进制数的运算(加减和逻辑)(1)加减)加减 逢二进一,借一当二逢二进一,借一当
18、二例例 10100+1101=100001 10100 +1101 100001 例例 100001-10100=1101 1 0 0 0 0 1 -1 0 1 0 0 1 1 0 1 例例 1101 1011=10001111 1101 1011 1101 1101 0000 1101 逢二进一逢二进一 10001111 例例 11100101=10111 11100 101 1000 101 11101101 无符号数的表示范围无符号数的表示范围 一个一个n位的无符号二进制数位的无符号二进制数X,其表示范围为,其表示范围为 0 X 2n-1若运算结果超出这个范围,则产生溢出。若运算结果超出
19、这个范围,则产生溢出。(或者说(或者说运算结果运算结果超出超出n n位位,则产生溢出,则产生溢出)判别方法:判别方法:运算时,运算时,当最高位向更高位有进位(或当最高位向更高位有进位(或 借位)借位)时则产生溢出时则产生溢出。(2)逻辑运算逻辑运算与与()、或、或()、非、非()、异或、异或()特点:按位运算,无进借位特点:按位运算,无进借位运算规则运算规则.例:例:A=10110110,B=01101011求:求:AB,AB,A B1.带符号数的表示法带符号数的表示法计算机中的带符号二进制数把二进制数的把二进制数的最高位最高位定义为符号位定义为符号位符号位为符号位为 0 表示表示正数正数,符
20、号位为,符号位为 1 表示表示负数负数连同符号位一起数值化了的数,称为连同符号位一起数值化了的数,称为机器数机器数。机器数所表示的真实的数值,称为机器数所表示的真实的数值,称为真值真值。二、二、带符号数的表示和运算带符号数的表示和运算 +52=+0110100 =0 0110100 符号位数值位 -52=-0110100=1 0110100 真值真值机器数机器数(1)原码:)原码:二进制数的最高位是符号位,用二进制数的最高位是符号位,用0表示正数,表示正数,1表表示负数。示负数。若用若用8位表示原码,则位表示原码,则D7为符号位,为符号位,D6D0为数值位,真值范为数值位,真值范围为围为-12
21、7+127 即即1111 1111B0111 1111B若用若用16位表示,则位表示,则D15为符号位,为符号位,D14D0为数值位,真值范为数值位,真值范围为围为-32767+3276711122200-nnnXXXXX 例如:例如:12的的8位原码:位原码:0000 1100B,16位原码:位原码:0000 0000 0000 1100B -12的的8位原码:位原码:1000 1100B,16位原码:位原码:1000 0000 0000 1100B 原码的原码的0有两种表示方法:有两种表示方法:+0:0000 0000B -0:1000 0000B(2)反码反码反码:正数的反码与原码相同;
22、负数的反码等于该数的原码反码:正数的反码与原码相同;负数的反码等于该数的原码除符号位外按位取反。除符号位外按位取反。例如:例如:12的的8位反码为位反码为 0000 1100B -12的的8位原码:位原码:1000 1100B -12的的8位反码为位反码为 1111 0011B112(21)200-nnnXXXXX 反码特点:反码特点:(1)当符号位为)当符号位为0时,反码即是数值本身时,反码即是数值本身 当符号位为当符号位为1时,除符号位外按位取反,再加上负号,时,除符号位外按位取反,再加上负号,即为其数值即为其数值 (2)8位二进制反码表示的真值范围为位二进制反码表示的真值范围为-127+
23、127 (10000000B 01111111B)16位二进制反码表示的真值范围为位二进制反码表示的真值范围为-32767+32767 (3)0有两种表示法有两种表示法 +0为为0000 0000B -0为为1111 1111B(3)补码)补码补吗:正数的补码与原码相同;负数的补码等于反码加补吗:正数的补码与原码相同;负数的补码等于反码加1,即负数的补,即负数的补码等于该数的原码除符号位外按位取反加码等于该数的原码除符号位外按位取反加1。如:如:+3补补=+3原原=+3反反=0000 0011B -3补补=-3反反+1=1000 0011反反+1=1111 1100+1=1111 1101B
24、+0补补=+0原原=+0反反=0000 0000B -0补补=-0反反+1=1111 1111+1=0000 0000B-1122200-nnnXXXXX 补码特点:补码特点:1)当符号位为当符号位为0时,其余位即是数值本身时,其余位即是数值本身 当符号位为当符号位为1时,将符号位写成负号,其余位求反加时,将符号位写成负号,其余位求反加1,即为其数值。即为其数值。2)8位二进制补码表示的真值范围为位二进制补码表示的真值范围为-128+127 10000000B011111111B 16位二进制补码表示的真值范围为位二进制补码表示的真值范围为-32768+32767 3)+0补补=-0补补=00
25、00 0000B 例:已知例:已知 X补补=0000 1111B,X=+15例:已知例:已知 X补补=1111 0001B,X=-(000 1110B+1)=-000 1111B=-15例:已知例:已知 X补补=1000 0000B,X=-(111 1111B+1)=-1000 0000B=-128当带符号的数一律采用补码表示时,可以把减法运算转换为当带符号的数一律采用补码表示时,可以把减法运算转换为加法运算,即加法运算,即XY补补=X补补+Y补补 例如:设字长为例如:设字长为8位,计算位,计算64-9 64补补=0100 0000B,+9原原=0000 1001B,-9补补=1111 011
26、1B 64-9补补=64+(-9)补补 =64补补+-9补补=0100 0000B+1111 0111B 0100 0000 +1111 0111 1 0011 0111 自然丢失自然丢失结果为结果为37H 64-9=0011 0111B=37H 0100 0000 0000 1001 0011 01112 2、带符号数运算时的溢出问题、带符号数运算时的溢出问题 溢出和进位的区别:溢出和进位的区别:进位是指最高位向更高位的进位,进位是指最高位向更高位的进位,溢出是指运算结果超出数所能表示的范围。溢出是指运算结果超出数所能表示的范围。带符号数所能表示的范围:(若用带符号数所能表示的范围:(若用n
27、 n位二进制数码表示)位二进制数码表示)原码:原码:-(2 2 n-1n-1-1-1)X2 X2 n-1n-1-1-1 反码:反码:-(2 2 n-1n-1-1-1)X2 X2 n-1n-1-1-1补码:补码:-2-2 n-1n-1X2 X2 n-1n-1-1-1 溢出的判断方法:溢出的判断方法:设设CD7CD7是符号位向更高位的进位,是符号位向更高位的进位,CD6CD6是数值位向符号位的是数值位向符号位的进位,则溢出可用进位,则溢出可用V=CD7CD6V=CD7CD6判断,判断,V=1V=1表示有溢出,表示有溢出,V=0V=0表表示无溢出。示无溢出。对于加减法:对于加减法:正数正数+正数,结
28、果应为正,若为正,则无溢出;正数,结果应为正,若为正,则无溢出;若为负,则有溢出。若为负,则有溢出。负数负数+负数,结果应为负,若为负,则无溢出;负数,结果应为负,若为负,则无溢出;若为正,则有溢出。若为正,则有溢出。正数正数-负数,结果应为正,若为正,则无溢出;负数,结果应为正,若为正,则无溢出;若为负,则有溢出。若为负,则有溢出。负数负数-正数,结果应为负,若为负,则无溢出;正数,结果应为负,若为负,则无溢出;若为正,则有溢出。若为正,则有溢出。若:若:X=01111000,Y=01101001 则:则:X+Y=即:次高位向最高位有进位,而最高位向前无进即:次高位向最高位有进位,而最高位向
29、前无进 位,产生溢出。位,产生溢出。(事实上,两正数相加得出负数,结果出错)(事实上,两正数相加得出负数,结果出错)11100001 01101001 01111000 1.二进制编码的十进制数(二进制编码的十进制数(BCD码码Binary Coded Decimal)即用四位二进制的编码(共有即用四位二进制的编码(共有16种组合)表示一位十进制种组合)表示一位十进制数(仅有数(仅有10个数字)。常用的是个数字)。常用的是8421BCD码。码。三、二进制编码三、二进制编码十进制十进制 8421BCD码码 十进制十进制 8421BCD码码 0000060110100017011120010810
30、00300119100140100100001 000050101110001 00012.字符与字母的编码字符与字母的编码ASCII码(码(American Standard Code for Information Interchange,美国标准信息交换码),美国标准信息交换码)采用七位二进制编码采用七位二进制编码,可以表示,可以表示128个字符。个字符。bit7作奇偶校验位,在机器中表示时,常认为作奇偶校验位,在机器中表示时,常认为“0”,用一个字长(用一个字长(8位)表示一个位)表示一个ASC字符。字符。常用的常用的ASC字符:字符:09 的的ASC码码30H39HAZ 的的ASC码
31、码41H5AH az 的的ASC码码61H7AH参考附录参考附录 ASCII码编码表码编码表四、四、数的定点和浮点表示数的定点和浮点表示根据数中小数点位置是否固定,有两种表示方法:定点表示法和浮点表示法。根据数中小数点位置是否固定,有两种表示方法:定点表示法和浮点表示法。1.定点表示法定点表示法 小数点的位置是固定的小数点的位置是固定的1)定点小数法定点小数法 小数点位置小数点位置 小数点在符号位之后,数值部分最高位之前,纯小数。小数点在符号位之后,数值部分最高位之前,纯小数。2)定点整数法定点整数法 小数点位置小数点位置 小数点固定在数值部分的最低位之后,纯整数。小数点固定在数值部分的最低位
32、之后,纯整数。符号位数值部分符号位数值部分2.浮点数表示法浮点数表示法63.8=0.638102=6.3810=63.8100=63810-11101.001B=0.110100124=1.10100123=110100.12-2任意一个二进制数任意一个二进制数N的浮点表示格式为:的浮点表示格式为:阶符阶符 阶码阶码 数符数符 尾数尾数(有效数值有效数值)N=2PS例如:二进制例如:二进制数数N=2+30.1011,在浮点机中的表示格式为:,在浮点机中的表示格式为:阶符阶符 阶码阶码 数符数符 尾数尾数(有效数值有效数值)尾数规格化:尾数应满足尾数规格化:尾数应满足0.5|S|1,即尾数的最高
33、有效位是有效数字,即尾数的最高有效位是有效数字1,而不是而不是0。PfP1 P2 Pm SfS1 S2 Sn0001101011(1)数值表示范围。数值表示范围。假定某机器字长假定某机器字长32位,数符占位,数符占1位,尾数占位,尾数占31位,则:位,则:定点小数表示范围:定点小数表示范围:2-31|S|1-2-31定点整数表示范围:定点整数表示范围:1|S|231-1用浮点表示,若字长用浮点表示,若字长32位,其中阶码位,其中阶码8位,位,24位尾数,其最大阶码为位尾数,其最大阶码为 27-1=127。表示范围为:表示范围为:2-1282-23|S|2127(1-2-23),近似为),近似为0|S|2127显然,用浮点数表示法比定点表示法表示数的范围大得多。显然,用浮点数表示法比定点表示法表示数的范围大得多。(2)浮点数的运算比定点数的运算复杂。浮点数的运算比定点数的运算复杂。阶码不同的两个尾数不能直接加减,需要先把两个数的阶码调整到一阶码不同的两个尾数不能直接加减,需要先把两个数的阶码调整到一致,即致,即“对阶对阶”,这些操作控制复杂,其硬件代价比较高。,这些操作控制复杂,其硬件代价比较高。在微型机中一般采用定点表示法,可通过软件实现浮点数运算。在微型机中一般采用定点表示法,可通过软件实现浮点数运算。3.定点表示法与浮点表示法的比较定点表示法与浮点表示法的比较