910 likes | 1.07k Views
微机原理. 主讲教师 方义秋 辅导教师 易芝. 教材. 《 32 位微型计算机原理与接口技术 》 仇 玉 章 主编 清华大学出版社. 参考文献:. 《 微型计算机硬件技术及应用基础 》 邹逢兴 主编 国防科技大学出版社 《32 微型计算机原理接口技术及其应用 》 史新福 等编 西北工业大学出版社 http://oa.gdut.edu.cn/wjyljyy/jiaoan/jiaoan_new.asp 广东工业大学 ★
E N D
微机原理 主讲教师方义秋 辅导教师 易芝
教材 《32位微型计算机原理与接口技术》 仇 玉 章 主编 清华大学出版社
参考文献: • 《微型计算机硬件技术及应用基础》 邹逢兴 主编 国防科技大学出版社 • 《32微型计算机原理接口技术及其应用》 史新福 等编 西北工业大学出版社 • http://oa.gdut.edu.cn/wjyljyy/jiaoan/jiaoan_new.asp 广东工业大学★ • http://www.nciae.edu.cn/excellent_course/fjsjzywjxlkc_wjylyjkjs_course_resume.asp 华北航天工业大学★ • http://jwc.njust.edu.cn/jpkc/weijiyl/web/i3wjsyjx1.htm 南京理工大学★ • http://jwc.seu.edu.cn/jpkc/declare/08wjjk/louyuwu/index.asp 东南大学
《微型机原理与接口技术》课程简介及要求 1. 课程性质及教学目的 《微型计算机原理与接口技术》是学习以Intel 80486为背景的32位微型计算机基本知识和应用技能的重要课程。本课程帮助学生掌握微型计算机的硬件组成及使用;学会运用指令系统和汇编语言进行程序设计;熟悉各种类型的接口及其应用,树立起微型计算机体系结构的基本概念,为后继计算机课程的学习及应用打好基础。
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 2. 课程教学安排 • 理论教学学时:58学时 • 实验学时:6学时 • 考试形式:以笔试为主占70%,实践占20%,作业占10% 3. 教材主体内容结构 • 基本知识与基本概念 • 计算机中的数据表示:数制与编码 • 计算机的系统组成:硬件、软件 • 存储器的基础知识
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 • 80486微处理器 • 微处理器内部结构 • 80486的工作模式:实地址模式、保护虚地址模式和虚拟86方式 • 80486的外部引脚 • 指令系统与汇编语言 • 指令的概念与寻址方式 • 80486指令系统介绍 • 汇编语言格式、基本表达、伪指令介绍 • 汇编语言源程序的建立、编辑、运行、调试
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 • 汇编语言程序设计及其应用 • 程序设计的方法和步骤 • 顺序程序、分支程序、循环程序、子程序的设计 • DOS和BIOS中断调用 • DOS功能调用 • BIOS中断调用
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 • 输入输出系统 • 输入输出接口概述 • 信息交换方式:无条件方式、查询方式、中断方式及DMA方式 • 可编程定时/计数器8254 • 中断系统 • 中断的概念 • 中断向量及其作用 • 软中断与硬件中断的区别 • 微机系统的中断处理过程 • 可编程中断控制器8259A及其应用
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 • 串行通信 • 1.串行同步通信与异步通信的基本概念 • 2.串行通信接口标准RS-232C • 3.8250接口的内部结构,端口地址分配,分频率系数的计算与初始化步骤。 • 4.8251A的内部结构,同步收/发与异步收/发,初始化方法 • 并行I/0接口芯片 • 1.8255A的内部结构:两组控制电路,三个端口,方式0、方式1与方式2的特点与使用场合。 • 2.8255A方式选择控制字和C口置位/复位控制字的含义及使用。8255A的应用和初始化。
《微型计算机原理与接口技术》课程简介及要求《微型计算机原理与接口技术》课程简介及要求 • DMA控制器 • 1.DMA的工作过程 • 2.8237A的内部结构和基本功能 • 3.8237A各个内部寄存器的作用 • 存储系统 • 1.虚拟存储器的概念 • 2.80486的段式存储器、页式存储器、段页式存储器 • 3.Cache的工作原理
第一章数制和码制 • 1.1计算机中的数制 • 1.2计算机中的码制 • 1.3浮点数基本概念
1.1计算机中的数制 计算机中的数据都是采用二进制形式存储和处理的,二进制数只有两个数字0和1,这与我们日常生活中所使用的十进制数是不同的。 1、1、1计算机中常用的计数制 人们最常用的数是十进制数,计算机中采用的是二进制数,同时有的时候为了简化二进制数据的书写,也采用八进制和十六进制表示方法。下面将分别介绍这几种常用的进制。 1、十进制数 十进制数是大家熟悉的,用0,1,2,…,8,9十个不同的符号来表示数值,它采用的是“逢十进一,借一当十”的原则。
2、二进制表示法 基数为10的记数制叫十进制;基数为2的记数制叫做二进制。 二进制数的计算规则是“逢二进一,借一当二”。 二进制表示数值方法如下: NB = ± Ki * 2i 其中:Ki = 0 或 1 n i=-m 例:二进制数1011.1表示如下: (1011.1)B= 1 * 23 + 0 * 22 + 1 * 21 + 1 * 20+1 * 2-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
3、八进制表示法 八进制数是基数为八的计数制。八进制数主要采用0,1,2,…,7这八个阿拉伯数字。 八进制数的运算规则为“逢八进一,借一当八”。 八进制表示数值方法如下: NO = ± Ki * 8i 其中:Ki = 0 、1、2、3、4、5、6、7 n i=-m 例:(467.6)O=4 * 82+ 6 * 81+ 7 * 80 + 6 * 8-1
4、十六进制表示法 基数为16,用0 - 9 、A - F 十五个字符来数值,逢十六进一。 各位的权值为 16i 。 二进制表示数值方法如下: NH= ± Ki * 16i 其中:Ki = 0 - 9 、A - F n i=-m 例:(56D.3)H = 5 * 162+ 6 * 161 + 13 * 160 + 3 * 16-1
计数制 基数 数码 进位关系 表示方法 二进制 2 0、1 逢二进一 1010B或(1010)2 八进制 8 0、1、2、3、4、5、6、7 逢八进一 247O或(247)8 十进制 10 0、1、2、3、4、5、6、7、8、9 逢十进一 598D或(598)10 十六进制 16 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 逢十六进一 7C2F H或(7C2F)16 下表给出了计算机中不同计数制的基数、数码、进位关系和表示方法。
1、1、2 数制间的转换 1、二进制数和十进制数之间的转换 (1)、二进制数转换为十进制数 方法:按二进制数的位权进行展开相加即可。 例:11101.101 =1×24+1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3 =16+8+4+0+1+0.5+0.25+0.125 =29.875
(2)、十进制数转换为二进制数 方法: A、将整数部分和小数部分分别进行转换,然后再把转换结果进行相加。 B、整数转换采用除2取余法:用2不断地去除要转换的数,直到商为0。再将每一步所得的余数,按逆序排列,便可得转换结果。 C、小数转换采用乘2取整法:每次用2与小数部分相乘,取乘积的整数部分,再取其小数部分乘2直到小部分为0。将所取整数顺序放在小数点后即为转换结果。
例:将(136)D转换为二进制数。 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=(10001000)B
例:将(0.625)D转换为二进制数。 0.625 * 2 1.25 * 20.5 * 21.0 取整: 高位 低位 转换结果:(0.625)D = (0.101)B
2、二进制数和八进制数、十六进制数间的转换2、二进制数和八进制数、十六进制数间的转换 (1)、二进制数到八进制数、十六进制数的转换 A、二进制数到八进制数转换采用“三位化一位”的方法。从小数点开始向两边分别进行每三位分一组,向左不足三位的,从左边补0;向右不足三位的,从右边补0。 B、二进制数到十六进制数的转换采用“四位化一位”的方法。从小数点开始向两边分别进行每四位分一组,向左不足四位的,从左边补0;向右不足四位的,从右边补0。 例:将(1000110.01)B转换为八进制数和十六进制数。 1000 110 . 01 001000 110 . 010 ( 1 0 6 . 2 )O
二进制数到十六进制数的转换: (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.1.3 计算机中常用的编码 计算机除了用于数值计算之外,还要进行大量的文字信息处理,也就是要对表达各种文字信息的符号进行加工。计算机中目前最通用的两种字符编码分别是美国信息交换标准代码(ASCII码)和二—十进制编码(BCD码)。 1. 美国信息交换标准代码(ASCII码) ASCII(American Standard Code for Information Interchange)码是美国信息交换标准代码的简称,用于给西文字符编码,包括英文字母的大小写、数字、专用字符、控制字符等。 这种编码由7位二进制数组合而成,可以表示128种字符,目前在国际上广泛流行。 (见书 P.3 表1.2)
2. 二—十进制编码——BCD码 BCD(Binary-Coded Decimal)码又称为“二—十进制编码”,专门解决用二进制数表示十进数的问题。 “二—十进制编码”最常用的是8421编码,其方法是用4位二进制数表示1位十进制数,自左至右每一位对应的位权是8、4、2、1。 由于4位二进制数有0000~1111共16种状态,而十进制数0~9只取0000~1001的10种状态,其余6种不用。
通常,BCD码有两种形式,即压缩BCD码和非压缩BCD码。通常,BCD码有两种形式,即压缩BCD码和非压缩BCD码。 (1)压缩BCD码:压缩BCD码的每一位数采用4位二进制数来表示,即一个字节表示两位十进制数。例如:十进制数59D,采用压缩BCD码表示为二进制数是01011001B。 (2)非压缩BCD码:非压缩BCD码的每一位数采用8位二进制数来表示,即一个字节表示1位十进制数。而且只用每个字节的低4位来表示0~9,高4位为0。例如:十进制数87D,采用非压缩BCD码表示为二进制数是00001000 00000111B。
3. 汉字编码 具有汉字信息处理能力的计算机系统,除了配备必要的汉字设备和接口外,还应该装配有支持汉字信息输入、输出和处理的操作系统。 (1)汉字输入码:用于外部输入汉字,也称为外码。有顺序码——将汉字按一定顺序排好,然后逐个赋予1个号码作为该汉字的编码,例如区位码;音码——根据汉字的读音进行编码,例如拼音码;形码——根据汉字的字形进行编码,例如五笔字型;音形码——根据汉字的读音和字形进行编码,例如双拼码。 (2)汉字机内码:是汉字处理系统内部存储、处理汉字而使用的编码,简称内码。内码与国家标准GB2312-80汉字字符集有简明的一一对应关系。
(3)汉字交换码:是汉字信息处理系统之间或通信系统之间传输信息时,对每个汉字所规定的统一编码。我国已指定了汉字交换码的国家标准“信息交换用汉字编码字符集——基本集”,代号GB2321-80,又称“国标码”。国标码字符集共收录汉字和图形符号7445个。其中:一级常用汉字3755个;二级非常用汉字和偏旁部首3008个;图形符号682个。国标码是所有汉字编码都应该遵循的标准,自公布这一标准后,汉字机内码的编码、汉字字库的设计、汉字输入码的转换、输出设备的汉字地址码等,都以此标准为基础。(3)汉字交换码:是汉字信息处理系统之间或通信系统之间传输信息时,对每个汉字所规定的统一编码。我国已指定了汉字交换码的国家标准“信息交换用汉字编码字符集——基本集”,代号GB2321-80,又称“国标码”。国标码字符集共收录汉字和图形符号7445个。其中:一级常用汉字3755个;二级非常用汉字和偏旁部首3008个;图形符号682个。国标码是所有汉字编码都应该遵循的标准,自公布这一标准后,汉字机内码的编码、汉字字库的设计、汉字输入码的转换、输出设备的汉字地址码等,都以此标准为基础。 返回
1.2 计算机中的码制 1. 基本概念 在计算机内部表示二进制数的方法通常称为数值编码,把一个数及其符号在机器中的表示加以数值化,这样的数称为机器数。机器数所代表的数称为该机器数的真值。
(1)机器数的符号:在算术运算中,数据是有正有负的,称之为带符号数。为了在计算机中正确地表示带符号数,通常规定每个字长的最高位为符号位,并用“0”表示正数,用“1”表示负数。例如:字长为8位二进制时,D7为符号位,其余D6~D0为数值位;字长为16位二进制数时,D15为符号位,其余D14~D0为数值位。(1)机器数的符号:在算术运算中,数据是有正有负的,称之为带符号数。为了在计算机中正确地表示带符号数,通常规定每个字长的最高位为符号位,并用“0”表示正数,用“1”表示负数。例如:字长为8位二进制时,D7为符号位,其余D6~D0为数值位;字长为16位二进制数时,D15为符号位,其余D14~D0为数值位。 ·如: 01100000B,10110000B称机器数,对应 有符号的数:+1100000B ,-0110000B 称真值数,值为+96,-48 无符号的数:01100000B,10110000B 其十进制数为96,176
(2)机器数的范围:由计算机的CPU字长来决定。(2)机器数的范围:由计算机的CPU字长来决定。 当使用8位寄存器时,字长为8位,所以一个无符号整数的最大值是: (11111111)B=(255)D,此时机器数的范围是0~255。 当使用16位寄存器时,字长为16位,所以一个无符号整数的最大值是: (1111111111111111)B=(FFFF)H=(65535)D,此时机器数的范围是0~65535
(3)机器数中小数点的位置: 在机器中,小数点的位置通常有两种约定,一种规定小数点的位置固定不变,这时的机器数称为“定点数”;另一种规定小数点的位置可以浮动,这时的机器数称为“浮点数”。
2. 机器数的原码、反码、补码 (1)原码:规定正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。 例如:当机器字长为8位二进制数时: X=+1011011 [X]原码=01011011 Y=-1011011 [Y]原码=11011011 X=+0000000 [X]原码=00000000 Y=-0000000 [Y]原码=10000000 原码表示的整数范围是-(2n-1-1)~+(2n-1-1),其中n为机器字长。 通常:8位二进制原码表示的整数范围是-127~+127, 16位二进制原码表示的整数范围是-32767~+32767。
(2)反码:对于一个带符号的数来说, [正数]反=[正数]原,既正数的反码与其原码相同; [负数]反=其原码除符号位以外的各位按位取反。 例如:当机器字长为8位二进制数时: X=+1011011 [X]原码=01011011 [X]反码=01011011 Y=-1011011 [Y]原码=11011011 [Y]反码=10100100 X=+0000000 [X]原码=00000000 [X]反码=00000000 Y=-0000000 [Y]原码=10000000 [Y]反码=11111111 反码表示的整数范围是-(2n-1-1)~+(2n-1-1),其中n为机器字长。 负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式。
(3)补码:正数的补码与其原码相同,负数的补码为其反码在最低位加1。(3)补码:正数的补码与其原码相同,负数的补码为其反码在最低位加1。 例如: X=+1011011X=+0000000 [X]原码=01011011 [X]原码=00000000 [X]补码=01011011 [X]补码=00000000 Y=-1011011Y=-0000000 [Y]原码=11011011 [Y]原码=10000000 [Y]反码=10100100 [Y]反码=11111111 [Y]补码=10100101 [Y]补码=00000000 补码表示的整数范围是-2n-1~+(2n-1-1),其中n为机器字长。 则:8位二进制补码表示的整数范围是-128~+127, 16位二进制补码表示的整数范围是-32768~+32767。 负零的补码和正零的补码相同。
3.整数补码的运算 (1)模——某一计量器的最大单位。 如:时钟12点; 8位寄存器,可表达00000000~11111111共256个数,,故模为28 N位寄存器,模为2n (2)有模的运算 凡是用器件进行的运算都是有摸运算。当运算结果大于摸时,超出的部分被运算器自动“丢弃”(保存在进位标志寄存器中)。
如:时钟拨准,现是3点,而时针指向5点,拨准的方法有二:如:时钟拨准,现是3点,而时针指向5点,拨准的方法有二: 5-2=3(逆时针拨2小时) 5+10=3,12丢失 (顺时针拨10小时) (mod 12) 有 X+12=X 若X=-5, 则 -5+12=—5, 即 7=-5 称7是(-5)对模12的补码。 在摸12的意义下,负数可以转化为正数,而正负数相加也可转化为正数间的相加。如: 4+(-5)=4+(12-5)=4+7
(3)求补运算——按位取反,末位加1 例如: X=+75=+1001011X=-75= - 1001011 [+X]补码=01001011 [-X]补码=10110101 按位取反: 10110100 01001010 末位加1: 10110101 01001011 对[+X]补码按位取反末位加1,就得到[-X]补码 对[-X]补码按位取反末位加1,就得到[+X]补码
补码与真值之间的转换:给定机器数的真值可以通过补码的定义来完成真值到补码的转换,若已知某数的补码求其真值,计算方法如下:补码与真值之间的转换:给定机器数的真值可以通过补码的定义来完成真值到补码的转换,若已知某数的补码求其真值,计算方法如下: • 正数补码的真值等于补码的本身; • 负数补码转换为其真值时,利用“求补运算”,即可得到该负数补码对应的真值。
(4)整数补码的运算 补码的加法规则: [X+Y]补码=[X]补+[Y]补码 补码的减法规则: [X-Y]补码=[X]补+[-Y]补码 其中X,Y为正负数皆可,符号位参加运算。 当满足-2n-1 ≤(X,Y,X±Y)< 2n-1条件时,可得正确结果。(n为字长,以2n为模) 例1.2.1 (P. 6) 例1.2.2(P.6)
4.无符号数 8位寄存器的内容 11111111B, 若是无符号数。其值等于255; 若是补码数,其真值等于-1; 若是反码数,其真值等于-0; 一个数的物理意义,由程序员却决定。
5.进位和溢出 • (1)进位——运算之后,最高位向更高位的进位。被运算器“丢弃”,保存在“进位标志触发器”中(C标志=1)。 • 有符号数,不能统计在运算结果中。 • 无符号数,进位值是结果的一部分,不能丢弃。 • (2)溢出——运算结果超出了寄存器所能表示的范围,此时,“溢出触发器”置1(O标志=1)
(3)溢出判断——双高位判别法 设:Cs——表征符号位进位,有进位Cs=1,否则,Cs=0; Cp——表征数值部分的进位(进入到符号位), 有进位Cp=1,否则Cp=0; l当Cs=0,Cp=1时,溢出为“正溢出”, (两个正数相加)。例yl1-5 l当Cs=1,Cp=0时,溢出为“负溢出”, (两个负数相加)。例YL1-6 l当Cs=0,Cp=0时,无溢出, 例YL1-7 l当Cs=1,Cp=1时,无溢出, 例YL1-8 l一个正数和一个负数相加,和肯定不溢出。 例 YL1-9 微机中用“异或”线路来判断有无溢出,即Cs⊕Cp=1,溢出标志O为1。 对无符号数,只要有进位,即溢出。 返回
l当Cs=0,Cp=1时,溢出为“正溢出”,(两个正数相加)l当Cs=0,Cp=1时,溢出为“正溢出”,(两个正数相加) 例yl1-5 返回
l当Cs=1,Cp=0时,溢出为“负溢出”, (两个负数相加) 例YL1-6 返回
l一个正数和一个负数相加,和肯定不溢出。 例 YL1-9 返回
1.3浮点数基本概念 1.浮点数 浮点数的统一格式: S——尾数;尾符; J——阶码,表示小数点的实际位置;阶符; 纯小数: S=0.1011010101 规格化的浮点真值数满足的条件: • 尾数为纯小数,且小数点后是1不是0。 • 阶码为整数