Presentation is loading. Please wait.

Presentation is loading. Please wait.

微机原理与通信接口 武汉理工大学信息工程学院 2010年9月.

Similar presentations


Presentation on theme: "微机原理与通信接口 武汉理工大学信息工程学院 2010年9月."— Presentation transcript:

1 微机原理与通信接口 武汉理工大学信息工程学院 2010年9月

2 讲课内容: 体系结构、汇编语言、接口技术 总学时: 72学时, 其中: 讲课学时56
本课程是信息类专业的一门专业基础课,通过本课程的学习,掌握微型计算机的组成和功能结构、汇编语言程序设计、工作原理、及微型计算机的接口技术。 讲课内容: 体系结构、汇编语言、接口技术 总学时: 学时, 其中: 讲课学时56 实验学时16 另安排课程设计 1周

3 教材、参考书 西安电子科技大学出版社 教材: 微型计算机原理与接口技术 姚燕南 薛钧义 主编 高等教育出版社出版
教材: 微型计算机原理与接口技术 姚燕南 薛钧义 主编 高等教育出版社出版 参考书:微型计算机原理及应用 王庆利主编,李珍副主编 西安电子科技大学出版社 汇编语言程序设计 沈美明 温冬婵 编著 清华大学出版社出版 微型计算机接口技术及应用 刘乐善 主编 华中科技大学出版社出版

4 第一章 微型计算机基础知识 (4学时) 第二章 微型计算机的组成及微处理器功能结构 (4学时) 第三章 8086寻址方式与指令系统 (6学时) 第四章 汇编语言程序设计 (10学时) 第五章 微处理器外部结构和总线操作时序 (6学时) 第六章 半导体存储器 (4学时) 第七章 CPU的存储器管理 (4学时) 第八章 中断和异常 (8学时) 第九章 输入/输出方法及常用接口电路 (10学时) 第十章 微型计算机系统 (自学) 第十一章 微型计算机系统和网络 (自学)

5 第一章 微型计算机基础知识 1.1 计算机中的数和编码 1.2 二进制数的算术运算 1.3 二进制数的逻辑运算 1.4 微型计算机的发展概述

6 1.1 计算机中的数和编码 1 进位计数制 进位计数制是最常用的数值表示方法。
1.1 计算机中的数和编码 1 进位计数制 进位计数制是最常用的数值表示方法。 一个数由一定数目的数码排列在一起组成,每个数码的位置规定了该数码所具有的数值——权,该位置称为数位,数码的个数称为基数,计数制又称为以基值为进位的计数制,数位的权是基值的幂。

7 基值为r 的数值N的表示方法为: 或: 式中:m、n是正整数,n为整数的位数,m为小数的位数,d是r个数码0,1,…,r-1中的任意一个,r为数位为i的权。 常见的计数制有:十进制、八进制、十六进制、二进制等。

8 十进制 十进制数码为0~9,权为10的幂,逢十进一,借一当十。例如: 二进制 二进制数码为0~1,权为2的幂,逢二进一,借一当二;

9 八进制 八进制数码为0~7,权为8的幂,逢八进一,借一当八。例如: 十六进制 十六进制数码为0~9,A,B,C,D,E,F,权为16的幂,逢十六进一,借一当十六。例如:

10 二进制的特点: 只需两种状态:0、1;实现容易。 共有六种运算规则: 运算规则简单,易应用于逻辑代数。 因此,二进制被广泛应用于计算机。但其书写复杂,不易看出数值大小,故常用八进制、十六进制来縮写,以利阅读。

11 数的表示通常省略十进制的基值表示符号D (decimal),而二进制则以B (binary)、八进制以O (octad)、十六进制以H (hexa decimal)来表示其进位基值。
例如: = D = B = 365.2O =F5.4H

12 2 进制间的转换 二进制与十六进制数间的转换 二进制数转换为十六进制数,只需从右向左将二进制分为每4个一组,每组用一位十六进制数表示,左边不足4位,应在左边加0,以凑成4位一组。 例: B B = 1FC7H

13 十六进制数和十进制数间的转换 十六进制数转换为十进制数,只需将十六进制数按权展开相加即可。 例: 1F3DH = (4096*1)+(256*15)+(16*3)+(1*13) = = 7997

