《微机原理与接口》习题及参考答案 周明德第五版.docx
《《微机原理与接口》习题及参考答案 周明德第五版.docx》由会员分享,可在线阅读,更多相关《《微机原理与接口》习题及参考答案 周明德第五版.docx(11页珍藏版)》请在冰豆网上搜索。
学习资料收集于网络,仅供参考
《微机原理与接口》课程习题及参考答案
2012年秋季
第一章习题(教材P29) 作业1
1.1微处理器、微型计算机和微型计算机系统三者之间有什么不同?
【解】把CPU(运算器和控制器)集成在一个芯片上,即为微处理器。
微处理器加上部分存储器和外设(或外设接口)就构成了微型计算机。
微型计算机与管理、维护计算机硬件以及支持应用的软件相结合就形成微型计算机系统。
1.2CPU在内部结构上由哪几部分组成?
CPU应该具备哪些主要功能?
【解】CPU主要由算术逻辑单元、指令寄存器、指令译码器、可编程逻辑阵列、寄存器组、标志寄存器等组成。
CPU主要功能是进行算术逻辑运算,以及控制计算机按照程序的规定自动运行。
1.3微型计算机采用总线结构有什么优点?
【解】采用总线结构,扩大了数据传送的灵活性,减少了连线;而且总线可以标准化,易于兼容和工业化生产。
1.4数据总线和地址总线在结构上有什么不同之处?
如果一个系统的数据和地址合用一组总线或者合用部分总线,那么要靠什么来区分地址和数据?
【解】数据总线是双向的,地址总线是单向的。
采用数据和地址线复用,主要靠信号的时序来区分。
通常在读写数据时,在复用的总线上先输出地址信息,然后再传送数据。
第二章习题(教材P43)作业2
2.98086的基本程序执行寄存器是由哪些寄存器组成的?
【解】8086的基本程序执行寄存器组成如下:
⑴8个通用寄存器:
可用于存放操作数和指针。
⑵4个段寄存器:
保存段基值(或段选择子)。
⑶1个标志寄存器:
保存状态位和控制标志位。
⑷1个指令指针寄存器:
存放下一条要执行的指令的指针。
2.13如何形成指令中的各种条件码?
【解】指令中的条件码,即标志寄存器中的状态标志。
它们主要由算术和逻辑运算指令设置或清除。
也有设置和清除某些状态标志位的专用指令。
2.16段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?
【解】指令的物理地址=1200H×16+FF00H=21F00H2.178086微处理器的执行部件有什么功能?
由哪几部分组成?
【解】8086微处理器的执行部件负责指令的执行。
它主要由算术逻辑单元、标志寄存器和通用寄存器等部分组成。
第三章习题1(教材P87) 作业3
3.118086汇编语言指令的寻址方式有哪几类?
哪一种寻址方式的指令执行速度最快?
【解】寻址方式分为:
立即数寻址、寄存器寻址和存储器寻址方式。
其中,寄存器寻址方式的指令执行速度最快。
3.12在直接寻址方式中,一般只指出操作数的偏移地址,那么段地址如何确
学习资料
定?
如果要用某个段寄存器指出段地址,在指令中应该如何表示?
【解】默认的数据访问,操作数在DS段;堆栈操作数在SS段;串操作的源操作数(SI)在DS段,目的操作数(DI)在ES段。
如果要显式地指定段地址,则在操作数中规定段寄存器(段超越)。
例如:
MOVAX,ES:
[1000H]
3.13在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,那么如何确定段地址?
【解】根据所使用的寄存器,隐含地规定了默认的段寄存器。
IP:
默认CS段;
SP、BP:
默认SS段;AX、BX、CX、DX、SI、DI:
默认DS段。
允许段超越,例如:
MOVES:
[BX],AX
第三章习题2(教材P86~P87) 作业4
3.1分别指出下列指令中的源操作数和目的操作数的寻址方式。
(1)MOVSI,300(3)ADDAX,[BX][SI]
【解】
(1)SOPD是立即数寻址,DOPD是寄存器寻址。
(3)SOPD是基址加变址寻址,DOPD是寄存器寻址。
3.2试述指令MOVAX,2000H和MOVAX,DS:
[2000H]的区别。
【解】前一条指令是立即数寻址,即将立即数2000H送至AX;后一条指令是存储器直接寻址,是将存储器DS:
[2000H]单元中的内容送至AX。
3.4判断下列指令书写是否正确。
(1)MOVAL,BX(4)MOV5,AL
【解】
(1)不正确,AL与BX数据宽度不同
(4) 不正确,立即数不能作为目的操作数。
3.5设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H,试问:
(1)执行指令PUSHAX后,SP的值是多少?
(2)再执行PUSHBX及POPAX后,SP、AX和BX的值是多少?
【解】
(1)SP=0FFEH
(2)SP=0FFEH ,AX=3000H,BX=3000H
3.8用两种方法写出从80H端口读入信息的指令,再用两种方法写出从40H端口输出100H的指令。
【解】从80H端口读入信息的两种分法:
(1)INAL ,80H
(2)MOVDX,80H
INAL ,DX从40H端口输出100H的两种分法:
(1)MOVAX ,100H
(2)MOVAX,100H
OUT40H ,AXMOVDX,40H
OUTDX ,AX
第三章习题3(教材P88~P89) 作业5
3.23两种循环移位指令(带CF的和不带CF的)在执行操作时,有什么区别?
在编制乘、除法程序时,为什么常用移位指令来代替乘、除法指令?
试编写一个程序段,实现将BX中的数乘以10,结果仍放在BX中的操作。
【解】两种指令的区别在于是否把标志位的值放入循环中。
左移1位相当于乘2,右移1位除2。
故左移和右移可实现乘2和除2的幂,且移位指令比乘除指令快得多。
BX×10=BX×2+BX×8=BX×2+BX×23
SHLBX,1
MOVAX,BX;AX=BX×2SHLBX,1;BX×4
SHLBX,1;BX×8
ADDBX,AX;BX=BX×8+BX×2=BX×10
3.25用串操作指令设计实现如下功能的程序段:
首先将100H个数从2170H处转移到1000H处;然后,从中搜索出与AL中字符相等的单元,并将此单元的值换成空格符。
【解】
MOVSI ,2170H
MOVDI ,1000H
MOVCX ,100H
CLD
REPMOVSB
MOVDI,1000H
MOVCX ,100H
MOVAL ,‘*’NEXT:
SCASB
JZN1
LOOPNEXT
HLT
N1:
MOV[DI-1],20H
JMPNEXT
HLT
3.26在使用条件转移指令时,特别要注意它们均为相对转移指令,请解释“相对转移”的含义。
如果要向较远的地方进行条件转移,那么程序中应该怎样设置?
【解】相对转移即为相对于指令指针的转移。
通常,偏移量是8位数,是短转移;要向较远的地方进行条件转移,可以先转到附近,再无条件转向目的地。
3.29在执行中断返回指令IRET和普通子程序返回指令RET时,具体操作内容有什么不同?
【解】IRET除了弹出中断要返回的地址(CS和IP)外,还要恢复中断前的标志寄存器。
第四章习题1(教材P142~P143) 作业6
4.1在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:
MOVAL,10H;AL=01H
MOVCX,1000H;CX=1000HMOVBX,2000H;BX=2000HMOV[CX],AL;(1000H)=10H
XCHGCX,BX;BX=1000H,CX=2000HMOVDH,[BX];DH=10H
MOVDL,01H;DL=01H
XCHGCX,BX;BX=2000H,CX=1000H
MOV[BX],DL;(2000H)=01HHLT
【解】AL=10H;BX=2000H;CX=1000H;DX=1001H;
(1000H)=10H;(2000H)=01H
4.4利用变址寄存器,编写一段程序,把自1000H单元开始的100个数传送到自1070H开始的存储区中。
【解】
MOVSI,1000HMOVDI,1070HMOVCX,100CLD
REPMOVSBHLT
4.10把在题4.7中指定的数据块中的正数传送到自1000H开始的存储区;而把其中的负数传送到自1100H开始的存储区。
分别统计正数和负数的个数,分别存入1200H和1201H单元中。
【解】
MOVSI,0500HMOVDI,1000HMOVBX,1070HMOVCX,100MOVDX,0
N1:
MOVAL,[SI]
TESTAL,8000H ;测试符号位
JNZN2
MOV[DI],AL
INCDL;正数的个数计数INCSI
INCDIJMPN3
N2:
MOV[BX],AL
INCDH;负数的个数计数INCSI
INCBXN3:
LOOPN1
MOV[1200H],DXHLT
4.11自0500H单元开始,有10个无符号数,编写一个程序,求这10个数的和
(用8位数运算指令),把和放到050AH及050BH单元中(和用两个字节表示),且高位在050B单元。
【解】
MOVBX,0500HMOVAX,0
MOVCL,10
N1:
MOVDL,[BX]ADDAL,DLADCAH,0INCBX
DECCLJNZN1
MOV[050AH],AXHLT
第四章习题2(教材P143~P144) 作业7
4.18在0100H单元和010AH单元开始,存放两个各为10个字节的BCD数(地址最低处放的是最低字节),求它们的和,且把和存入0114H开始的存储单元中。
【解】
LEASI,[0100H]LEADI,[0114H]CLC
MOVCL,10N1:
MOVAL,[SI]
MOVBL,[SI+10]
ADCAL,BLDAA
MOV[DI],ALINCSI
INCDIDECCLJNZN1
4.28若从0200H单元开始有100个数,编写一个程序检查这些数,正数保持不变,负数都取补后送回。
【解】
LEABX,[0200H]
MOVCX,100CHE:
MOVAL,[BX]
ANDAL ,AL
JSMINUS
INCBX
JMPL1MINUS:
NEGAL
MOV[BX],AL
INCBXL1:
LOOPCHE
HLT
4.37若自0500H单元开始