微机组成原理习题集带答案五Word文档格式.docx
《微机组成原理习题集带答案五Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机组成原理习题集带答案五Word文档格式.docx(51页珍藏版)》请在冰点文库上搜索。
MOVAX,BX
AA1:
HLT
5.要求从外设71号中取一个数M,判断其值是否在10和20之间,即10≤M<
20.如果M≥20H,则送0FFH给外设73H;
如果M<
10,则送00H给外设73H;
如果10≤M<
20,则送88H给外设73H.
。
要求编写完整源程序实现上述功能(9分)
答:
程序如下:
;
---------程序段定义,不可省略
C1SEGMENT
START:
INAL,71H
CLC
CMPAL,10
JCLP1
CMPAL,20
JCLP2
MOVBL,0FFH
LP3:
MOVAL,BL
OUT73H,AL
INT21H
MOVAH,4CH
LP1:
MOVBL,00
JMPLP3
LP2:
MOVBL,88H
C1ENDS
ENDSTART
6.编一程序段,要求实现:
求两个多字节数之和,这两个数在10050H地址开始的内存单元中,连续存放,低位在小地址一端,结果放在这两个数之后。
设这两个多字节数均为8个字节。
(8分)
MOVAX,1000H
MOVDS,AX
MOVSI,50H
MOVDI,58H
MOVBX,60H
MOVCX,4
AA:
MOVAX,[SI]
ADCAX,[DI]
MOV[BX],AX
PUSHF
ADDSI,2
ADDDI,2
ADDBX,2
POPF
LOOPAA
HLT
7.要求编写完整源程序实现:
求1+2+3+·
·
+100的和,并将累加和保存在AX中。
(7分)
------堆栈段定义,本段定义可省略
S1SEGMENTSTACK
DB100DUP(0)
S1ENDS
ASSUME:
CS:
C1,SS:
S1
MOVCX,64H;
即将100给CX
XORAX,AX
CLC
A1:
ADCAX,CX
LOOPA1
MOVAH,4CH
INT21H
C1ENDS
ENDSTART
8.
以NUM为首址的存储区中存有若干个字型数,其长度存于NUM1字节单元。
求出数据中的最大值,存入NUM2字单元。
MOVSI,OFFSETNUM
MOVCX,NUM1
AA2:
AA3:
INCSI
CMPAX,[SI]
JCAA2
LOOPAA2
9.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“1”的个数,统计结果送CX中
解答:
START:
MOVCX,0
LOOP:
SUBAX,0
JZSTP
SALAX,1
JNCNOD
INCCX
NOD:
JMPLOOP
STP:
10.编一程序段,完成符号函数(-128≤x≤127):
1(x.>
0)
y=0(x=0)
-1(x<
假设x的值存放在DATAl中,y的值存放在DATA2中。
解答:
MOVAL,DATA1
ANDAL,AL
JGEBIGR
MOVAL,0FFH
MOVDATA2.AL
BIGR:
JEEQUL
MOVAL,1
MOVDATA2,AL
HLT
EQUL:
MOVDATA2,AL
9-1.编一程序段,实现下列功能
MOVAX,X
CMPAX,0
JGEAA1
MOVBL,0AH
JMPAA3
AA1:
JZAA2
MOVAL,01H
JMPAA3
MOVAL,0H
MOVY,AL
11.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X,Y和Z。
试编制一完整的程序计算
XX+Y+Z
X-SEGSEGMENT
XDW?
X-SEGENDS
Z-SEGSEGMENT
ZDW?
Z-SEGEMDS
Y-SEGSEGMENT
YDW?
Y-SEGENDS
CODESEGMENT
MAINPROCFAR
ASSUMEES:
Y-SEG,CS:
CODE,DS:
X-SEG,SS:
Z-SEG
STARTPUSHDS
SUBAXAX
PUSHAX
MOVAX,Y_SEG
MOVES,AX
MOVAX,Z_SEG
MOVSS,AX
MOVAX,X_SEG
MOVDS,AX
MOVAX,DS:
X
MOVBX,ES:
Y
ADDAXBX
JOOVERFLOW
MOVBX,SS:
Z
ADDAX,BX
MOVDS:
X,AX
OVERFLOW:
RET
MAINENDP
CODEENDS
12.读下面程序段,请问:
在什么情况下,本段程序的执行结果是AH=0?
BEGIN:
INAL,5FH
TESTAL,80H
JZBRCHl
MOVAH,0
JMPSTOP
BRCHl:
MOVAH,0FFH
STOP:
AL中的最高位为1时。
13.读程序:
START:
INAL,20H
MOVBL,AL
INAL,30H
MOVCL,AL
MOVAX,0
ADLOP:
ADDAL,BL
ADCAH,0
DECCL
JNZADLOP
请问:
(1)本程序实现什么功能?
(2)结果在哪里?
完成20H*30H,结果在AX中。
14.请编一程序段完成AX*l0的任务(要求不准用乘法指令做)。
MOVBX,AX
MOVCL2
SHLAX,CL
ADDAX,BX
SHLAX,1
15.编程序使:
(1)AX寄存器低4位清零。
(2)BX寄存器低4位置“1”。
(3)CX寄存器低4位变反。
(4)用TEST指令测试DL寄存器位3、位6是否同时为0,若是,将0送DL;
否则l送DH。
解答:
1,ANDAX,0FFF0H
2,ORBX,000FH
3,XORCX,000FH
4,TESTDL,48H
JZLOOP
MOVDH,1
LOOP:
MOVDL,0
10.设一子程序求两个多字节数FIRST与SECOND之和,结果放在THIRD中,设这两个多字节数均为4个字节长
ADDSUBPROC
PUSHF
PUSHAX
PUSHBX
PUSHCX
PUSHSI
PUSHDI
LEASI,FIRST
LEADI,SECOND
LEABX,THIRD
MOVCX,2
ADCAX,[DI]
MOV[BX],AX
ADDSI,2
ADDDI,2
ADDBX,2
POPF
POPDI
POPSI
POPCX
POPBX
POPAX
ADDSUBENDP
八、接口芯片的综合编程题
(一)8255A
1.若要求从8255A的A端口输出数据82H,请编写8255A的初始化程序和数据输出程序。
现已知A口地址为80H,B口地址为81H,C口地址为82H,控制字寄存器地址为83H,8255A的方式控制字各位的含义如下表:
D7
D6
D5
D4
D3
D2
D1
D0
1
00:
端口A工作于方式0
01:
端口A工作于方式1
10、11:
端口A工作于方式2
0:
端口A输出
1:
端口A输入
C4~C7输出
C4~C7输入
端口B工作于方式0
端口B工作于方式1
端口B输出
端口B输入
C0~C3输出
C0~C3输入
参考程序如下:
MOVAL,10000000B;
置工作方式字,只要求了A是输出,其它任意,故都选用基本
;
工作方式
OUT83H,AL;
输出工作方式控制字到控制端口地址
MOVAL,82H;
将要输出的数值先给AL;
OUT80H,AL;
将数值送到A端口,其地址号为80H
2:
若A口方式2要求发两个中断允许,即PC4和PC6均需置位。
B口方式1要求使PC2置位来开放中断。
,8255的端口地址为60--63H,请写出其初始化程序。
MOVAL,0C4H
OUT63H,AL ;
设置工作方式
MOVAL,09H;
PC4的置位控制字为00001001,即09H
PC4置位,A口输入允许中断
MOVAL,0DH;
PC6的置位控制字为00001101,即0DH
PC6置位,A口输出允许中断
MOVAL,05H;
PC2的置位控制字为00000101,即05H
PC2置位;
B口输出允许中断
3某系统要求使用8255A的A口方式0输入,B口方式0输出,C口高4位方式0输出,C口低4位方式0输入,8255的端口地址为60--63H。
请写出其初始化程序。
则控制字为:
10010001即91H
初始化程序为:
MOVAL,91H
OUT63H,AL
4:
若8255端口A工作于方式0输出,端口B工作于方式1输入,用PC2置位来自动开启STB选通信号,;
请写其初始化程序!
初始化8255A:
MOVDX,8255_CTRL;
8255A控制端口地址送DX
MOVAL,86H;
把所设的控制字送给AL
OUTDX,AL;
再将控制字从AL送到8255的控制端口;
MOVAL,05H;
把PC2置位的控制字00000101,即05H送给AL
MOVDX,AL;
置PC2=1,允许中断
5:
设8255A的控制口地址为00EEH,要求对端口C的PC7置1,则控制字00001111B=0FH,要求对端口C的PC3置0,控制字为00000110B=06H。
下面的程序可以实现上述要求:
MOVAL,0FH;
对PC7置1的控制字
MOVDX,00EEH;
控制口地址送DX
OUTDX,AL;
对PC7置1操作
MOVAL,06H;
对PC3置0的控制字
对PC3进行置0的操作
6.编一初始化程序,使8255A的PC5端输出一个负跳变。
如果要求PC5端输出一个负脉冲则初始化程序又是什么情况?
初始化程序:
MOVAL,0BH;
PC5置“1”控制字→AL
MOVDX,×
×
11B;
控制口地址→DX
OUTDX,AL;
置“1”控制字→控制寄存器
MOVAL,0AH;
PC5置“0”控制字→AL
置“0”控制字→控制寄存器
如果要求PC5输入一个负脉冲则再加两条指令
MOVAL,0BH
OUTDX,AL
7.设8255A与8086CPU相连,8255A芯片A口工作在方式1输出,B口工作在方式0输入,禁止A口中断,8255A芯片A口、B口、C口、控制口地址分别为FFF8H、FFFAH、FFFCH、FFFEH,请写出初始化程序。
本题没有告诉C口高4位与低4位的出入补充为C口高4位与低4位均为输出,则其控制字为10100010B=0A2H
MOVAL,0A2H
MOVDX,0FFFEH
OUTDX,AL
8.设8255端口地址为50H~56H中的偶地址,并设端口A工作在方式0输入,端口B工作在方式1输出,允许B口中断,端口C输出,对8255初始化编程。
其控制字为:
10010100B=0A4H
MOVAL,0A4H
OUT56H,AL
补充题:
假设8255A工作于方式0,且端口A和端口C的高4位输出,端口B和端口C低4位输入,设置该8255A的方式选择控制字,并进行初始化编程。
并写出从8255A的A端口输出数据7FH的数据输出程序语句。
已知A口地址为60H,B口地址为61H,C口地址为62H,控制字寄存器地址为63H,8255A的方式控制字各位的含义如下表:
(本题10分)
(二)8259A
1.某系统中设置三片8259A级联使用,一片为主8259A;
两片为从8259A;
它们分别接入主8259A的IR2和IR6端。
若已知当前主8259A和从8259A的IR3上各接有一个外部中断源,它们的中断类型码分别为A0H,B0H和C0H,已知它们的中断入口均在同一段中,其段基址为2050H,偏移地址分别为11A0H,22B0H和33C0H,所有中断都采用电平触发方式、完全嵌套、普通EOI结束,请
(1)画出它们的硬件连接图;
(2)编写全部初始化程序。
初始化程序:
MOVAL,19H
MOVDX,偶地址(主)
OUTDX,AL
MOVAL,0A0H
MOVDX,奇地址(主)
MOVAL,44H
MOVAL,11H
MOVAL,0B3H
MOVAL,22H
MOVDX,偶地址(主)
MOVAL,19H
MOVDX,偶地址(从1)
MOVAL,0B0H
MOVDX,奇地址(从1)
MOVAL,02H
MOVAL,0F7H
从2:
MOVAL,19H
MOVDX,偶地址(从2)
MOVAL,0C0H
MOVDX,奇地址(从2)
MOVAL,06H
STI
HH:
JMP11H
2.编一系统初始化程序,由8259A的IR0~IR4共五个中断源,中断类型码为4BH,4CH,4DH,4EH,4FH。
8259A端口地址为80H、81H。
允许它们以完全嵌套方式工作。
STT:
MOVAL,11H
MOVDX,80H
OUTDX,AL
MOVAL,4BH
MOVDX,81H
MOVAL,01H
MOVAL,0D0H
MOVAL,20H
(三).其它端口编程题
1.设状态端口地址为76H,数据端口地址为75H,外部设备是否准备好信息由D7位传送,D7=1为准备好,D7=0为未准备好(忙),请用查询方式写出:
CPU向外部传送数据的程序段。
LOP1:
INAL,76H
TESTAL,10H
JZLOP1;
测试语句准确(4分)
MOVAL,DATA
OUT75H,AL;
输出语句准确(4分)
HLT
一、选择题(单选或多选,每小题1分,共5分)
1.指令指针寄存器(EIP)中存放的是___D_____。
A.当前指令B.下一条要执行的指令
C.操作数地址D.下一条要执行指令的地址
2.MOVAX,[BX+SI]的源操作数的物理地址是___A_____。
A.(DS)×
16+(BX)+(SI)B.(ES)×
16+(BX)+(SI)
C.(SS)×
16+(BX)+(SI)D.(CS)×
3.对于下列程序段:
AGAIN:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
INCDI
LOOPAGAIN
也可用指令____.A____完成同样的功能。
A.REPMOVSBB.REPLODSB
C.REPSTOSBD.REPESCASB
注:
1.命题纸上一般不留答题位置,试题请用小四、宋体打印且不出框。
2.命题教师和审题教师姓名应在试卷存档时填写。
共4页第1页
成
绩西北工业大学命题专用纸
4.将累加器AX的内容清零的正确指令是_____A,B,C___。
A.ANDAX,0B.XORAX,AX
C.SUBAX,AXD.CMPAX,AX
5.可作简单输入接口的电路是____.A___。
A.三态缓冲器B.锁存器
C.反相器D.译码器
6.计算机中常用的BCD码C
A.是二进制数B.是十六进制数
C.是二进制编码的十进制数D.是不带符号数的二进制形式
7.将字变量ARRAY的偏移地址送寄存器BX的正确结果是___A_C___。
A.LEABX,ARRAYB.MOVBX,ARRAY
C.MOVBX,OFFSETARRAYD.MOVBX,SEGARRAY
8.将累加器AX的内容清零的正确指令是___A、B、C_____。
9.在汇编过程中不产生指令码,只用来指示汇编程序如何汇编的指令是___C__。
A.汇编指令B.机器指令
C.伪指令D.宏指令
10和外存相比,内存的特点是___A_____。
A.容量小、速度快、成本高B.容量小、速度快、成本低
C.容量大、速度快、成本高D.容量大、速度快、成本低
11.可作简单输入接口的电路是__A_____。
12,.对于掉电的处理,CPU是通过____C____来处理的。
A.软件中断B.可屏蔽中断
C.非屏蔽中断D.DMA
13,已知中断类型号为14H,它的中断向量存放在存储器的向量单元___A、C_____中。
A.00050H,00051H,00052H,00053H
B.00056H,00057H,00058H,00059H
C.0000:
0050H,0000:
0051H,0000:
0052H,0000:
0053H
D.0000:
0056H,0000:
0057H,0000:
0058H,0000:
0059H
14.一个8位D/A转换器的分辨能力可以达到满量程的___B____。
A.1/8B.1/256
C.1/16D.1/32
15.关于ADC0809,下列哪些说法正确:
B、C
A.只能接一个模拟量输入
B.可以接8个模拟量输入
C.某时刻只对一个模拟量采样
D.同时对8个模拟量采样
二、填空题(每空1分,共25分)
1.已知X=68,Y=12,若用8位二进制数表示,则[X+Y]补=_01010000B________,此时,OF=___0________;
[X-Y]补=___00111000B_____。
2.80486CPU的分页部件把____线性_______地址变为_____物理______地址。
3.80486CPU的工作方式有___实方式______保护方式____虚拟8086方式________。
4.串操作指令规定源串在_____数据____段中,用____(E)SI_____来寻址源操作数;
目的串在_____附加___段中,用_____(E)DI_____来寻址目的操作数。
5.以CX寄存器内容为计数对象的指令有____循环控制指令、串操作重复指令_。
6.输入/输出指令间接寻址必须通过___DX_____寄存器。
7.80486直接可以访问的内存空间是__4G___B,它的一段最大空间是__4G___B,一页空间是__4K___B。
8.CPU与外设传送数据时,输入/输出方式有____程序控制传送方式____,____中断控制传送方式______,___DMA方式________,_____I/O处理机方式______。
9.硬件中断可分为__可屏蔽中断_______和____非屏蔽中断_____两种。
10.8259A有____7_个命令字,3片8259A接成级联可管理____22___级中断。