14 十进制整数和十六进制数间的转换 十进制整数转换为十六进制数,可用除16取余法,即用16不断地去除待转换的十进制数,直到商等于0为止。将所得的各次余数,依倒序排列,即可得到所需转换的十六进制。 例: D = 9823H

15 3 数在计算机中的表示 1. 机器数与真值 在计算机中数用二进制表示。数码“0”和“1”可由二值器件的两个不同的稳态来表示,数的符号也只能用这两种不同的稳态来表示。 在数的最高位之前增设一位符号位,0表示正数,1表示负数。这种符号数码化的数叫机器数,机器数所代表的数的本身叫真值。

16 机器数具有的特点: 机器字长是有限的,字长可决定数的表示范围。 一个字长一般是字节 (8位) 的整数倍,如8位、16位、32位和64位等。
符号数值化,参与运算。 小数点按约定方式标出,而不是以专门器件表示。

17 在计算机执行算术运算时,用原码实现乘、除运算,用补码实现加、减运算。
2. 原码、反码和补码 在计算机执行算术运算时,用原码实现乘、除运算,用补码实现加、减运算。 1) 原码表示法 原码表示法是一种最简单的机器数表示法,用最高位表示符号位,符号位为“0”表示该数为正,符号位为“1”表示该数为负,数值部分就是原来的数值。

18 设定点整数字长为n ,原码定义为: 例: [X]原= X= + 1101001, [X]原= 0 1101001;
[X]原= 2n-1 – X = 28-1 -(- ) = = ;

19 原码的特点: 数值部分即为该带符号数的二进制值。 “0”有+0和-0之分,若字长为8位,则: [+0]原 = , [-0]原 = 8位二进制原码能表示的数值范围为: ~ ,即+127~-127; 16位二进制原码的数值范围为+32767~-32767。 原码表示法简单易懂,而且与真值的转换方便,但若是两个异号相加,或两个同号相减,就要做减法,为避免做减法,把减法统一转换为加法,便引入了反码和补码。

20 直接法:把与其绝对值相等的正数按位取反(连同符号位)。
2) 反码表示法 在反码的表示中,正数的反码就等于真值,负数的反码是把其原码除符号位以外的各位按位取反。 设定点整数字长为n ,反码定义为: [X]反= 例: X= , [X]反= ; X= - , [X]反= 2n–1+ X = (28-1) + (- ) = - = ; 直接法:把与其绝对值相等的正数按位取反(连同符号位)。

21 反码的直观解释: 正数:其反码表示与原码相同,最高位为符号位,其余为数字位。 X=+127, [ +127 ]原 = [ +127 ]反 = 0 11…1; 负数:将它的正数连符号位按位取反。即,将它的原码数值部分取反,符号位仍放置“1” 。 X=-127, [- 127 ]原 = ; [- 127 ]反 = 注:真值0的反码有两种不同的表示方法: [ + 0 ]反= 0 00…0; [ - 0 ]反= 1 11…1;

22 反码的特点: “0”有+0和-0之分; 8位二进制反码所能表示的数值范围为+127~-127; 16位二进制反码的数值范围为+32767~-32767; 8位带符号的数用反码表示时,若最高位为“0”,则后面的7位即为数值;若最高位为“1”,则后面7位表示的不是此负数的数值,只有把它们按位取反,才是该负数的二进制数值。 如: [X ]反 = ,它是一个负数,其后7位取反得: 。 得到该负数的值: X=- =-107

23 3) 补码表示法 设定点整数字长为n ,补码定义为: 例: 为便于进行加减运算,简化机器硬件结构,目前微机系统都采用补码表示数据。
[X]补= 方法1:把一个正数连同符号位按位取反再加1; 例: X= , [X]补= ; X= - , [X]补= 2n+ X = 28+ (- ) = - = ; 方法2:从最低位向最高位扫描,保留直到第一个“1”的所有位,以后各位按位取反。

24 注:几个特殊值的补码: 正数:其补码的表示与原码相同,其余为数值位。 X=+0; [X]原= [X]反=[X]补= ; X=+127; [X]原= [X]反=[X]补= ; 负数:其补码为其反码在最低位加1。 X=-0; [X]原= , [X]反= , [X]补= ; X=-127; [X]原= , [X]反= , [X]补= ; X=-128; [X]补=

