微机原理与接口技术复习重点(很有用哦).ppt
《微机原理与接口技术复习重点(很有用哦).ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术复习重点(很有用哦).ppt(73页珍藏版)》请在冰点文库上搜索。
综合练习题,一、填空题二、分析简答题三、程序分析题四、编程题五、存储器扩展题六、输入输出接口题,一、填空题,在计算机中:
1Byte=8bit,1Word=16bit。
对于十六进制数码64.8H,转换为十进制数时为100.5;该数码看作8421BCD码时表示数据为64.8。
对于十进制数18.5,用十六进制数表示时为12.8H;用压缩8421BCD码表示时为18.5H或(00011000.0101)。
设机器字长为8位,最高位是符号位。
则十进制数127所对应的原码为11111111B,补码为10000001B。
8086CPU内部结构可分为EU和BIU两部分。
8086CPU可以访问8位和16位的寄存器。
8086CPU是16位的CPU。
设SP为2000H,则执行PUSHAX后,SP=1FFEH。
逻辑地址是由段基址和偏移地址组成。
其中,段寄存器中存放的是段基址。
将逻辑地址转换为物理地址的公式是段基址16偏移地址。
设有逻辑地址1234H:
1234H,试写出其对应的物理地址13574H。
一个含有16个字节数据的变量,它的逻辑地址为1000H:
0100H,那么该变量的最后一个字节数据的物理地址是1010FH。
8086CPU对外的数据线是16条,地址线是20条,它的寻址能力为1M字节。
数据线和地址线是以分时复用方式轮流使用的。
若有如下定义:
ORG0100HTABDW9876H当执行:
MOVAX,TAB后,(AX)=9876H;而执行:
LEAAX,TAB后,(AX)=0100H。
若定义ADBabcd,则(A+2)单元存放的字节数据是c或63H。
8086CPU在I/O单独编址时,对I/O编址最多使用16条地址线,若要从地址为80H的端口读入字节数据,则应该使用指令INAL,80H。
在8086系统(XT机)中使用的可编程中断控制器型号是8259A,该芯片最少占用2个端口地址。
可编程定时/计数器8253含有3个16位的定时/计数器。
每个定时/计数器可以通过编程方式来设定的工作方式有6种。
若用4K1的存储器芯片组成12K字节的内存容量,则共需24个这样的芯片。
一般情况下,容量为256KB的存储器具有8条数据线,18条地址线。
在微型计算机系统中,可采用的输入输出方式主要有程序控制、中断方式、DMA三种类型。
可编程接口芯片8255A含有3个8位的I/O口。
A口工作方式有3种,B口工作方式有2种。
8086CPU上电复位后,执行第一条指令的物理地址是FFFF0H。
8086/8088CPU的中断系统能处理256种不同类型的中断。
在8086系统中使用8259A芯片,最多能管理64级中断优先级。
计算机对I/O端口的编址方法有存储器映象寻址(也称统一编址)、I/O单独编址两种。
内存按存储器性质分类通常分为RAM和ROM两类。
二、分析简答题,1、写出-23的原码、反码、补码,并将补码转换成十六进制数(设字长为8位)。
答:
X=-23=-10111BX原码:
10010111BX反码:
11101000BX补码:
11101001B=E9H,2、已知逻辑地址3010H:
1234H,写出段地址、偏移地址、物理地址。
答:
段地址为:
3010H;偏移地址为:
1234H物理地址:
3010H*10H+1234H=31334H3、简述BIU、EU单元作用。
答:
BIU:
地址形成、取指令、指令排队、读/写操作数、总线控制EU:
指令译码、指令执行,4、8086CPU中四个段寄存器的名称是什么,分别用什么符号表示?
答:
代码段:
CS数据段:
DS堆栈段:
SS扩展段:
ES,5、列举至少5种程序状态字中的标志位,并简要说明其功能答:
ZF:
全零标志CF:
进位标志SF:
符号位AF:
辅助进位PF:
奇偶校验位OF:
溢出标志,6、设字长为8位,用二进制计算15+20的结果,并说明对状态标志C、A、S、Z的影响。
答:
00001111+0001010000100011CF=0AF=1SF=0ZF=0,7、8086CPU对1M存储空间是如何组织的?
答:
8086CPU对存储器是采用分段方式管理的(段地址:
偏移量),分为奇地址库和偶地址库。
8、8086CPU系统中存储器为什么分奇地址库和偶地址库。
答:
为保证和以前的CPU兼容,保证8086既能进行字节操作,有可以进行字操作。
9、8086对存储器的管理为什么采用分段的办法?
20位的物理地址是如何形成的?
答:
8086的数据线和内部的寄存器都是16位的,而其地址线是20位的,无法直接进行管理;为扩大寻址范围,采用分段的管理方式,把真正的物理地址用段地址和偏移量表示,每一部分都不超过64K,可保存在内部寄存器中。
当CPU访问内存时,在地址加法器中将段寄存器的内容(段基址)自动左移4位(二进制),再16位偏移地址相加,形成20位的物理地址。
10、设SS=1050H,SP=0008H,AX=1234H,当执行指令:
PUSHAX后,寄存器SS、SP、AX内容分别是什么?
画图说明1234H在内存中的存放情况。
答:
SS=1050HSP=0006HAX=1234H(10506H)=34H(10507H)=12H,11、分别指出下列指令中的源操作数的寻址方式。
(1)MOVCX,300H
(2)MOVBPDI,300H(3)MOVAX,BX(4)MOVAX,BP+DI(5)MOVAX,10BXDI(6)MOVAX,10SI(7)MOVAX,DI(8)JMPBX(9)INAL,23H(10)INAL,DX,
(1)直接寻址
(2)立即寻址(3)寄存器寻址(4)基址加变址(5)相对基址加变址寻址(6)寄存器相对寻址(7)寄存器间接寻址(8)段内间接寻址(9)直接端口寻址(10)间接端口寻址,12、指出下列指令的错误
(1)MOVAH,BX答:
源、目的操作数长度不匹配
(2)ADD15H,BX答:
立即数不能做目的操作数(3)MOVCS,AX答:
CS不能做目的操作数(4)MOVAX,SIDI答:
SI、DI不能同时出现在中(或源操作数寻址方式有误)(5)MOVBYTEPTRBX,1000答:
源、目的操作数长度不匹配,(6)MOVSI,BX答:
源、目的操作数不能均为存储器操作数(7)MOVDS,0200H答:
立即数不能直接送至段寄存器(8)INBL,05H答:
IN指令中目的操作数不能用BL(只能用AL或AX)(9)MOVAX,IP答:
IP不能作操作数(10)MOVSI,DX答:
DX不能间接寻址,可改为MOVSI,BX(11)PUSHAL答:
PUSH指令的操作数必须为16位(即:
按字操作),13、试写一指令序列,完成将AX寄存器的最低4位置1,最高3位清零,D7D9位反相,其它位不变。
答:
ORAX,000FHANDAX,1FFFHXORAX,0380H,14、用单条指令或程序片段,实现下述功能。
(1)将AX高8位取反,低四位置1,其余位不变。
(2)将AL的高四位与低四位互换。
(3)将BX、AX内容互换。
答:
(1)XORAX,0FF00HORAX,000FH
(2)MOVCL,4RORAL,CL(或ROLAL,CL)(3)XCHGAX,BX,15、写出至少3种指令,使AX寄存器清零答:
MOVAX,00SUBAX,AXXORAX,AXANDAX,00H,16、设计I/O接口电路时一般遵循什么原则,为什么?
答:
遵循的基本原则:
输出要锁存,输入要缓冲。
原因:
CPU运行速度较快,外设速度相对较慢,通过锁存器保持CPU的输出信号;CPU的数据线是公用的,任何外设都不能单独占用数据线,通过缓冲器可以将外设和数据线在不需要的时候隔离。
17、计算机使用中断有什么好处?
答:
(1)解决快速CPU与慢速外设之间的矛盾,使CPU可以与外设同时工作,甚至可以与几个外设同时工作。
(2)计算机实现对控制对象的实时处理。
(3)计算机可以对故障自行处理。
18、8086可屏蔽中断请求输入信号线是什么?
“可屏蔽”的涵义是什么?
答:
可屏蔽中断请求输入线为INTR;“可屏蔽”是指该中断请求可经软件清除标志寄存器中IF位而被禁止。
19、简述CPU响应外部可屏蔽中断的前提条件是什么?
答:
有中断源申请、无内部中断、中断系统是开放的20、什么是中断向量,中断向量表在内存中的地址范围是什么?
答:
中断向量是指中断处理程序的入口地址;中断向量表的地址范围:
00000H003FFH,21、什么叫中断向量表,在8086系统中,中断向量表存放在内存的什么位置,容量有多大?
答:
把不同中断类型号对应的中断服务程序入口地址排列起来,形成的表称为中断向量表;存放在存储器最开始的一段空间内;容量为1KB。
22、8086CPU主要能处理哪些类型的中断,这些中断的优先级是如何排列的。
答:
内部中断和外部中断,内部中断包括内部硬中断和内部软中断,外部中断包括可屏蔽和不可屏蔽中断。
中断优先级为:
内部中断不可屏蔽中断可屏蔽中断单步中断,23、编写中断类型号为10的中断向量设置程序(假设中断服务程序名为INT_10),方法一:
MOVAX,0MOVES,AXMOVDI,40MOVAX,OFFSETINT_10CLDSTOSWMOVAX,SEGINT_10STOSW,方法二:
MOVAX,0MOVDS,AXMOVBX,40MOVAX,OFFSETINT_10MOVBX,AXMOVAX,SEGINT_10MOVBX+2,AX,三、程序分析题,1、MOVAL,85HMOVX1,0MOVX2,0MOVCX,8L0:
SHLAL,1JCL1INCX1JMPL2L1:
INCX2L2:
LOOPL0,程序中X1和X2是字节变量,
(1)分析程序实现的功能。
(2)程序执行后,X1和X2的值分别是多少?
答:
(1)统计AL中0和1的个数,分别放在X1和X2中。
(2)X1=5;X2=3,2、INAL,5FH;TESTAL,80H;JZL1;MOVAH,0JMPSTOPL1:
MOVAH,0FHSTOP:
HALT,从地址为5F的端口读入1个字节送ALAL与80H相与,但不回送结果,只影响标志位的值若状态标志Z为1,跳转至L1运行
(1)在横线处写明语句实现的功能。
(2)分析程序实现的功能。
功能:
若从地址为5F的端口外围设备读入的字节最高位为0则AH=0FH,否则AH=0,3、MOVAX,0MOVBX,1MOVCX,100L1:
ADDAX,BXINCBXDECCXJNZL1,
(1)分析程序实现的功能。
(2)程序执行后,AX、BX、CX的值分别是多少?
答:
(1)计算1+2+3+100的值,最终保存在AX中;
(2)AX=5050BX=101CX=0,4、STRDBCOMPUTERMOVCX,8MOVAL,1LEABX,STR;(a)L1:
CMPBYTEPTRBX,U;(b)JZL2INCBXINCALLOOPL1L2:
HALT,
(1)在横线处写明语句实现的功能。
答:
(a)将STR变量的首地址送BX(b)比较BX间接寻址的字节是否等于U
(2)分析程序实现的功能,并说明执行完后,AL寄存器的值。
答:
计算字母U在字符串中出现的位置,AL=5,5、分析填空MOVAX,00H;PUSHAX;POPBX;MOVAX,3F5FH;MOVCX,4RORAL,CL;ANDAL,0FH;,答:
执行后AX=00H执行后AX=00H执行后BX=00H执行后AL=5FH执行后AL=0F5H执行后AL=05H,6、若STR是字符串的首地址,指出下列程序的功能,并将语句加上注解。
LEABX,STR;取STR的偏移量放到BX中MOVCX,20;_设置循环次数_LP:
CMPBX,*JNZNEXT;BX所指单元内容不为*,则转移至NEXTMOVBX,$;将BX所指单元用$替代NEXT:
INCBX;BX加1,指向下一个单元LOOPLP;CX-1不等于0则转移至LP处,继续循环HLT程序的功能:
将STR开始的前20个字符中的*用$替代,四、编程题,1、从BLOCK开始有一个字节型数组,共有15个元素,编写完整汇编源程序,计算这个数组中奇数的个数,并将结果存入内存SUM单元。
2、从BUF开始有一个字节型数组,共有100个元素,编写完整汇编源程序,计算这个数组中负数的个数,并将结果存入内存COUNT单元。
3、从BUF开始,存放10个带符号的字节数据,编写完整汇编源程序,找出该数据区中的最大数,并将其存放至内存单元MAX中。
(答案略),1.右图为8088CPU和某存储器电路连接图,请回答以下问题:
(1)将CPU的信号线与存储器相连。
(2)存储器是什么类型(RAM、ROM)?
总容量为多少?
各存储芯片的地址范围分别是多少?
五、存储器扩展题,答:
1)CPU与存储器的连接如右图所示。
2)存储器类型为:
RAM;总容量为4K8;地址范围:
0#2000H-27FFH1#2800H-2FFFH,1、INTEL8255A接口芯片
(1)现给出INTEL8255A的应用电路如下,系统分配给8255的地址为60H63H。
试分析该电路中8255的A、B口分别是作为输入口,还是输出口?
(2)现给出8255A工作方式控制字格式如下,请编写程序片段对8255进行初始化,并读取电路中的开关量,用LED发光二极管显示其对应的开关状态(注:
LED显示器“亮”,表示开关“断开”)。
六、输入输出接口题,解答:
(1)A口作为输入口,B口作为输出口
(2)初始化:
A口作为输入口,B口作为输出口,均工作于方式0,则控制字为:
90H(不唯一)参考程序片段:
MOVAL,90HOUT63H,ALINAL,60HOUT61H,AL,2、根据下面的接口电路图,回答下列问题:
(1)这是一个什么接口电路图?
答:
查询式输入接口电路图
(2)写出下列芯片的名称或功能(锁存、缓冲):
U1:
锁存器U2:
三态缓冲器(或三态门)(3)电路图中的1、2、3、4、应接到何处?
写出符号。
答:
1.2.M/3.地址线A15A04.,Theend!
温馨提示:
考试时请带学生证和重修证!
谢谢!
指令系统程序设计举例,例1:
从存储器中取数的基本方法执行下列指令后,AX寄存器中的内容是什么?
TABLEDW10,20,30,40,50ENTRYDW3.MOVBX,OFFSETTABLE;取数据串偏移地址ADDBX,ENTRY;BX=BX+3MOVAX,BX;物理地址=DS16+(BX)答案:
(AX)=40,此例中要注意:
1)TABLE和ENTRY的标号意义,这里为数据串的偏移地址的首地址。
2)从存储器中取数据必须要知道数据在那个段和它的偏移地址。
3)得到偏移地址有两条指令4)如果数据在ES或SS段时,指令中段前缀的用法,如果数据串定义在ES段中TABLEDW10,20,30,40,50ENTRYDW3.MOVBX,OFFSETTABLE;取数据串偏移地址ADDBX,ESENTRY;BX=BX+3MOVAX,BX;物理地址=ES16+(BX)答案:
(AX)=40,此例中要注意:
1)TABLE和ENTRY的标号在程序中只能出现一次,在段定义中已经指明在ES段中。
例2:
在使用中容易出错的指令用法指出下列指令的错误:
MOVAH,BX;源、目的字长不一致
(2)MOVSI,BX;源、目的不能同时为存贮器寻址方式(3)MOVAX,SIDI;基址变址方式不能有SI和DI的组合(4)MOVAX,BXBP;基址变址方式不能有BX和BP的组合(5)MOVBX,ES:
AX;AX不能作为基址寄存器使用,而且源、目的不能同时为存贮器寻址方式(6)MOVBYTEPTRBX,1000;1000超出一个字节的表数范围(7)MOVAX,OFFSETSI;OFFSET只用于标号(8)MOVCS,AX;CS不能作为目的寄存器(9)MOVDS,BP;段地址不能直接送入数据段寄存器,例3:
推断指令的执行结果DATASEGMENTTABADW1234HDATAENDS.MOVBX,TABALEABX,TABA请写出上述两条指令执行后,BX寄存器中的内容。
答案:
MOVBX,TABA;执行后(BX)=1234H,内存中的数据LEABX,TABA;执行后(BX)=OFFSETTABA,偏移地址,例4多字节加法的程序设计变量DATAX和DATAY定义如下:
DATAXDW0148HDW2316HDATAYDW0237HDW4052H按下述要求写出指令序列:
DATAX和DATAY中的两个字数据相加,和存放在DATAY和DATAY+2中。
实现的运算为:
23160148H+40520237H=?
MOVAX,DATAX;取第一个要加数的低字ADDAX,DATAY;与第二个数低字相加,结果在AX中MOVBX,DATAX+2;取第一个数要加的数的高字ADCBX,DATAY+2;与第二个数高字相加,结果在BX中MOVDATAY,AXMOVDATAY+2,BX;保存和,注意地址为2个字节在编程时要考虑到低字相加后产生的进位,例5:
乘法指令应用(无符号)两个16变量DATAY和DATAX定义如下:
DATAYDW0148H;ADW2316H;BDATAXDW0237H;CDW4052H;DRESULTDW12DUP(0)按下述要求写出指令序列:
DATAY和DATAX两个字相乘(用MUL)。
ABCDEFGHHGFEDCBANNNNNNNNNMMMMMMMMMAAAAAAAAABBBBBBBBBCCCCCCCCCDDDDDDDDDEEEEEEEEEFFFFFFFFFXXXXXXXXXXXXXXXXX,ABCDEFGHHGFEDCBANNNNNMMMMMAAAAABBBBBDX(0)AX(0)ABCDEFGHHGFEDCBACCCCCDDDDDEEEEEFFFFFDX
(1)AX
(1),字相乘后位相加的要求,MOVAX,WORDPTRDATAX;取乘数第一个字MOVBX,WORDPTRDATAY;取被乘数第一个字MULBX;(AC)MOVRESULT,AX;结果低字AX(0)MOVRESULT+2,DX;结果高字DX(0)MOVAX,WORDPTRDATAX;取乘数第一个字MOVAX,WORDPTRDATAY+2;取被乘数第二个字MULBX;(AD)MOVRESULT+4,AX;结果低字AX
(1)MOVRESULT+6,DX;结果高字DX
(1),MOVAX,WORDPTRDATAX+2;取乘数第二个字MOVBX,WORDPTRDATAY;取被乘数第一个字MULBX;(BC)MOVRESULT+8,AX;结果低字AX
(2)MOVRESULT+10,DX;结果高字DX
(2)MOVAX,WORDPTRDATAX+2;取乘数第二个字MOVBX,WORDPTRDATAY+2;取被乘数第一个字MULBX;(BD)MOVRESULT+12,AX;结果低字AX(3)MOVRESULT+14,DX;结果高字DX(3),MOVAX,RESULT+2MOVBX,RESULT+4MOVDX,RESULT+8ADDAX,BXADCAX,DX;DX(0)+AX
(1)+AX
(2)MOVRESULT+2,AXMOVAX,RESULT+6MOVBX,RESULT+10MOVDX,RESULT+12ADCAX,BXADCAX,DX;DX
(1)+DX
(2)+AX(3)MOVRESULT+4,AXMOVAX,RESULT14ADCAX,0000H;DX(3)+CMOVRESULT6,AX,例6:
移位指令应用试分析下面的程序段完成什么操作?
MOVCL,04SHLDX,CL;DX左移4位。
左移次数CL中的数MOVBL,AHSHLAX,CL;AX左移4位SHRBL,CL;BL右移4位答案:
将DX、AX中的字左移4位,BL右移4位,例7:
变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1与N2之差的指令序列。
非压缩BCD码格式:
0000XXXXHMOVAX,0;(MOVAH,00H)AX高8位清0MOVAL,N1;取个位数SUBAL,N2;个位减AAS;非压缩的BCD数的减法结果进行调整MOVDL,AL;将正确结果保存在DL中MOVAL,N1+1;取十位数SBCAL,N2+2;十位减,考虑个位有借位AAS;非压缩的BCD数的减法结果进行调整MOVDH,AL;将正确结果保存在DH中,例8:
假设(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的值。
SBBAX,BX;2060H-3000H(AX)=F05FH,(SF)=1,(ZF)=0,(OF)=0,(CF)=1,假设(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的值。
(2)CMPAX,WORDPTRSI+0FA0H;2060H-A006H目的操作数的地址:
DS16+SI+0FA0H=40000H+2060+0FA0=43000H执行此指令后AX中的内容不变!
只影响标志位!
2060H-A006H0010000001100000-10100000000001100010000001100000+01011111111110101000000001011010结果:
(SF)=1,(ZF)=0,(OF)=1,(CF)=1OF=1两数符号相反(正数-负数、或负数-正数),而结果符号与减数相同。
OF=0同符号数相减时或不同符号数相减,而结果符号与减数不相同。
假设(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的值。
(