微机组成原理复习练习题带答案六.docx
- 文档编号:8127692
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:18
- 大小:506.65KB
微机组成原理复习练习题带答案六.docx
《微机组成原理复习练习题带答案六.docx》由会员分享,可在线阅读,更多相关《微机组成原理复习练习题带答案六.docx(18页珍藏版)》请在冰豆网上搜索。
微机组成原理复习练习题带答案六
微机组成原理练习试题带答案
七、程序题
1.编制程序段,要求实现:
将0404H单元开始的256单元清零。
(6分)
答:
CLD;清方向标志
LEADI,0404H;DI指向字串地址
MOVCX,256;共256个字节
XORAX,AX;AX清零
REPSTOSB
HLT
2.程序分析题。
现有下列程序段:
(6分)
MOVSP,2000H
MOVAX,3000H
MOVBX,5000H
:
PUSHAX
PUSHBX
POPAX
试回答:
上述程序段执行后SP=___1FFEH______
(AX)=_____5000H______,(BX)=_____5000H______
3.程序分析题。
现有下列程序段:
(6分)
MOVAX,6540H
MOVDX,3210H
MOVCL,04
SHLDX,CL;DX=2100H
MOVBL,AH;BL=65H
SHLAX,CL;AX=5400H
SHRBL,CL;BL=06H
ORDL,BL;DL=06H,故DX=2106H
试问上述程序段运行后,
(AX)=__5400H___________
(BL)=____06H_________
(DX)=_____2106H________
4.请完成如下程序段,使它完成求|AX-BX|,结果放在AX的功能。
CMPAX,BX(1分)
JCAA(1分)
SUBAX,BX
JMPAA1(2分)
AA:
SUBBX(1分),AX(1分)
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
JMPLP3
C1ENDS
ENDSTART
6.编一程序段,要求实现:
求两个多字节数之和,这两个数在10050H地址开始的内存单元中,连续存放,低位在小地址一端,结果放在这两个数之后。
设这两个多字节数均为8个字节。
(8分)
答:
MOVAX,1000H
MOVDS,AX
MOVSI,50H
MOVDI,58H
MOVBX,60H
MOVCX,4
CLC
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
;---------程序段定义,不可省略
C1SEGMENT
ASSUME:
CS:
C1,SS:
S1
START:
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:
MOVAX,[SI]
AA3:
INCSI
CMPAX,[SI]
JCAA2
LOOPAA2
HLT
9.设AX寄存器中有一个16位二进制数,编一程序,统计AX中“1”的个数,统计结果送CX中
解答:
START:
MOVCX,0
LOOP:
SUBAX,0
JZSTP
SALAX,1
JNCNOD
INCCX
NOD:
JMPLOOP
STP:
HLT
10.编一程序段,完成符号函数(-128≤x≤127):
1(x.>0)
y=0(x=0)
-1(x<0)
假设x的值存放在DATAl中,y的值存放在DATA2中。
解答:
START:
MOVAL,DATA1
ANDAL,AL
JGEBIGR
MOVAL,0FFH
MOVDATA2.AL
HLT
BIGR:
JEEQUL
MOVAL,1
MOVDATA2,AL
HLT
EQUL:
MOVDATA2,AL
HLT
9-1.编一程序段,实现下列功能
MOVAX,X
CMPAX,0
JGEAA1
MOVBL,0AH
JMPAA3
AA1:
JZAA2
MOVAL,01H
JMPAA3
AA2:
MOVAL,0H
AA3:
MOVY,AL
HLT
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
JOOVERFLOW
MOVDS:
X,AX
OVERFLOW:
RET
MAINENDP
CODEENDS
ENDSTART
12.读下面程序段,请问:
在什么情况下,本段程序的执行结果是AH=0?
BEGIN:
INAL,5FH
TESTAL,80H
JZBRCHl
MOVAH,0
JMPSTOP
BRCHl:
MOVAH,0FFH
STOP:
HLT
解答:
AL中的最高位为1时。
13.读程序:
START:
INAL,20H
MOVBL,AL
INAL,30H
MOVCL,AL
MOVAX,0
ADLOP:
ADDAL,BL
ADCAH,0
DECCL
JNZADLOP
HLT
请问:
(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
HLT
LOOP:
MOVDL,0
HLT
10.设一子程序求两个多字节数FIRST与SECOND之和,结果放在THIRD中,设这两个多字节数均为4个字节长
答:
ADDSUBPROC
PUSHF
PUSHAX
PUSHBX
PUSHCX
PUSHSI
PUSHDI
LEASI,FIRST
LEADI,SECOND
LEABX,THIRD
MOVCX,2
CLC
AA2:
MOVAX,[SI]
ADCAX,[DI]
MOV[BX],AX
PUSHF
ADDSI,2
ADDDI,2
ADDBX,2
POPF
LOOPAA2
POPDI
POPSI
POPCX
POPBX
POPAX
POPF
RET
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输入
0:
C4~C7输出
1:
C4~C7输入
0:
端口B工作于方式0
1:
端口B工作于方式1
0:
端口B输出
1:
端口B输入
0:
C0~C3输出
1:
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
OUT63H,AL ;PC4置位,A口输入允许中断
MOVAL,0DH;PC6的置位控制字为00001101,即0DH
OUT63H,AL ;PC6置位,A口输出允许中断
MOVAL,05H;;PC2的置位控制字为00000101,即05H
OUT63H,AL ;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的控制字
OUTDX,AL;对PC3进行置0的操作
6.编一初始化程序,使8255A的PC5端输出一个负跳变。
如果要求PC5端输出一个负脉冲则初始化程序又是什么情况?
解答:
初始化程序:
MOVAL,0BH;PC5置“1”控制字→AL
MOVDX,××××××11B;控制口地址→DX
OUTDX,AL;置“1”控制字→控制寄存器
MOVAL,0AH;PC5置“0”控制字→AL
OUTDX,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)编写全部初始化程序。
解答:
初始化程序:
START:
MOVAL,19H
MOVDX,偶地址(主)
OUTDX,AL
MOVAL,0A0H
MOVDX,奇地址(主)
OUTDX,AL
MOVAL,44H
OUTDX,AL
MOVAL,11H
OUTDX,AL
MOVAL,11H
OUTDX,AL
MOVAL,0B3H
OUTDX,AL
MOVAL,22H
MOVDX,偶地址(主)
OUTDX,AL
MOVAL,19H
MOVDX,偶地址(从1)
OUTDX,AL
MOVAL,0B0H
MOVDX,奇地址(从1)
OUTDX,AL
MOVAL,02H
OUTDX,AL
MOVAL,11H
OUTDX,AL
MOVAL,0F7H
OUTDX,AL
MOVDX,偶地址(从1)
MOVAL,22H
OUTDX,AL
从2:
MOVAL,19H
MOVDX,偶地址(从2)
OUTDX,AL
MOVAL,0C0H
MOVDX,奇地址(从2)
OUTDX,AL
MOVAL,06H
OUTDX,AL
MOVAL,11H
OUTDX,AL
MOVAL,0F7H
OUTDX,AL
MOVDX,偶地址(主)
MOVAL,22H
OUTDX,AL
STI
HH:
HLT
JMP11H
2.编一系统初始化程序,由8259A的IR0~IR4共五个中断源,中断类型码为4BH,4CH,4DH,4EH,4FH。
8259A端口地址为80H、81H。
允许它们以完全嵌套方式工作。
解答:
STT:
MOVAL,11H
MOVDX,80H
OUTDX,AL
MOVAL,4BH
MOVDX,81H
OUTDX,AL
MOVAL,01H
OUTDX,AL
MOVAL,0D0H
OUTDX,AL
MOVAL,20H
MOVDX,80H
OUTDX,AL
HLT
(三).其它端口编程题
1.设状态端口地址为76H,数据端口地址为75H,外部设备是否准备好信息由D7位传送,D7=1为准备好,D7=0为未准备好(忙),请用查询方式写出:
CPU向外部传送数据的程序段。
(8分)
答:
LOP1:
INAL,76H
TESTAL,10H
JZLOP1;测试语句准确(4分)
MOVAL,DATA
OUT75H,AL;输出语句准确(4分)
HLT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 组成 原理 复习 练习题 答案