25 补码的特点: [+0]补=[-0]补= 因为“0”无+0和-0之分,所以 8位二进制补码所能表示的数值范围为+127~-128;同理,16位二进制反码的数值范围为+32767~-32768; 一个用补码表示的二进制数,当为正数时,最高位(符号位)为“0”,其余位即为此数的二进制值;当为负数时,符号位为“1”,其余几位不是此数的二进制值,必须把它们按位取反,且在最低位加1,才是它的二进制值。 如: [X ]补 = ,求其真值。 它是一个负数,其后7位取反得: 。 真值: X=- +1=-108

26 补码加减法的规则: [X+Y]补= [X]补+[Y]补;[X-Y]补= [X]补+[-Y]补; 例: 设 [X]补= , [Y]补= ; 求: [X+Y]补 和 [X-Y]补 解: [X+Y]补= [X]补+[Y]补= = (-10的补码) [X-Y]补= [X]补+[-Y]补= = (18的补码) 验证: 由 [X]补 和 [Y]补,求得 X=4,Y=- 结果正确

27 附: 原码、反码、补码的关系 [X]原= [X]反= [X]补 当X为正数时: 当X为负数时: [X]补= [X]反+ 1 [[X]补]补= [X]原 [[X]反]反= [X]原

28 4 有符号数与无符号数 计算机中字长是一定的,因此在表示有符号数与无符号数时,数值范围是有区别的。
4 有符号数与无符号数 计算机中字长是一定的,因此在表示有符号数与无符号数时,数值范围是有区别的。 对无符号数,则机器字长的所有位都参与表示数值。 对有符号数,则要留出机器字长的最高位作为符号位,其余表示数值。

29 例如:对于一个8位二进制数据的表示。 当它为无符号数时,表示格式如图1-3,其表示范围为0~255; 当它为有符号数时,表示格式如图1-4所示,其表示范围为-128~+127 (负数用补码表示)。 在计算机中,地址码的运算和逻辑数的运算都可看做无符号数。

30 5 定点与浮点表示 在计算机中,对小数点的处理有两种方法:定点数和浮点。 1)定点数:
5 定点与浮点表示 在计算机中,对小数点的处理有两种方法:定点数和浮点。 1)定点数: (1)是指小数点固定在符号位之后。如 ;机器中的所有数均为小数。 (2)小数点固定在最低位之后,如 ;机器中所有数均为整数。

31 2)浮点数: 浮点数由阶码和尾数两部份组成。对任意一个带符号的二进制数N的一般形式可表示为: S:二进制小数,称尾数(尾符包括在内); J:数的阶码,二进制整数表示(阶符包括在内); 2:阶码的底

32 阶码和尾数的符号同样用“0”表正,“1”表负
例:一个浮点数- ×2-00010的表示格式 阶码位数表机器表示的数的范围 尾数位数越多,精度越高 阶符 尾符 阶码和尾数的符号同样用“0”表正,“1”表负 阶码的正负实际上指出了数的小数点的实际位置。正移n位;负移n位。 尾数的正负表示整个数N的正负。如,3位数的阶码范围为:2-7~ 2+7

33 只要移动浮点数的小数点,改变阶码,即可实现对数的规格化
3)规格化数与“溢出” 为提高浮点数的表示精度,数采用规格化表示法 规格化数:如果尾数的第一位有效数字是1,该数即为规格化数。例如: , , 当1/2<S<1时为已规格化的数 只要移动浮点数的小数点,改变阶码,即可实现对数的规格化 非规格化数:当尾数的第一位有效数字是0,该数即为非规格化数。例如: , ,

34 溢出:当超出机器可能表示的范围时,称为“溢出”。
下溢: 对规格化的浮点数,若阶码超出机器所能表示的最小数时,称为下溢,此时机器将把此数作零处理; 上溢: 对规格化的浮点数,若阶码超出机器所能表示的最大的绝对值时,称为上溢,机器将停止运算,进行处理;

