微机原理及应用核心笔记.docx
《微机原理及应用核心笔记.docx》由会员分享,可在线阅读,更多相关《微机原理及应用核心笔记.docx(255页珍藏版)》请在冰豆网上搜索。
微机原理及应用核心笔记
第1章、微型计算机基础知识
§1.1微机的一般概念和基本组成
(一)冯.诺依曼结构计算机
从第一代电子计算机开始到现代计算机,其制造技术发生了极大的变化,但我们目前使用的各类计算机大都沿用了冯.诺依曼结构。
概括起来冯.诺依曼结构有如下要点:
1、采用二进制形式表示数据和指令;
2、将程序(包括数据和指令序列)事先存储到主计算机内,即:
程序顺序存储方式;
论文:
程序控制、存储程序
3、计算机系统由运算器、控制器、存储器、输入和输出装置等组成。
(二)微型机的基本组成
微型计算机系统由计算机硬件系统和软件系统组成。
(微机系统、微机、CPU)P3
微型计算机系统的硬件由微型计算机(主机)和外围(输入、输出)设备组成。
主机由:
CPU(中央处理器:
算术、逻辑运算部件;累加器、寄存器;控制部件;内部总线);主存储器(ROM、RAM);输入、输出接口;系统总线组成。
微型计算机系统的软件由系统软件、工具软件和应用软件组成。
CPU是计算机的心脏。
是一片超大规模集成电路芯片,它的功能直接决定了计算机的性能好坏。
CPU的主要功能:
●可进行算术、逻辑运算;
●临时保存数据;
●能对指令进行译码,并执行规定的动作;
●能与内存或外设交换数据;
●能提供整个系统需要的定时和控制;
●可以响应其它设备的中断请求
CPU的主要参数有:
(1)主频
(2)一次能处理的数据位数。
它由CPU的数据线条数决定。
(3)能带多少存储器和I/O口。
它由CPU的地址线条数决定。
如:
Pentium80586CPU为32位CPU,主频可为60MHZ,可带4GB存储器。
PentiumpⅡCPU为32位CPU,主频可为130MHZ。
PC/XT机,CPU是Inter8086,16位,主频8MHZ,可1MB存储器。
存储器用来存储程序和数据。
存储器分内存和外存。
(1)内存
CPU用地址线直接访问的存储器称内存,内存又分RAM和ROM。
ROM是只读存储器,其中存放的程序和数据是计算机生产厂用特殊方式写入的,计算机不加电时也不丢失。
RAM叫可读可写存储器,RAM中一般存放用户开发的程序和数据,只要一掉电,RAM中的数据全部丢失。
人们常说的计算机容量,就是指内存。
(2)外存
外存是CPU用输入输出方式存取的存储器。
一般指软盘和硬盘。
它的特点是容量大,速度慢,价格低。
目前软盘的容量一般为1.4MB(兆字节),硬盘一般达到10GB(10千MB)。
总线是连接多个装置或功能部件的一组公共信息通道。
微机中一般有三种总线:
地址总线 其条数,决定了系统能配带多少存储器;每一个存储单元都有一个确定的地址,该地址就是通过地址线描述的。
数据总线 其条数,决定了机器的字长;
控制总线
如:
8086CPU有20条地址线,16条数据线。
直接寻址1M字节存储器,一次能处理16位二进制数据。
§1.2计算机中的数和码
(一)计算机中常用的编码
1、BCD码
BCD码是一种用二进制表示的十进制数。
从四位二进制数表示的数:
0000--1111中选出0000--1001分别表示十进制中的0--9这十个数码,它们就是BCD码。
2、ASCII码
计算机中的一些符号,如:
大小写英文字母,各种专用符号:
+、-、*、/、(、)、[、],汉字,图形符号等等都叫非数值数据。
在计算机中非数值数据也要用二进制表示。
如人们敲键盘输入计算机中的信息就是二进制数。
所有外不设备输入计算机的都是用二进制数。
为了使不同生产厂商生产的外部设备如键盘、显示器等能通用,同时人们输入的程序和数据能共享,大家都能看懂,对输入计算机的非数值信息必须采用大家都共识,共同规定的方案去编码。
ASCII码
现在用得最广泛的西文编码方案是ASCII码,即美国标准信息交换码。
在这种编码方案中,用八位二进制数来表示一个ASCII码,其中最高位为0,余下的七位代表128个不同的字符,其中95个(编码值大于31的)编码代表键盘能敲入并且能显示的,打印机也能打印的95个字符。
如大小写各26个字母,0—9这十个数字符,通用的运算符和标点符号+,-,*。
/,>,<,(,),[,],:
,;,?
等等。
余下的33个(编码值为0---31和127)作为控制码。
3、汉字编码
汉字在计算机中也用二进制数表示。
不过汉字的编码不能与ASCII码相同,为此汉字在计算机内,目前用两个八位二进制数表示,且每个二进制数的最高位必须是1,余下的七位对应的十进制数值必须大于32。
这种编码可以经过国标码(我国于1980年制定的信息用汉字编码字符集.基本集:
GB2312—80)得到或从区位码得到。
(二)计算机中数的表示
1.计算机中的进位计数制
(1)进位计数制的表示法
日常生活中用十进制计数,除了符号位用+、-号外,只用0、1、2、------9这十个符号。
要表示大于十的数,还必须规定数字排列规则,如345中的3处于百位,它代表3百,可用3*102来表示,其中102代表百位数的位权。
4处于十位,它代表4个十,可用4*101来表示,其中101代表十位数的位权,5处于个位,可用5*100,其中100代表个位数的位权。
于是345可写成:
(345)10=3*102+4*101+5*100
=∑ai*Ri
其中:
ai为0或1,R为基数,对十进制数R=10
对于任意数制,一般情况下有:
对于二进制数,它只有两个符号:
0和1。
当某一位的值增加到2时,向高一位进1,本位变0。
即,运算法则是:
逢二进一。
各位位权是:
1、2、4、8、16、32、64、128---等。
二进制数由排列起来的0和1组成。
如二进制数:
(1010)2=1*23+0*22+1*21+0*22=(10)10
对八进制数,有八个符号:
0--7;
运算法则是:
逢八进一;
位权分别是:
1、8、64、512等。
如八进制数:
(1625)8=1*83+6*82+2*81+5*80=(907)10
对十六进制数,有16个符号:
0--9、A、B、C、D、E和F;
运算法则是:
逢16进一;
位权分别是:
1、16、256、4096等。
如十六进制数:
(1A2F)16=1*163+10*162+2*161+15=(6703)10
(2)进位计数制的转换
十进制转换成R进制
法则:
整数部分:
除R取余
小数部分:
乘R取整
二进制转换成十进制
法则:
若要将二进制数转换成十进制数,只要将那些不为0的数位的位权相加即可。
例
(10110011)2=27+25+24+21+20=128+32+16+2+1
=(179)10
由此可知:
若要将R进制数转换成十进制数,只要将那些不为0的数位ai乘其该位位权ai,再累加求和即可。
例:
2a8H=2*256+10*16+8=512+160+8=680D
二进制转换成八进制
法则:
从小数点开始,三位变一位
二进制转换成十六进制
法则:
从小数点开始,四位变一位
八进制转换成二进制
法则:
一位变三位
十六进制转换成二进制
法则:
一位变四位
例:
(10110011.0010101)2=263.124O =B3.2AH
(3)二进制运算法则
二进制的运算法则是:
逢二进一
0+0=01+0=10+1=11+1=10
0*0=01*0=00*1=01*1=1
例:
01010101+00111011=10010000
01010101
+00111011
10010000
练习:
加、减、乘、除
2.带符号数的表示
(1)机器数
数,除了有多少外,还有+、-符号。
因此,在计算机中要表示一个完整的数,其符号也得用二进制数来表示,机器中这样的数叫机器数。
一般机器数的最高位用来表示数的符号:
1表示负数,0表示正数。
机器数中余下的二进制位叫数值位。
如:
01010001
符号位数值位
机器数所代表的有符号数的大小,就是该机器数的真值。
用机器数来表示一个数,可采用不同的码制(即:
“数值位”表示1、2、3……等等的编码方式叫码制),一个数(一个真值)若用不同码制来表示,其机器数是不相同的。
反过来说:
一个机器数,可能代表多个真值。
常用的码制有:
原码、反码、补码等。
(2)原码
若数值位直接以无符号二进制数的方式编码,这样的机器数的表示法叫原码。
(3)反码
规定:
正数的反码与其原码相同,负数的反码是其对应的原码按位取反所得。
如:
(00000101)原对应的反码也是(00000101)反
(10000101)原对应的反码是(11111010)反
(00000101)原和(00000101)反对应的真值都是+5
(10000101)原对应的真值是-5
(11111010)反对应的真值也是-5
而(10000101)反对应的真值是-234
可见:
一个数(如:
-5)用原码和反码表示时,其机器数是不同的。
因此,问:
机器数:
10000101的真值是多少?
是不确切的。
(4)补码
(补码为其反码加1。
)
(正数的补码与其原码相同,负数的补码为其反码加1。
)
如:
(0)补=00000000B;
(127)补=01111111B;
(-1)补=11111111B;
(-127)补=10000001;
(-128)补=10000000
(5)移码
将补码的符号取反就是移码。
带符号数的表示及意义(位数固定如4位,8位):
(1)表示方法
(2)进位与溢出
(3)如何判断进位与溢出
3.定点数和浮点数
(1)定点数
机器数中若将小数点的位置固定在数值位的最左边或最右边,而采用默认的方式,小数点不占数位,即机器数中不出现小数点,这就是定点数。
小数点放在数值位的最左边叫纯小数或定点小数;小数点放在数值位的最右边叫纯整数或定点整数。
(2)浮点数
对于小数点位置不固定的数,机器中用浮点数来表示,其形式为:
Pf
P
Sf
S
阶符
阶码
尾符
尾数
第2章Intel8086微处理器
§2.18086的编程结构
(一).8086编程结构
8086CPU从编程功能上看可以分成两部分:
总线接口BIU和执行单元EU。
两部分功能
(二)总线接口部件
功能:
负责与CPU外部传送数据(ROM,RAM,IO)
4个段寄存器:
CS(代码)、DS(数据)、ES(扩展)、SS(堆栈)
指令指针寄存器IP
20位加法器
指令队列缓冲器
8086CPU外部有20条地址线,但内部只有16条线,所有寄存器均是16位的,它无法直接处理20位的地址的。
因此,8086的设计者是这样来设计的:
按64K字节为一段,将1M内存分成很多段。
若CPU要对访问一个存储器,将一个存储器的物理地址(20位二进制数地址)分成两部分:
16位二进制位的段地址和16位二进制位的段内偏移地址。
一般将段地址放入段寄存器,段内偏移地址放入BP、BX、SI或DI之中。
且有:
物理地址=段地址*16+段内偏移地址
例:
P12.3
(三)执行部件
4个通用寄存器:
AX、BX、CX、DX
4个专用寄存器:
堆栈指针寄存器SP、基数指针寄存器BP、源变址寄存器SI、目标变址寄存器DI
标志寄存器PSW(F)
所有寄存器均是16位的。
其中4个通用寄存器均可分成两个8位寄存器:
AH和AL、BH和BL、CH和CL、DH和DL
ALU
8086标志寄存器
标志寄存器中有9位作为CPU执行指令后的各种状态。
这9位标志位可分成两类:
状态标志和控制标志。
(1)进位标志CF
(2)奇偶标志位PF
(3)半进位标志AF
(4)零标志ZF
(5)符号标志SF
(6)溢出标志OF
(7)跟踪标志TF
(8)方向标志DF
(9)中断标志IF
注意:
1、传统总线的产生
2、接口芯片引脚功能
3、接口芯片与总线的连接
提问:
8086CPU从编程功能上看可以分成哪两部分,两部分功能?
有哪些寄存器?
如何得到外部20位地址?
有哪两类标志位?
讲解:
执行指令的管理:
指令队列(P10-P11)
时钟周期和总线周期:
时钟周期:
时钟频率的倒数
总线周期:
执行一次取指操作或传送数据操作的时间
T1往总线发地址
T2总线低16位高阻,高4位输出状态
T3总线低16位为数据
TW
T4结束
§2.28086的引脚及工作模式
一、8086工作模式
8086最小模式和最大模式
系统中只有一个8086CPU再无其它控制总线的芯片,这就是最小模式。
系统中有多于一个8086CPU,或有其它控制总线的芯片,这就是最大模式。
二、8086引脚
按信息定义分五大类:
#1每个引脚只传送一个信息;如:
AD0--AD15
#2每个引脚高低电平代表不同的信号,如:
TO/M
#3在两种模式下有不同的定义,如:
WR/LOCK,小模式是写信号,大模式下是总线锁定信号。
#4一个引脚分时使用,如:
AD0--AD15,T1状态下传送地址,T3状态转送数据。
#5输出、输入分别传送不同的信息,如:
RQ/GT0,输入时传送总线请求,输出时转送总线请求允许。
按功能分类:
1、基本工作保证:
电源:
VCC、GND、GND,
时钟:
CLK(p16),
复位:
RESET(p16)初始地址FFFF0H
2、地址数据总线:
AD0-AD15、A16-A19
ALE
BHE/SS0(P15表2.2)
3、控制线:
读写控制:
/RD,/WR,M/IO,
READY,DT/R,DEN
中断控制:
INTR,INTA,NMI
总线控制:
MN/MX,HODA,HODR
指令等待(WAIT)控制:
TEST
三、基本接线:
1、基本工作保证:
加8284(P21知道图)
2、最小模式读写操作(P21表)(会设计图)
3、最大模式典型配置说明(P23倒3段)(知道两个图)
四、PC系统板总线
PC系统板总线共62条,全部引到系统板8个扩展槽上。
62条线分成五类:
地址线20根、数据线8根、控制线21根、状态线2根和时钟、电源线8根。
五、总线操作与8086的时序
1、理解最小模式下读写操作图
8086总线周期
8086CPU中的各部件,不管取指令或执行指令阶段,都是在一个时钟定时器的参与下,严格地、有条不紊的按预先设计的顺序进行。
即CPU设计者是按照预先设计的时序要求,来考虑各部件的整体配合、协调工作。
要了解和利用计算机进行控制,都必须要掌握CPU的时序要求。
8086CPU时序中,最重要的是8086总线执行部件BIU从内存或外部设备中取指令或数据的时序。
CPU从内存或外部设备中取指令或数据叫CPU访问(或叫CPU读)存储器或外设。
在这段时间内,CPU要占用总线(数据线、地址线和控制线)。
CPU从内存或外设中读一个字节的数据所用的时间叫一个总线周期。
8086的一个最基本的总线周期包含四个时钟周期(如CPU主频传0MHZ,1个时钟周期为100ns)。
4个时钟周期又叫4个T状态:
T1、T2、T3和T4状态。
CPU在4个T状态中必须完成给定的工作。
(1)在T1状态,CPU往地址线上发送地址;
(2)在T2状态,总线的低16位成高阻状态,高4位传送本总线周期的状态信息(使用那个段寄存器等);
(3)T3状态,总线低16位传送数据,高4位继续传送本总线周期的状态信息;
(4)T4状态,总先周期结束。
(5)如果存储器或外设的存取速度满,CPU在T3结束后要插入一个或多个TW等待周期。
CPU8086对总线的访问一般不是连续的。
两个总线周期之间的时间CPU不访问总线,而进入“空闲周期”。
8086读(写)时序:
2、中断
中断分类
中断向量:
p35表
硬件中断及响应过程
硬件中断产生条件:
内部,外部
可屏蔽中断响应过程:
1、执行完当前指令,2、发INTA两个负脉冲,3、收到中断号暂存
4、PSW入栈,请中断允许标志,保护断点
5、进入中断程序
软件中断及响应过程(类似子程序)
用软件提供中断类型码
3、IO及RAM组织
地址的产生
片选与端口地址
复习:
§1.1微机的一般概念和基本组成硬件系统和软件系统
§1.2计算机中的数和码
§2.18086的编程结构
§2.28086的引脚及工作模式
§2.38086的时序、复位操作(p26)及中断
§2.4IO及RAM组织
习题:
2.3、2.7、2.8、2.10(小模式)、2.11(后问)、2.14、2.23、2.27
思考题:
1.1、1.6、2.2、2.4、2.5、2.6、2.30、2.38
二、8086指令系统
START:
MOVCX,1230H
MOVAX,[1230H]
LOOP:
SUBAX,CX
JZEXT
INCBX
JMPLOOP
EXT:
HLT
指令格式
标号:
关键字(指令助记符)操作数;注释
标号:
字符(字母数字@—?
)例
关键字(指令助记符)P468--P47975个
注释
计算机中指令也必须用二进制数来表示。
8086CPU设计者用1--6个字节二进制数来代表不同的指令。
每一条指令均包含四部分内容:
(1)作什么事;
(2)到何处取操作数;
(3)结果放在何处;
(4)下一条指令放在何处。
其中“1”称为操作码,“2”--“4”叫操作数。
所谓寻址方式,就是指操作数放在何处,采用何种方式寻找操作数。
上述“2”和“3”是操作数的寻址;“4”是指令的寻址。
在一条指令中,“指令的寻址”部分采用两种方式来表示:
#1一般指令中,如传送指令、算术运算指令、逻辑指令等,采用缺省方式,即指令中不包含“下一条指令”的地址,而用顺序存放的方式,紧接着本指令存放地址的后面就是“下一条”指令的存放地址。
#2在转移指令、调子程序指令等指令中包含“下一条指令”的地址。
主机中操作数只能放在CPU寄存器或存储器中。
存储器是分段的,操作数可能放在程序区也可能放在数据区。
1.8086寻址方式
1.什么是寻址方式
操作数和寻址方式(从硬件上解释操作数在指令、R、RAM、IO什么地方)
1、根据关键字规定操作数0-2个
如2个中间用逗号,且两个操作数或位长相同,(类型匹配)
2、操作数可以是数字、寄存器内容或存储单元内容
表示方法:
数字立即在指令中写出数字
寄存器内容在指令中写出寄存器名称
存储单元内容用括号括出存储单元有效地址
段地址可注明,否则BP为SS段,其余为DS段
例:
1234H,[1234H],SI,[SI],[BP],ES:
[1234H],ES:
[BP]
3、寻址方法:
(1)操作数是数字,指令中立即写出数字------------立即数寻址
MOVAX,1234H解释此句意义
立即寻址
操作数放在程序区,就在当前指令操作码的后一个字节中。
如:
汇编指令:
MOVAX,1234H
对应的机器指令是:
B8H34H12H
该指令的功能是:
将源操作数:
1234H传送到AX寄存器。
对源操作数而言,它就放在指令码B8的后面,这就是立即寻址。
(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址
MOVAX,BX
寄存器寻址
操作数放在CPU中的寄存器中。
如:
汇编指令:
MOVAX,BX
对应的机器指令是:
8BHC3H
指令功能是:
将BX中的数传送到AX寄存器。
源操作数是放在BX寄存器中,所以叫寄存器寻址。
指令的机器码中并不包含要传送的操作数。
只有BX的代码011B(C3H=11000011B)
(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址
MOVAX,[1234H]
MOVAX,ES:
[1234H]
直接寻址
指令中直接包含有操作数存放的16位偏移地址。
该地址是数据区中的某一地址。
如:
汇编指令:
MOVAX,[2000H]
对应的机器指令是:
8BH06H00H20H
指令功能是:
将BX中的数传送到AX寄存器。
机器指令中的00H20H,就是源操作数的存放地址。
(低地址在前)
(4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址
MOVAH,[BX]
MOVAX,ES:
[SI]
MOVAL,[BX+SI+5]===5[BX+SI]===5[BX][SI]
间接寻址所用寄存器为BX、BP称基址寻址,所用寄存器为SI、DI称
变址寻址,两者的组合称基址+变址,均可带位移量
寄存器间接寻址
操作数存放在以寄存器中的内容为偏移地址的存储器中。
寄存器只能是BX或BP或SI或DI之一。
若是BP,则对应的存储器是在堆栈段,段地址在SS中;其它则对应的存储器是在数据段,段地址在DS中。
如:
汇编指令:
MOVAX,[BX]
对应的机器指令是:
8BH07H
指令功能是:
将存储器[BX]中的数传送到AX寄存器。
机器指令中的(07H=00000111B)包含的111B,就是源操作数中寄存器BX的代码。
操作数中并不包含存储器地址,只包含寄存器的代码,所以叫寄存器间接寻址。
变址寻址
变址寻址实际上是在寄存器间接寻址的基础上再加一个16位的偏移量。
如:
汇编指令:
MOVAX,[SI+0100H]
对应的机器指令是:
8BH54H00H01H
指令功能是:
将存储器[SI+100H]中的数传送到AX寄存器。
机器指令中的(54H=01010100B)包含的010B,就是源操作数中寄存器SI的代码,00H01H就是16位偏移地址。
操作数中并不包含存储器地址,只包含寄存器的代码和16位偏移地址,所以叫变址寻址。
基址加变址寻址
如果操作数是存放在以[基址寄存器BX或BP+变址寄存器SI或DI]的存储器中则叫基址加变址寻址。
如:
汇编指令:
MOVAX,[BX+SI]
指令功能是:
将存储器[BX+SI]中的数传送到AX寄存器。
指令中的操作数中并不包含存储器地址,只包含基址寄存器和变址寄存器的代码,所以叫基址加变址寻址。
操作数类型和类型匹配
(1)操作数类型(位长)BYTE,WORD,DD,
(2)操作数类型的确定
数字12H,0012H,00000012H无法确定
寄存器内容AX,AH,AL确定
存储单元内容[1234H]
可字节;L[1234H][1235H]H字;L[1234H][1235H][1236H][1237H]H双字无法定
(3)两个操作数类型匹配
两个操作数类型都确定,必须在指令中匹配
MOVAX,BX
MOVAH,BL
MOVAX,BL错
两个操作数仅一个类型确定,8086自动匹配
解释MOVAX,86H
MOVAH,86H
MOVAX,[1234H]