微机原理复习Word下载.docx
《微机原理复习Word下载.docx》由会员分享,可在线阅读,更多相关《微机原理复习Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
….
11111111-1
由于计算机的位数有限,计算时有溢出现象。
对有符号数进行加法运算时,溢出的判定方法为:
若两个操作数的符号相同,而结果的符号与之相反,则OF=1,即溢出;
当符号相反或结果的符号与操作数的符号相同,则OF=0,不溢出。
2.计算题:
课本P28计算题1、5
1.
(1)
(1)10101-11010
=10101+00101+1
=10101+00110
=11011正数加上负数,无溢出
(2)01010-01110
=01010+10001+1
=01010+10010
=11100正数加上负数,无溢出
(3)00011-11101
=00011+00010+1
=00011+00011
=00110正数加正,结果还是正数,无溢出
(4)01110-10110
=01110+01001+1
=01110+01010
=11000正数加上正数,结果是负数,有溢出
5.计算[X]补+[Y]补
(1)10001+11001
=1)01010
=01010负数加负数,结果为正数,有溢出
(2)01001+00111
=10000正数加正数,结果为负数,有溢出
(3)10011+01101
=1)00000
=00000正数加负数,无溢出
(4)01110+11010
=1)01000
=01000正数加负数,无溢出
2.微型计算机的基本组成电路和基本工作原理
任何一个复杂的电路系统都可以划分为若干电路,这些电路大都由一些典型的电路组成。
微型计算机就是由若干典型电路通过精心设计而组成的,各个典型电路在整体电路系统中又称为基本电路部件。
这些基本电路中最主要的是:
算术逻辑单元(ArithmaticlogicalUnit),
触发器(Trigger)
寄存器(Register)、
存储器(Memory)
总线结构((Bus)
所有这些内容都是组成微型计算机的硬件基础。
3.简答题:
什么是L门、E门,在总线结构中有什么用处?
L门即Load门,当L=1时,允许数据装入,L=0时,将输入端阻塞,不允许数据装入。
E门即Enable门,当E=1时,允许数据输出,E=0时,不允许数据输出。
在总线结构中,某一时刻只允许一个寄存器的L门为高电平,另一个寄存器的E门为高电平。
这样,E门为高电平的寄存器的数据可以流入到L门为高电平的寄存器中去,通过设计控制字,可以沟通各个寄存器之间的信息往来。
对于初次接触微型计算机的人来说,如果从一个实际的微型计算机出发来了解其工作原理,则会事倍功半。
因此,这里拟从微型计算机的最基本的功能出发来讲解其电路工作原理,使在有限的时间内给大家一个较完整的概念,然后逐步完善实际微型计算机的全貌。
微型计算机的基本功能可概括为“三能一快”:
能运算、能判别、能决策。
这种基本功能从电路原理来理解就是信息在各个部件之间的流通问题,如何做到各个信息在部件之间能够“循序渐进、各得其所、有条不紊,快而不乱”?
这就是微型计算机基本工作原理所要解答的问题。
下面以一个简化了的模型机作为分析对象,讲述计算机的各种基本功能,从而概括出微型机的基本工作原理。
在分析过程中,陆续介绍各个基本电路和部件之间的信息流通过程,指令系统的意义,程序设计的步骤,控制部件的功能及其结构,控制矩阵产生控制字的过程,同时对例行程序进行较详细的阐述。
4.简答题:
a.简化的微型计算机组成的10个部件是什么。
硬件结构特点如下:
功能简单:
只能做两个数的加减法
内存量小:
只有一个16X8PROM
字长八位:
二进制8位显示
手动输入:
用按钮开关输入程序和数据
组成部件:
程序计数器PC
存储地址寄存器MAR
可编程只读存储器PROM
指令寄存器IR
控制部件CON
累加器A
算术逻辑部件ALU
寄存器B
输出寄存器O
二进制显示器D
这种结构,一般可以分成三大部分:
(1)中央处理器CPU(包括PC,IR,CON,ALU,A及B)
(2)存储装置M(MAR及PROM)
(3)输入/输出I/O(包括O及D,D也可称为外围设备)
b.在简化的微型机上进行程序设计包括哪三个步骤。
编制汇编语言程序、助记符的翻译、存储器的分配
c.控制部件包括哪三个主要部件。
控制器的组成:
环形计数器、指令译码器、控制矩阵
3.微处理器:
8086/8088从功能上可分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。
8086和8088CPU的内部结构基要相同,但它们的外部特性是有区别的。
8086是16位的数据总线,而8088是八位的数据,在处理一个16位数据字时,8088需要两步操作而8086只需要一步。
执行部件的功能就是负责指令的执行。
将指令译码并利用内部的寄存器和ALU对数据进行所需的处理。
由下列部分组成:
(1)四个通用寄存器,即AX,BX,CX,DX
(2)四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器
(3)标志寄存器FR
(4)ALU
特点:
(1)四个通用寄存器既可以作为16位寄存器使用,也可以作为8位寄存器使用。
当BX寄存器作为8位寄存器时,分为BH,BL。
(2)AX寄存器也常称为累加器,当累加器作为16位来使用时,可以进行按字乘操作、按字除操作、按字输入/输出和其它字传送操作;
当累加器作为8位来使用时,可以实现按字节乘操作,按字节除操作,按字节输入/输出和其它字节传送,以及十进制运算等。
(3)加法器是算术逻辑的主要部件,大部分指令的执行都是由加法器来完成的。
(4)标志寄存器FR共有16位,其中7位未用,状态标志有六个:
SF,ZF,PF,CF,AF,OF;
控制标志有三个:
DF,IF,TF
总线接口部件的功能是负责与存储器、I/O接口传送数据,即BIU管理在存储器中存取程序和数据的实际处理过程。
组成:
(1)四个段地址寄存器:
CS,DS,ES,SS
(2)16位指令指针寄存器IP
(3)20位的地址加法器
(4)六字节的指令队列
1.在执行指令的同时,从内存中取下一条指令,取来的指令就放在指令队列中。
这样,一般情况下,CPU执行完一条指令就可以立即执行下一条指令,而不需要象以往的计算机那样,让CPU轮番进行取指令和执行指令的操作,从而提高了CPU的效率。
2.地址加法器用来产生20位的地址。
8086可用
20位地址寻址1M字节的内存空间,但8086内部所有的寄存器都是16位的,所以需要由一个附加的机构来根据16位寄存器提供的信息计算出20位的物理地址,这个机构就是20位的地址加法器。
8086总线的工作周期:
在CPU和内存或I/O接口之间传输数据,以及填充指令队列时,CPU执行总线周期。
在8086/8088中,一个最基本的总线周期由四个时钟周期组成,常将四个时钟周期分别称为T1,T2,T3,T4四个状态。
总线操作分为三个阶段:
(1)寻址阶段:
经总线发出本次要访问的存储器或I/O端口地址和相关命令。
对应于T1,T2状态
(2)数据传送阶段。
对应于T3状态
(3)结束阶段。
对应于T4状态
8086的引脚信号和工作模式:
最小工作模式:
一个处理器。
MN/
引脚为高电平;
最大工作模式:
一个主处理器,一个或多个协处理器,MN/
引脚为低电平;
8086引脚信号和功能:
1.AD15—AD0
2.A19/S6—A16/S3
3.
/S7
4.NMI
5.INTR
6.
7.CLK
8.RESET
9.Ready
10.
11.MN/
12.GND,VCC
最小工作模式下,24-31引脚的含义:
1.
中断响应
2.ALE地址锁存允许信号
3.
数据允许信号
4.DT/
数据收发
5.M/
存储器/输入输出控制信号
6.
7.HOLD总线保持请求信号
8.HLDA总线保持响应信号
5.简答题:
8086CPU分为哪两个部分?
各部分的主要组成是什么?
6.简答题:
a.什么是总线周期?
总结周期分为哪三个阶段?
b.8086的状态标志寄存器有哪些标志?
4.微处理器的指令系统
指令的格式:
[标号:
]指令助记符[操作数];
注释
1.标号是该指令所在地址的名字,后面必须跟冒号,它可以缺省,是可供选择的标识符。
8086汇编语言的标识符必须遵循下列规则:
由字母(a-z,A-Z),数字0-9或某些特殊符号(@、_、?
、$)组成;
第一个字符必须是字母或某些特殊符号,但?
不能单独作为标识符;
标识符的有效长度不能超过31个。
2.指令的助记符是指令名称的代表符号,它是指令语句中的关键字,不可缺省,它表示本指令的操作类型,必要时可在指令助记符的前面加上一个或多个“前缀”,从而实现某些附加的操作。
3.操作数是参加本指令运算的数据,有些指令不需要操作数,可以缺省;
有些指令需要两个操作数,这时必须用逗号将两个操作数分开;
有些操作数可以用表达式表示。
4.注释部分是可选项,允许缺省,如果带注释则必须用分号开头,注释本身只用来对指令功能加以说明,给阅读程序带来方便,汇编程序不对它做任何处理。
数据的寻址方式
立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址(寄存器为BX,BP,SI,DI)、带偏移量的寄存器间接寻址、组合的寄存器间接寻址(将BX,BP和SI、DI组合)、带偏移量的组合的寄存器间接寻址。
指令分为传送类、操作类、控制类。
数据传送类指令
通用数据传送指令
MOV指令是形式最简单,用得最多的指令,它可以实现CPU内部寄存器之间的数据传送、寄存器和内存单元之间的数据传送,还可以把一个立即数送给CPU的内部寄存器或者内存单元。
堆栈操作指令
8086/8088指令系统中提供了专用的堆栈操作指令,其中PUSH是把字压入堆栈,POP是把字弹出堆栈。
在程序中采用堆栈操作指令时,应预置堆栈段寄存器SS,堆栈指示器SP的值,同时使SP的内容为当前堆栈段的栈顶。
在执行PUSH指令时,首先,堆栈指示器SP自动减2;
然后,将一个字从源操作数传送至堆栈顶。
POP指令的执行过程正好与PUSH指令相反,它把由SP指出的当前堆栈段的栈顶的一个字传送到目的操作数中,然后SP自动加2,指向新的栈顶。
在8086指令系统中,不允许CS作为目的操作数,因此POP指令中的目的操作数可以是除CS之外的其它的寄存器或存储器。
XCHG
XLAT
LEA
LDS
LAHF
SAHF
PUSHF/POPF
输入/输出数据传送指令
完成累加器(AX/AL)与I/O端口之间的数据传送功能。
执行输入指令时,CPU可以从一个8位端口读入一个字节到AL中,也可以从两个连续的8位端口中读一个字到AX中;
执行输出指令时,CPU可以将AL中的一个字节写到一个8位端口中,或者将AX中的一个字写到两个连续的8位端口中。
这里输入/输出端口地址的寻址方式有直接寻址和DX寄存器间接寻址两种方式。
8086微处理器采用独立编址的I/O端口,可以有64K(216)个字节端口。
数据操作类指令
算术运算类指令
ADD,
ADC,
INC,不影响CF标志
SUB
SBB
DEC,不影响CF标志
NEG
CMP
减法运算时,CF位说明无符号数相减的溢出,同时它又确实是被减数的最高位向高位的借位。
被减数<
减数,CF=1,有借位。
计算机在进行减法运算时,变为加该数补码的运算,运算结果有进位时,表示无借位,CF=0;
运算结果无进位时,表示有借位,CF=1。
与零相减时,不会有借位,CF=0。
减法时,溢出标志OF的判定方法同加法,首先将减法运算变为加该数补码的运算,同号数相加,结果符号相反,则OF=1,其它情况OF=0。
与零相减时,不会溢出,OF=0。
乘法指令
是双操作数指令。
指令中给出的操作数可以是寄存器操作数或存储器操作数,而隐含的操作数为AL或AX
除法指令,其中的操作数的隐含规则与乘法指令相同
逻辑运算指令
AND,OR,NOT,XOR,TEST
移位指令
SAL,SHL,SAR,SHR,ROL,ROR,RCL,RCR
控制类指令
控制类指令包括程序转移指令和处理机控制指令。
凡是能改变指令执行顺序的指令,统称为程序转移指令。
分为四种类型:
无条件转移、条件转移、循环控制、中断
程序转移的地址:
段内:
只改变IP值,
对于很段的短内转移(-128~127),又称为短内短转移
段间:
改变CS、IP
直接转移:
转移的目标地址直接出现在指令中
间接转移:
转移的目标地址间接存储的某一个寄存器或内存单元中
相对转移:
在当前IP值班的基础上增加或减小一个值
绝对转移:
以新的值完全代替当前的
IP值。
有四种转移方式:
段内直接、段内间接、段间直接、段间间接。
所有的段内直接转移都是相对转移,所有段内间接转移和段间转移都是绝对转移。
JMP指令具有所有这些转移功能,CALL和RET没有短转移功能。
条件转移指令都是短距离相对转移
循环控制指令也都是短距离相对转移。
5.汇编语言及汇编程序
伪指令的格式:
[标号]伪指令助记符[操作数];
伪指令语句本身不产生对应的目标代码,是源程序汇编期间由汇编程序处理的操作,可以完成如数据定义、分配存储区域、程序结束说明等功能,只起一种说明的作用,标号表示所存储的第一个单元的地址,后面没有冒号。
操作数项给出它们所要求的参数。
指令中的操作数据和伪指令中的操作数项都可以由常数、寄存器、标号或表达式组成。
表达式:
是常数、寄存器、标号、变量与一些运算符相组合的序列,表达式的值在汇编时就确定了。
运算符有:
算术、逻辑、关系、分析、组合、分离
汇编语言的开发过程:
源程序
编辑产生汇编语言源文件*.asm
汇编后产生目标代码文件*.obj
链接后产生可执行文件*.exe或*.com,*.com也是可执行文件,代码和数据放在一起,只有一个段,比*.exe文件要简单。
几种常用的伪指令:
(1)符号定义伪指令EQU:
可以写在数据段之外,也可以写在数据段之内。
写在数据段之内时也不分配内存单元。
例如:
DATASEGMENT
AEQU20
XDB10
DATAENDS
在此定义中,X的偏移地址还是0000H,与AEQU20无关,符号定义伪指令,并不分配内存单元。
(2)过程定义伪指令
过程名PROC[NEAR]FAR
过程体
RET
过程名ENDP
可以把汇编语言程序看成DOS的一个过程调用,此时就不用DOS的21H功能调用就能返回到DOS,这种方法也称为返回DOS的标准程序法。
CODE1SEGMENT
ASSUMECS:
CODE
STAPROCFAR
PUSHDS
XORAX,AX
PUSHAX
……
STAENDP
CODE1ENDS
ENDSTA
(3)程序结束伪指令:
END[标号]
表示汇编过程到此结束,而不是执行到此结束。
连接后,将目标代码装入内存,程序从标号处开始执行。