35 6 数的编码方法 计算机采用的是二进制数,因此,在计算机中表示的数、字母、符号等都以特定的二进制码来表示。
6 数的编码方法 计算机采用的是二进制数,因此,在计算机中表示的数、字母、符号等都以特定的二进制码来表示。 二进制编码:以若干位二进制位的不同组合来表示一组数、字母和字符的方法。

36 1. BCD码:是以4位二进制数编码的不同组合来表示十进制数0~9。
常用的BCD码是8421BCD码,即每位十进制数码用4位二进制数来表示。4位二进制数从高到低的权值分别为:23 、 22 、 21 、 20 ,即8421。又因为它们与二进制数位权一样,故又称为自然的BCD码。 BCD码与十进制数0~9的对应关系 十进制 1 2 3 4 5 6 7 8 9 BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 剩余的6个二进制编码1010~1111为非法码

37 BCD码在计算机中的两种存储格式:组合型和拆开型
例:56D的两种 BCD码表示 组合型(压縮型): 拆开型(非压縮型): BCD码主要用于十进制数的运算、二进制数与十进制数之间的转换。

38 2. ASCII码:是又称美国信息交换标准码 (American Standard Code for Information Interchange) ,是7位二进制编码。它总共可表示128个符号,包括26个英文大写字母, 26个英文小写字母,0~9共十个数字,32个通用控制字符和34个专用字符。 ASCII码字符编码见教材P.4 . 表中,行表示字符的低4位二进制编码,列表示字符的高3位二进制编码。在计算机中用一个字节存放字符编码,故在ASCII的最高位补0。因此ASCII可表示8位二进制或两位16进制数。 例如,字母B可表示为: 或42H

39 3. 汉字编码:1981年公布的国家标准《信息交换用汉字编码》(GB2312-80)规定了汉字的编码,即国际码。
共收录汉字6763个,其中一级汉字3775个,二级汉字3008个,700多个西文字母、数字和图形符号。 国际码中规定,每个汉字由两个字节的编码表示,每个字节用7位二进制码,最高位为0。编码格式如图所示。 b7 b6 b5 b4 b3 b2 b1 b0 X 例如,字符“大”的国际码为:

40 为了使汉字编码和常用的ASCII码相区别,汉字编码在机器内的表示与国际码不同,形成汉字内码。通常内码是由国际码的两个字节最高位置“1”构成。
b7 b6 b5 b4 b3 b2 b1 b0 1 X 例如,字符“大”的国际码为: 内码为:

41 1.2 二进制数的算术运算 计算机把机器数均当作无符号数进行运算,即符号位也参与运算,运算的结果要根据运算结果的符号,运算有无进(借)位和溢出等来判别。计算机中设置有这些标志位,标志位的值由运算结果自动设定。

42 无符号数实际上是指参加运算的数均为正数,且整个数位全部用于表示数值。N位无符号二进制数的范围为:0~(2n-1)
1. 无符号数的运算 无符号数实际上是指参加运算的数均为正数,且整个数位全部用于表示数值。N位无符号二进制数的范围为:0~(2n-1) 1) 两个无符号数相加,由于两个加数均为正数,因此,其和也是正数。当和超过其位数所允许的范围时,就向更高位进位。如: 127+160 = 7FH + 0A0H = 11FH = =287 为了区分数字和符号,大写字母开头的十六进制数,前面应添加1个0

43 1) 两个无符号数相减,被减数大于或等于减数,无借位,结果为正;被减数小于减数,有借位,结果为负。如:
192 -10 = 0C0H - 0AH = 0B6H = =182

44 反过来相减,即: 10 -192 = 0AH - 0C0H = - B =-0B6H =- 182 由此可见,对无符号数进行减法运算,其结果的符号用进位来判别:CF=0 (无借位),结果为正; CF=1 (有借位),结果为负。

45 若把结果9BH视为无符号数,为155,结果正确。若将结果视为符号数,其符号位为1,结果为-101,这显然是错误的。
1. 符号数的加减运算 n位二进制数,除去一位符号位,还有n-1位表示数值,所能表示的补码的范围为:- 2n-1 ~(2n-1-1)。如果运算结果超过此范围就会产生溢出。如: 105+50 =69H +32H = 9BH =155 或 =-65H=-101 取反加1(还原), 若把结果9BH视为无符号数,为155,结果正确。若将结果视为符号数,其符号位为1,结果为-101,这显然是错误的。

