微机原理知识点集锦.docx
《微机原理知识点集锦.docx》由会员分享,可在线阅读,更多相关《微机原理知识点集锦.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理知识点集锦
一.知识点集锦(有些题是举例的,按照例子找到相关知识点。
)
01.微型计算机由中央处理器、存储器、输入/输出接口和总线组成。
03.与十进制数2006等值的十六进制数是7D6H,与十六进制数AC04H等值的十进制数是44036。
04.字符串‘Win98’的ASCII代码是57H69H6EH39H38H。
05.8086/8088的地址空间最多可分为64K个逻辑段。
06.一个数据的有效地址EA=1234H,且DS=5678H,则该数据在内存中的物理地址是579B4H,该数据段的首末单元的物理地址是56780H/6677FH。
07.若当前堆栈指针SP指向2006H单元,则向堆栈中压入5个字的内容后,SP应指向1FFCH。
08.若8086/8088CPU引脚状态是M/
=1,
=1,
=0,则此时执行的操作是存储器写。
09.一台8微机的地址总线为16条,其RAM存储器容量为16KB,首地址为2000H,且地址是连续的,则可用的最高地址是5FFFH。
10.某微机系统采用一块8253芯片,时钟频率为1MHz。
若要求通道0工作于方式3,输出的方波周期为0.5ms,则时间常数应设定为500,通道控制字应设定为00110111B。
11.总线周期的含义是CPU从存储器或I/O端口存取一个字节所需的时间;8086/8088的基本总线周期由4个时钟周期组成;如果CPU的时钟频率为4.77MHz,那么它的一个时钟周期为209.6ns,一个基本总线周期为838.6ns。
12.8086CPU的
信号是存储器和I/O选择信号,高电平时表示CPU访问存储器。
13.总线传输率是指在给定的工作方式下所能达到的数据传输率或单位时间内能够传输的字节数或比特数;若某总线的工作频率最高为8MHz,数据总线宽度为16位,则该总线的最大传输率为16MByte/s。
14.I/O端口的编址方式有两种,分别为:
与存储器统一编址和I/O独立编址。
15.十进制数42.625转换为二进制数101010.101B,转换为八进制数是52.5O,转换为十六进制数是2A.AH。
16.十进制数-66的原码是11000010B,反码是10111101B,补码是10111110B。
(用八位二进制编码表示)。
17.8086从功能上可分为两个部分,即:
总线接口单元(BIU)和执行单元(EU)。
18.可编程计数/定时控制器8253具有3个计数通道;它有6种工作方式,其中工作方式3被称为方波发生器。
19.三态输出电路可以有3种工作状态,即0、1和高阻态。
20.8086的地址有20位,那么它的可寻址空间为1024K,其中每个段的最大长度为64K。
22、8086微机系统中的一个中断向量占4个存储单元,假定某中断对应的中断向量存放在0000:
002CH;那么该中断向量对应的中断类型号为0BH,若该向量对应的中断处理子程序放在0080:
0402H开始的内存区域中,则按照地址由低到高的顺序写出其相应的存储单元的内容为02H、04H、80H、00H。
23、8259A包括两种触发方式,即电平触发方式和脉冲触发方式;8259A中对中断优先权的管理可分为三种方式,即完全嵌套方式、自动循环方式、和中断屏蔽方式。
24、8086复位后如下寄存器的内容为:
CS=FFFFH,IP=0000H。
25、加设SI=1000H,BX=4040H,[1010H]=34H,[4050H]=33H,现执行LEABX,[SI+10H]指令后,则BX=1010H
26、某8086CPU系统中,内存0000:
0080H开始的4个单元中一次存放的内容是12H,34H,56H,78H,则对应的中断程序入口地址CS:
IP是78563412H
27、写出下列十进制数的原码、反码、补码表示(采用8位二进制,最高位为符号位)。
28.8086微处理器包含4个专用寄存器,其中SP和BP寄存器一般与堆栈段寄存器SS连用,用以确定堆栈段中某一存储器单元的地址;而SI和DI寄存器一般与数据段寄存器DS连用,用以确定数据段中某一存储器单元的地址。
29.8086微处理器的组成包括两部分,执行程序时,BIU(总线接口)部件负责将指令代码从内存取到指令队列中;EU(执行)部件负责执行指令。
30.若(AX)=0FDAAH,(BX)=0FBCFH,则执行指令ADDAX,BX之后,(AX)=0F979H,(BX)=0FBCFH,标志位OF、AF、CF的状态对应为0、1和1。
31.若TAB为数据段中0032H单元的符号名,其中存放的内容为1234H,则执行:
MOVAX,TAB指令后,AX中的内容为1234H。
32.若(DS)=7500H,数据段的长度为64KB,则当前数据段的起始地址为75000H,末地址为84FFFH。
33.假设(SP)=1000H,(AX)=2000H,(BX)=3000H,试问:
(1)执行PUSHAX指令后,(SP)=0FFEH;
(2)再执行PUSHBX和POPAX指令后,(SP)=0FFEH,(AX)=3000H,(BX)=3000H。
34.汇编语言程序有四种基本结构,分别为顺序程序、分支程序、循环程序和子程序。
35、汇编语言源程序的语句有三种类型,即指令语句、伪指令语句和宏指令语句。
36、下面指令中源操作数的寻址方式是:
(1)MOVAX,2000H立即寻址
(2)MOVAX,BX寄存器寻址;(3)MOVAL,[1000H]直接寻址
37.下列说法正确的是AB。
A.CPU一般包括ALU、控制器、寄存器阵列等主要部件。
B.CPU中的程序计数器是控制器的重要部件,总是指向下一条指令的地址。
C.指令周期一般由几个机器周期组成,机器周期是CPU工作的最小时间单位。
D.8086CPU的寄存器都是16位的,但指令指针是20位。
38.下列说法正确的是AC。
A.通用寄存器包括AX、BX、CX、DX,它们都可以作为累加器使用。
B.使用BP做间址寄存器时,默认使用DS做段寄存器。
C.做字符串操作时,源指针与目的指针使用的段寄存器不同。
D.形成堆栈地址的是SS与SP。
39.8086CPU的NMI和INTR都是中断请求输入信号。
40.各种命令的正确用法(自己总结)----包括寻址方式。
哪种方式是正确的哪种是错误的。
41.地址总线为32位的微机系统中其内存最大容量为4096MB
42.存储器芯片的存储容量怎样计算。
43.存储单元的物理地址如何计算。
44、8086通过
信号和A0控制连接在总线上的存储器和接口以何种方式传输数据。
45、标志寄存器中各标志位的表示,如何描述,并且要记住哪些是对CPU起控制作用,哪些没有起到控制作用。
46、MOVAX,[BX+SI]的源操作数的物理地址16×(DS)+(BX)+(SI)--------及各相关指令的物理地址
47、数值转换,比较大小,以及BCD码的换算。
48、8位二进制原码表示的整数数据范围是-127~+127
50、程序运行过程中进行了一次FAR转移,或者是执行了NEAR转移,CS和IP的变化?
51、8086的各个引脚的作用是什么。
52、各条指令的功能,以及指令执行后,目的操作数中保存的数值是多少,如何确定。
53、关于8086的基础知识,包括数据总线宽度等;定时器8253计数时钟频率是多少等相关基础知识。
三.简答题
01.在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?
具体说明。
答:
逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:
0088H。
偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。
物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。
02.8086/8088CPU由哪两部分组成,并解释它们的功能是什么?
如何协同工作?
。
答:
由总线接口部件BIU和指令执行部件EU组成。
EU是执行部件,主要的功能是执行指令。
BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。
EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。
EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作;
总线接口部件和执行部件并不是同步工作的,它们按以下流水线技术原则来协调管理:
①每当8086的指令队列中有两个空字节,或者8088的指令队列中有一个空字节时,总线接口部件就会自动把指令取到指令队列中。
②每当执行部件准备执行一条指令时,它会从总线接口部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。
在执行指令的过程中,如果必须访问存储器或者输入/输出设备,那么,执行部件就会请求总线接口部件进入总线周期,完成访问内存或者输入/输出端口的操作;如果此时总线接口部件正好处于空闲状态,那么,会立即响应执行部件的总线请求。
但有时会遇到这样的情况,执行部件请求总线接口部件访问总线时,总线接口部件正在将某个指令字节取到指令队列中,此时总线接口部件将首先完成这个取指令的操作,然后再去响应执行部件发出的访问总线的请求。
③当指令队列已满,而且执行部件又没有总线访问请求时,总线接口部件便进入空闲状态。
④在执行转移指令、调用指令和返回指令时,由于程序执行的顺序发生了改变,不再是顺序执行下面一条指令,这时,指令队列中已经按顺序装入的字节就没用了。
遇到这种情况,指令队列中的原有内容将被自动消除,总线接口部件会按转移位置往指令队列装入另一个程序段中的指令。
03.8086CPU中有哪些寄存器?
答:
共五组,分别为:
数据寄存器组:
16位,累加器AX、基址寄存器BX、计数寄存器CX、数据寄存器DX。
指针寄存器组:
16位,堆栈指针寄存器SP、基址指针寄存器BP。
变址寄存器组:
6位,源变址寄存器SI、目的变址寄存器DI。
段寄存器组:
16位,代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS、附加段寄存器ES。
控制寄存器组:
16位,指令指针寄存器IP、标志寄存器PSW。
04.为什么说8088CPU是准16位的微处理器?
答:
8086EU内部,BIU内部以及外部数据总线宽度均是16位;而8088EU内部数据总线宽度是16位,BIU内部以及外部数据总线宽度是8位。
05.指令队列和堆栈的工作方式各是什么?
答:
指令队列的进出原则是先进先出;堆栈的进出原则是后进先出。
06.试说明可屏蔽中断和非屏蔽中断的区别和联系。
答:
可屏蔽中断和不可屏蔽中断都属于外部中断,是由外部中断源引起的;但它们也有区别:
可屏蔽中断是通过CPU的INTR引脚引入,当中断标志IF=1时允许中断,当IF=0时禁止中断,不可屏蔽中断是由NMI引脚引入,不受IF标志的影响。
07.简述8259A芯片中与中断请求操作相关的寄存器的名称及其功能。
答:
8259A中与中断请求操作相关的寄存器有:
1中断请求寄存器IRR,它是一个8位的寄存器,用来存放外部输入的中断请求信号IR0~IR7。
2中断服务寄存器ISR,它是一个8位的寄存器,用来记录正在处理的中断请求。
3中断屏蔽寄存器IMR,它是一个8位的寄存器,用来存放对各级中断的屏蔽信息。
4优先级判别器PR,用来识别各中断请求信号的优先级别。
08.论述8086CPU的最小方式和最大方式的区别
8086CPU的最小方式和最大方式的区别是:
最小方式,MN/MX接+5V(MX为低电平),用于构成小型单处理机系统,支持系统工作的器件,控制信号由CPU提供。
最大方式,MN/MX接地(MX为低电平),用于构成多处理机和协处理机系统,支持系统工作的器件,控制信号由8288提供。
09.解释8086CPU的状态标志寄存器的状态标志位的含义。
状态标志:
状态标志用来反映EU执算术和逻辑运算以后的结果特征,这些标志常常作为条件转移类指令的测试条件,控制程序的运行方向。
这6位分别是:
CF(CarryFlag)进位标志:
CF=1,表示指令执行结果在最高位上产生一个进位或借位:
CF=0,则无进位或借位产生。
CF进位标志主要用于加、减运算,移位和循环指令也能把存储器或寄存器中的最高位(左移时)或最低位(右移时)移入CF位中。
PF(ParityFlag)奇偶标志:
:
当PF=l,表示在指令执行结果中有偶数个“1”;PF=0,则表示在结果中有奇数个“l”。
PF奇偶标志用于检查在数据传送过程中是否有错误发生。
AF(AuxiliaryCarryFlag)辅助进位标志:
当AF=1,表示结果的低4位产生进位或借位;AF=0,则无进位或借位。
AF标志主要用于实现BCD码算术运算结果的调整。
ZF(ZeroFlag)零标志:
ZF=1,表示运算结果为零;ZF=0,则运算结果不为零。
SF(SignFlag)符号标志:
SF=1,表示运算结果为负数;SF=0,则结果为正数,符号位为0。
OF(OverflowFlag)溢出标志:
OF=l,表示带符号数在进行算术运算时产生了算术溢出,即在带符号数的算术运算中,运算结果超出带符号数所能表示的范围;OF=0,则无溢。
四、程序分析题
1.(6分)依次执行下述指令序列,请在空白处填上当左边指令执行完时该寄存器的值。
MOVAL,0DH
MOVBH,5CH
MOVCH,04H
ADDAL,BH;AL=69H
ORBH,CH;BH=5CH
XORAL,AL;AL=00H
ANDCH,0FH;CH=04H
MOVAX,0004H
MOVBX,00B7H
PUSHAX
PUSHBX
POPAX;AX=00B7H
POPBX;BX=0004H
2.(4分)当下列程序执行完后,AL、BX、DI、DS四个寄存器的内容分别是什么?
假定存储器从2000H开始的内容分别为:
[2000H]=04H,[2001H]=02H,[2003H]=06H,
[2004H]=01H,[2005H]=08H,[2006H]=07H
MOVBX,2000H
MOVAL,03H
XLAT
LDSDI,[2000H]
AL=06HBX=2000HDI=0204HDS=0106H
3.(5分)阅读下面的程序,指出该程序完成的功能。
START:
INAL,71H
CLC
CMPAL,10
JCLP1
CMPAL,20
JCLP2
MOVBL,0FFH
LP3:
OUT73H,BL
HLT
LP1:
MOVBL,00
JMPLP3
LP2:
MOVBL,88H
JMPLP3
完成功能如下:
从外设71H中取一个数,判断其值是否在10~20之间,如果是则送88H给外设73H,如果小于10则送00给外设73H,如果大于20,则送0FFH给外设73H。
4.(5分)假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,(AX)=2060H,(BX)=3000H,(CX)=5,(DX)=0,(SI)=2060H,(DI)=3000H,(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,(25060)=00B0H,(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令单独执行完后,有关寄存器及存储单元的内容,若影响条件码请给出条件码SF、ZF、OF、CF的值。
(1)SBBAX,BX
(2)CMPAX,WORDPTR[SI+0FA0H]
(3)SARAX,CL
(4)XORAX,0FFE7H
(5)JMPWORDPYR[BX]
(6)XCHGAX,ES:
[BX+SI}
答案:
(1)(AX)=0F05FH,(SF)=1,(ZF)=0,(OF)=0,(CF)=1
(2)(SF)=1,(ZF)=0,(OF)=1,(CF)=1
(3)(AX)=0103H,(CF)=0
(4)(AX)=0DF87H,(CF)=0,(OF)=0,,SF)=1,(ZF)=0
(5)(IP)=0A006H,不影响标志位
(6)(AX)=00B0H,(25060)=2060H,不影响标志位
五、综合题
1、某系统外接电路如图5,8255A口地址为2F0H~2F3H,请设计源程序,一次性的测试开关的位置,当K闭合时,LED亮,K断开时LED灭(提示:
C口高4位应为方式0输入,低4位为方式0输出)。
图5
CODE SEGMENT
ASSUME CS:
CODE
BEG:
;C口初始化
;读C口
;测试PC7并组织输出数据
;数据写入C口使LED亮/灭
;返DOS
CODE ENDS
END BEG
1.解:
CODESEGMENT
ASSUMECS:
CODE
BEG:
MOVDX,2F3H
MOVAL,
OUTDX,AL;C口初始化
MOVDX,2F2H
INAL,DX;读C口
TESTAL,10000000B;测试PC7并组织输出数据
JNZXX
MOVAL,00000001B
OUTDX,AL;数据写入C口使LED亮/灭
JMPZZ
XX:
MOVAL,00000000B
OUTDX,AL;
ZZ:
MOVAH4CH
INT21H;返DOS
CODEENDS
ENDBEG
2.设8253的选通地址为240H~243H,采用BCD计数,计数器2输出用于申请中断。
如果计数器2的输入时钟频率为20KHz,输出信号每秒引起100次中断。
要求
(1)算出计数初值,
(2)编写初始化程序。
(20分)
(1)初值为20KHZ/100=200或C8H
(2)编程:
MOVDX,243H
MOVAL,10110001B(或B1H)
OUTDX,AL;
MOVDX,242H
MOVAL,8CH
OUTDX,AL;
MOVAL,00H(该句也可以为:
XORAL,AL)
OUTDX,AL;
3.看懂以下8086宏汇编程序,回答问题:
(本题18分)
说明:
字符的ASCII编码,数字0-9为30h-39h,0dh为回车符,0ah为换行符。
datasegment
org100h
bufdw5678h,0f588h;
(1)buf=100h
sumdw?
?
count($-sum)/2;
(2)count=?
dstridb‘sum=’
dispdb8dup(?
),’H’,’$’
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,segdata
movds,ax
movsi,offsetbuf
movdi,offsetsum
xordx,dx;dx清0
movax,[si];(3)ax=5678h
movbx,[si+2];(4)bx= 0f588h
addax,bx
adcdx,0
mov[di],ax;(5)ax= 4c00h
mov[di+2],dx;(6)dx=0001
callh2asc
movdx,offsetdstri
movah,09;dos调用09号,以$为结束符的字符串输出显示。
int21h
movah,4ch;dos调用4ch号,程序终止。
int21h
h2ascproc
movsi,offsetsun+2;指向待处理的高位字地址
movdi,offsetdisp;指向处理后存放ASCII码的地址
movdl,count
begin :
movbx,[si];先处理高位字,再处理低位字
movch,4
rot:
movcl,4
rolbx,cl;bx的内容小循环左移cl次
moval,bl
andal,0fh;屏蔽高4位
addal,30h
cmpal,3ah
jlenter
addal,7
enter:
mov[di],al
incdi
decch
jnzrot
subsi,2
decdl
jnzbegin
ret
h2ascendp
codeends
endstart
问题:
(1)程序中定义了几个段?
各段的名字是什么?
(2分)
答:
2个,段名为:
data,code。
(2)程序中定义了几个内存变量?
变量名是什么?
数据区共占用了多少个内存单元(字节数)(4分)?
答:
4个。
变量名为:
buf,sum,dstri,disp。
22个内存单元。
(3)h2asc过程的功能是什么?
该程序中加30h和加07的作用是什么?
(3分)
答:
把sum内存单元的数据(2个字)变换成对应的ASCII码,放到disp定义的内存中(占用8个单元)。
在转换为ASCII码的过程中,若是字母需加30h和07,若为0~9的数字需加30h。
(4)详细说明该程序完成了什么功能?
(5分)
答:
程序完成了两个功能,其一是把内存中两个16位数相加,其和放回内存中;其二是把上述和变换成对应的ASCII码,在屏幕上显示出来。
屏幕显示结果如下:
sum=00014c00H。
(5)对程序中6个问题填空。
(4分)
答:
(1)buf=100
(2)count=2(3)ax=5678h(4)bx=f588h
(5)ax=4c00h(6)dx=0001。
附录:
1、8255A方式选择控制字格式
2、8253控制字格式