46 上述视结果为符号数产生错误的原因为:和数155大于8位符号数所能表示的最大值127,使数值部分占据了符号位的位置,从而导致结果出错(采用补码相加)。
例,两负数相加: -105 -50 = -155 = - B =-155 取补相加 进位,视作符号位 取补 两负数相加,和应为负数,而结果 B为正数,显然错误。原因为:和数-155小于8位符号数所能表示的最小值-128,产生了溢出。应将最高位0看作数值位,将进位看作符号位。

47 小结:应注意溢出与进位及补码运算中的进位丢失间的区别:
(1) 进位和借位是指无符号数运算结果的最高位向更高位进位或借位,通常多位二进制数将其拆成二部分或三部分或更多部分进行运算时,数的低位部分均为无符号数,只有最高部分数才为符号数。由此可知: 进位主要用于无符号数的运算,这与溢出主要用于符号数的运算是有区别的。

48 (2)溢出与补码运算中的进位丢失也应加以区别。
例,两负数相加: -50 -5 = -55 = - B =-55 取补相加 无溢出,进位丢失 取补 两负数相加,结果为负数正确。这里虽然出现了补码运算中的进位,但由于和数并没有超出8位二进制数-128~127的范围,因此无溢出,应将进位位丢失,最高位作为符号位。

49 设符号位向进位位的进位为CY,数值部分向符号位的进位为CS ,则溢出:
2. 判别溢出与进位的方法: 设符号位向进位位的进位为CY,数值部分向符号位的进位为CS ,则溢出: O = CY CS O=1,有溢出; O=0,无溢出; CY =1, CS =0,有溢出 CY =1, CS =0,无溢出 CY =0, CS =1,有溢出 O = = O = = O = =0

50 3. 乘除运算 实现乘除运算,一般有两种方法。一种是用程序来实现,另一种是采用硬件直接完成(即由执行乘、除法指令实现)。但二者原理一致。
乘除运算一般采用原码。在乘除运算中,由于同号相乘(除)为正,异号相乘(除)为负,因此,在计算机中采用二进制的按位加便可确定乘积(或商)的符号。 被乘(除)数符号 乘(除)数符号 积(商)的符号 1 =0 =1 =1 =0

51 (1). 乘法运算 例: X=0 1101, Y=0 1011,X*Y数值部分算法为: 1101
×1011 0000 该算式从乘数的高位往低位乘,乘数Yi的每一位只可能为0和1,当Yi=0,则各位为0;当Yi=1,乘积为1101。各位乘完后,将所有积对齐相加,即可得乘积。

52 该算式从从低位往高位乘,各位乘完后,将所有积对齐相加,即可得乘积。与十进制乘法过程类似。
也可以从低位往高位算。 例: X=0 1101, Y=0 1011,X*Y: 1101 × 1011 0000 该算式从从低位往高位乘,各位乘完后,将所有积对齐相加,即可得乘积。与十进制乘法过程类似。 但上述算法不便于机器运算。 01101(+13)*01011(+11)=1000,1111(143)

53 例: X=0 1101, Y=0 1011,X*Y部分积左移、右对齐算法:
× 部分积初值 部分积 部分积左移 0000 部分积 部分积左移 部分积 部分积左移 机器实际运算中,一次只能两个数相加。因此,必须记忆中间结果,即,一次只能根据乘数的当前位与被乘数相乘,其积与中间结果相加。这里,称中间结果为部分积。以乘数高位起作乘法为例: 例: X=0 1101, Y=0 1011,X*Y部分积左移、右对齐算法: 01101(+13)*01011(+11)=1000,1111(143)

54 上述过程归纳后,可作为机器的运算步骤: (1) 乘数左移一位,从高到低判断乘数Yi是1还是0; (2) 部分积(初值为0)左移一位; (3) 部分积加上新的乘积。 当Yi =1时,部分积被加上被乘数;当Yi =0时,部分积被加上0。 (4) 重复上述规律,即移位、按位加,直到乘数的各位都乘过为止。对应n位的两数相乘,则重复n次运算,最后的部分积即为结果。

55 同理,可得出乘数从最低位开始的乘法运算的步骤:
(1) 乘数右移一位,从低到高判断乘数Yi是1还是0; (2) 部分积(初值为0)加上新的乘积。当Yi =1时,部分积被加上被乘数;当Yi =0时,部分积被加上0。 (3) 部分积右移一位。 (4) 重复上述规律,即移位、按位加,直到乘数的各位都乘过为止。对应n位的两数相乘,则重复n次运算,最后的部分积即为结果。

56 从该算式的运算过程可见,二进制除法与十进制的除法类似。
(1). 除法运算 例: X= , Y=0 101,X÷Y的算法为: 000111 - 101 0111 101 从该算式的运算过程可见,二进制除法与十进制的除法类似。

57 计算机实现的除法运算步骤为: (1) 余数(开始为被除数)左移一位; (2) 若余数>除数,则商1,且余数-除数=新余数; 若余数<除数,则商0,且余数=新余数; (3) 重复上述规律,每次进行移位、比较、上商,对应两个n位的数相除,则重复进行n次运算。

58 1.3 二进制数的逻辑运算 计算机除了可进行基本的算术运算外,还可对两个或一个无符号二进制数进行逻辑运算。计算机中的逻辑运算,主要是指“逻辑非”、“逻辑乘”、“逻辑加”和“逻辑异或”等四种基本运算。

59 1. 逻辑非 也称“求反”。对某二进制数进行逻辑非运算,即按位求反,常用变量上方加一横来表示。 例:A= , B= , 求 、 解: = , = 实现逻辑非运算的电路称为非门,又称反相器。它只有一个输入和一个输出,其国标符和国外符如图所示:

60 2. 逻辑乘 对两个二进制数进行逻辑乘运算,即按位求与,常用记号 或 表示。其运算规则为: 例:A= , B= , 求 解: = 实现逻辑乘运算的电路称为与门,其国标符和国外符如图所示:

61 3. 逻辑加 对两个二进制数进行逻辑加,即按位求 “或”,常用记号 或 表示。其运算规则为: 例:A= , B= , 求 解: = 实现逻辑加运算的电路称为或门,其国标符和国外符如图所示:

62 对两个二进制数进行逻辑异或,即按位求 它们的模2和,常用记号 表示。其运算规则为:
4. 逻辑异或 模2加,不考虑进位 对两个二进制数进行逻辑异或,即按位求 它们的模2和,常用记号 表示。其运算规则为: 例:A= , B= , 求 解: = 实现逻辑异或运算的电路称为异或门,其国标符和国外符如图所示:

63 1.4 微型计算机的发展概述 微型计算机的发展 微型计算机软件的发展 微型计算机的特点

64 1. 微型计算机的发展 微型计算机自20世纪70年代问世以来伴随着微电子学的 发展,按CPU的字长和功能划分,它大致经历了5代演变:
第一代( ):4位和8位低档微机,以INTEL公司的4004微处理器组成的微机为代表。

65 第二代(1974-1978): 8位中档微机,以INTEL公司的8080、8085,Motorola公司的MC 6800, Zilog公司的Z80微处理器组成的微机为代表。

66 第四代(1985-1992): 32位微机。典型产品如80386、80486、MC68020 CPU组成的微型计算机。
第五代(1993年以来):以Intel公司推出的64位微处理器芯片Pentium为代表。它采用了全新的体系架构,性能大大高于80x86系列CPU和其他微处理器,由它组成的微型计算机的性能也大大提高。

67 微型计算机软件的发展 50年代:汇编语言 1957年:FORTRAN语言,使用公式解决数学问题;稍晚类似功能的ALGOL语言
COBOL语言:面向商业计算机的算法语言 BASIC、C、C/C++、Pascal等,用于教学、游戏和控制等 软件系统中,以操作系统为例:DOS1.0~6.2、MS Windows的Windows 3.1/ 98/ NT/ 2000/ XP

68 3. 微型计算机的特点 功能强 可靠性高 价格低 适应性强 体积小、重量轻、耗电省 维护方便

69 本章作业 P36 2,5,6,9,10,11


Download ppt "微机原理与通信接口 武汉理工大学信息工程学院 2010年9月."

Similar presentations


Ads by Google