《微机原理及汇编语言》习题.docx
- 文档编号:8043409
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:52
- 大小:254.22KB
《微机原理及汇编语言》习题.docx
《《微机原理及汇编语言》习题.docx》由会员分享,可在线阅读,更多相关《《微机原理及汇编语言》习题.docx(52页珍藏版)》请在冰豆网上搜索。
《微机原理及汇编语言》习题
第1章概述
一、填空题
1.电子计算机主要由运算器、控制器、存储器、输入设备和输出设备等五部分组成。
2.运算器和控制器集成在一块芯片上,被称作CPU。
3.总线按其功能可分数据总线、地址总线和控制总线三种不同类型的总线。
二、简答题
1.简述微处理器、微计算机及微计算机系统三个术语的内涵。
答:
微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起决定性的影响。
微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组成的裸机系统。
微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。
三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。
2.微型计算机系统总线从功能上分为哪三类?
它们各自的功能是什么?
答:
微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。
地址总线用于指出数据的来源或去向,单向;数据总线提供了模块间数据传输的路径,双向;控制总线用来传送各种控制信号或状态信息以便更好协调各功能部件的工作。
三、选择题
1.下列无符号数中最小的数是(A)。
A.(01A5)HB.(1,1011,0101)BC.(2590)DD.(3764)O
2.下列有符号数中最大的数是(D)。
A.1002HB.1001001100101100BC.2570OD.9614D
3.在机器数(A)中,零的表示形式是唯一的。
A.补码B.原码C.补码和反码D.原码和反码
4.8位二进制数补码的数值表示范围为(A)。
A.-128~+127B.-127~+127
C.一129~+128D.-128~+128
第2章微处理器及其结构
一、填空题
1.8086/8088CPU执行指令中所需操作数地址由EU计算出16位偏移量部分送BIU,由BIU最后形成一个20位的内存单元物理地址。
2.用段基值及偏移量来指明内存单元地址的方式称为逻辑地址。
3.8086CPU使用16根地址线访问I/O端口,最多可访问64K个字节端口,使用20根地址线访问存储单元,最多可访问1M个字节单元。
4.CPU取一条指令并执行该指令的时间称为指令周期,它通常包含若干个总线周期,而后者又包含有若干个时钟周期。
二、单项选择题
1.某微机最大可寻址的内存空间为16MB,其CPU的地址总线至少应有(E)条。
A.26B.28C.20D.22E.24
2.8086/8088CPU中标志寄存器的主要作用是(D)。
A.检查当前指令的错误B.纠正当前指令执行的结果与错误
C.决定是否停机D.产生影响或控制某些后续指令所需的标志
3.指令指针IP的作用是(A)。
A.保存将要执行的下一条指令的地址B.保存CPU要访问的内存单元地址
C.保存运算器运算结果内容D.保存正在执行的一条指令
4.8086CPU有两种工作模式,最小模式的特点是(A)。
A.CPU提供全部控制信号B.由编程进行模式设定
C.不需要8282收发器D.需要总线控制器8288
三、简答题
1.8086/8088CPU分为哪两个部分?
如何协调工作?
答:
EU是执行部件,主要的功能是执行指令和形成有效地址。
BIU是总线接口部件,与片外存储器及I/O接口电路传输数据,主要功能是形成实际地址、预取指令和存取操作数。
EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。
EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。
2.8086/8088CPU的地址总线有多少位?
其寻址范围是多少?
答:
8086/8088CPU的地址总线共20位,最大可寻址1MB空间。
3.8086/8088CPU使用的存储器为什么要分段?
怎么分段?
答:
8086/8088为16位CPU,其内部的ALU、相关的地址寄存器(如SP、IP以及BX、BP、SI、DI)等都是16位的,因而对存储器地址的处理也只能是16位操作,即8086/8088的直接寻址能力在64KB范围内。
而实际上8086/8088有20条地址线,它的最大寻址空间为1MB。
这就产生了一个矛盾,即如何用16位的地址寄存器去表示一个20位的存储器物理地址?
实际使用的解决办法是:
将1MB大小的存储空间分为若干“段”,每段不超过64KB。
这样,一个20位的物理地址就可以用“16位段基址:
16位偏移量”的形式(称为逻辑地址)来表示了,其中段地址存放在8086/8088的段寄存器中。
4.8086/8088CPU中有几个通用寄存器?
有几个变址寄存器?
有几个指针寄存器?
通常哪几个寄存器亦可作为地址寄存器使用?
答:
8086/8088CPU中共有:
8个16位的通用寄存器AX、BX、CX、DX、BP、SP、SI、DI;
2个变址寄存器SI、DI;
2个指针寄存器BP、SP;
其中BX、BP、SI、DI亦可作地址寄存器。
5.什么是逻辑地址?
什么是物理地址?
它们之间有什么联系?
各用在何处?
答:
逻辑地址由两个16位的部分即段基址和偏移量组成,一般在程序中出现的地址都表示为逻辑地址形式;物理地址是一个20位的地址,它是唯一能代表存储空间每个字节单元的地址,一般只出现在地址总线上。
由于8086/8088CPU中的寄存器只有16位长,所以程序不能直接存放20位的物理地址,而必须借助逻辑地址,即用两个16位的寄存器来表示物理地址。
他们之间的关系是:
物理地址=段基址*16+偏移量;另外,一个物理地址可对应多个逻辑地址。
6.设现行数据段位于存储器0B0000H~0BFFFFH单元,DS段寄存器内容为多少?
答:
DS段寄存器内容为0B000H。
7.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C0E0H,求出该内存单元的物理地址。
答:
物理地址:
0C2EC0H。
8.怎样确定8086的最大或最小工作模式?
答:
引线
的逻辑状态决定8086的工作模式,
引线接高电平,8086被设定为最小模式,
引线接低电平,8086被设定为最大模式。
9.8086基本总线周期是如何组成的?
答:
基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。
10.有一个由20个字组成的数据区,其起始地址为610AH:
1CE7H。
试写出该数据区首末单元的实际地址PA。
首单元地址:
610A0H+1CE7H=62D87H
末单元地址:
62D87H+27H=62DAEH
11.有两个16位的字31DAH、5E7FH,它们在8086系统存储器中的地址为00130H和00135H,试画出它们的存储器示意图。
地址
内容
00130H
0DAH
00131H
31H
00132H
00133H
00134H
00135H
7F
00136H
5E
第3章8086CPU指令系统
一、判断题
1.MOVAX,[BP]的源操作数物理地址为16×(DS)+(BP)。
(×)
2.OUTDX,AL指令的输出是16位操作数。
(×)
3.不能用立即数给段寄存器赋值。
(√)
4.所有传送指令都不影响PSW寄存器的标志位。
(×)
5.堆栈指令的操作数均为字。
(√)
6.段内转移指令执行结果要改变IP,CS的值。
(×)
二、单项选择题
1.寄存器间接寻址方式中,操作数在(C)中。
A.通用寄存器B.I/O端口C.存储单元D.段寄存器
2.(A)寻址方式的跨段前缀不可省略。
A.DS:
[BP]B.DS:
[SI]C.DS:
[DI]D.SS:
[BP]
3.假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSHAX后,(SP)=(C)。
A.0014HB.0011HC.0010HD.000FH
4.用BP作基址变址寻址时,操作数所在的段是当前(C)。
A.数据段B.代码段C.堆栈段D.附加段
8.已知(SI)=0004H,(DS)=8000H,(80004H)=02H,(80005H)=C3H。
指令LEAAX,[SI]执行后(AX)=(C)。
A.0002HB.0005HC.0004HD.C302H
三、多项选择题
1.下列指令中源操作数使用寄存器寻址方式的有(BF)。
A.MOVBX,BUF[SI]B.ADD[SI+50],BX
C.SUBAX,2D.CMPAX,DISP[DI]
E.MULVAR[BX]F.PUSHCX
2.将累加器AX的内容清零的正确指令是(BCD)。
A.CMPAX,AXB.SUBAX,AX
C.ANDAX,0D.XORAX,AX
3.正确将字变量WORDVARR偏移地址送寄存器AX的指令是(CD)。
A.MOVAX,WORDVARRB.LESAX,WORDVARR
C.LEAAX,WORDVARRD.MOVAX,OFFSETWORDVARR
4.调用CALL指令可有(ABDE)。
A.段内直接B.段内间接C.短距离(SHORT)
D.段间直接E.段间间接
5.8086指令的操作数可能有(ABC)。
A.0B.1C.2D.3
四、填空题
1.与指令MOVBX,OFFSETBUF功能相同的指令是LEABX,BUF。
2.假设(BX)=0449H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=7230H则执行XCHGBX,[BP+SI]指令后,(BX)=7230H。
3.设有100个字节数据(补码),存放在数据段中EA=2000H的存储单元中。
以下程序应该从该数据区中找出最小的一个数据,并存入EA=2100H单元中,请将下面程序补充完整。
MIN:
MOVBX,2000H
MOVAL,[BX]
MOVCX,99
LOOP1:
INCBX
CMPAL,[BX]
JLELOOP2
MOVAL,[BX]
LOOP2:
DECCX
JNZLOOP1
MOV[2100H],AL
7.MOVAX,ES:
[BX][SI]中,源操作数的物理地址计算式是:
(ES)×16+(BX)+(SI)。
五、综合题
1.请指出以下各指令的源、目的操作数所使用的寻址方式。
(1)MOVSI,2100H
(2)SBBDISP[BX],7
(3)AND[DI],AX
(4)ORAX,[609EH]
(5)MOV[BX+DI+30H],CX
(6)PUSHES:
[BP]
答:
(1)源操作数:
立即数寻址;目的操作数:
寄存器寻址
(2)源操作数:
立即数寻址;目的操作数:
(带位移量的)基址寻址
(3)源操作数:
寄存器寻址;目的操作数:
变址寻址
(4)源操作数:
直接寻址;目的操作数:
寄存器寻址
(5)源操作数:
寄存器寻址;目的操作数:
(带位移量的)基址变址寻址
(6)源操作数:
带段超越的基址寻址;目的操作数:
隐含寻址
2.请指出下列各条指令的错误,并改正。
(1)ADDAX,[BX+BP+6]
(2)PUSHDL
(3)INAX,[3FH]
(4)OUT3FFH,AL
(5)POP[AX]
(6)SHLBX,5
(7)INT300
(8)XCHGDX,0FFFH
(9)MOVAH,BX
(10)MOVAX,OFFSET[SI]
(11)MOVCS,AX
(12)MOVDS,ES
答:
(1)不能同时使用两个基址寄存器BX、BP进行间接寻址,可改为:
ADDAX,[BX+DI+6]
(2)堆栈操作应以字为单位进行,而DL是一个字节。
可改为:
PUSHDX
(3)在输入/输出指令中,8位端口地址应直接写在操作数处。
可改为:
INAX,3FH
(4)端口地址3FFH已超出8位二进制表示范围,16位端口地址应存于DX。
可改为:
MOVDX,3FFHOUTDX,AL
(5)AX不能用于间接寻址,间接寻址只能用BX、BP、SI、DI四个寄存器之一。
可改为:
POP[BX]
(6)当逻辑移位的次数大于1时,应该用CL指示次数。
可改为:
MOVCL,5
SHLBX,CL
(7)操作数300255,已超出有效的中断类型码范围。
(8)XCHG指令不允许立即数做它的操作数。
可改为:
MOVCX,0FFFH
XCHGDX,CX
(9)源、目的字长不一致
(10)OFFSET只用于简单变量,应去掉
(11)CS不能作为目的寄存器
(12)段寄存器之间不能直接传送数据
3.已知(DS)=2000H,有关的内存单元值为:
(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,符号COUNT的偏移地址为1200H。
执行下列指令后,寄存器AX、BX、SI的值分别是多少?
MOVBX,OFFSETCOUNT
MOVSI,[BX]
MOVAX,COUNT[SI][BX]
答:
执行结果为(BX)=1200H,(SI)=1000H,(AX)=3040H。
4.设若内存单元DATA在数据段中偏移量为24C0H处,24C0H~24C3H单元中依次存放着55H、66H、77H、88H。
下列几条指令执行后,寄存器AX、BX、CL、SI的值分别是多少?
MOVAX,DATA
LEASI,DATA
MOVCL,[SI]
答:
执行结果为(AX)=6655H,(BX)=6655H,(CL)=55H,(SI)=24C0H。
第4章汇编语言程序设计
一、填空题
1.段定义伪指令语句用SEGMENT语句表示开始,以ENDS语句表示结束。
2.ARRAYDW10DUP(5DUP(4DUP(20H,40H,60H))语句执行后共占1200字节存储单元。
3.汇编语句中,一个过程有NEAR和FAR两种属性。
NEAR属性表示主程序和子程序在同一个代码段中,FAR属性表示主程序和子程序不在同一个代码段中。
4.DOS系统功能号应放在AH寄存器中。
5.子程序又称过程,它可以由PROC语句定义,由ENDP语句结束,属性可以是NEAR或FAR。
二、选择题
1.EXE文件产生在(D)之后。
A.汇编B.编辑C.用软件转换D.连接
2.变量定义的伪指令助记符有(ABCEF)。
A.DBB.DWC.DDD.DFE.DQF.DT
3.若主程序段中数据段名为DATA,对数据段的初始化操作应为(B)。
A.MOVAX,DATAB.MOVAX,DATA
MOVES,AXMOVDS,AX
C.PUSHDSD.MOVDS,DATA
4.8086宏汇编源程序中,若BUFF是字变量名,则执行指令MOVBX,BUFF后,BX中的值为BUFF单元的(A)。
A.字数据值B.变量类型值C.段基址D.段内偏移量
三、综合题
1.下列标号为什么是非法的?
(1)GET.DATA
(2)1_NUM
(3)TEST-DATA
(4)RET
(5)NEWITEM
答案:
(1)因为‘.’只允许是标号的第一个字符
(2)第一个字符不能为数字
(3)不允许出现‘-’
(4)不能是保留字,如助记符
(5)不能有空格
2.下面两个数据段中偏移地址为10H和11H的两个存储单元中的数据一样吗?
为什么?
答案:
不一样。
分别是72H,04H和04H,72H。
存储字时低8位存在低字节,高8位存在高字节。
3.请写出上述两条指令执行后,BX寄存器中的内容。
DATASEGMENT
TABLE_ADDRDW1234H
DATAENDS
┆
MOVBX,TABLE_ADDR
LEABX,TABLE_ADDR
答案:
MOVBX,TABLE_ADDR;执行后(BX)=1234H
LEABX,TABLE_ADDR;执行后(BX)=OFFSETTABLE_ADDR
4.试编写一个汇编语言程序段,要求对键盘输入的小写字母用大写字母显示出来。
答案:
abc:
movah,1
int21h
cmpal,’a’
jbstop
cmpal,’z’
jastop
subal,20h
movdl,al
movah,2
int21h
jmpabc
stop:
ret
5.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若不同则显示“NOMATCH”。
答案:
datareasegment
string1db‘asfioa’
string2db‘xcviyoaf’
mess1db‘MATCH’,’$’
mess2db‘NOMATCH’,’$’
datareaends
prognamsegment
mainprocfar
assumecs:
prognam,ds:
datarea
start:
pushds
subax,ax
pushax;返回DOS
movax,datarea
movds,ax
moves,ax;赋初值
begin:
movcx,string2-string1
movbx,mess1-string2
cmpbx,cx;比较两字符串的长度
jnzdispno
leadx,addr;若长度相同
leasi,string1
leadi,string2;地址指针赋初值
repecmpsb;比较
jnedispno
movah,9;相同,显示MATCH
leadx,mess1
int21h
ret
dispno:
movah,9;不同,显示NOMATCH
leadx,mess2
int21h
ret
mainendp
prognamends
endstart
6.从内存单元BUF开始的缓冲区中有7个8位无符号数,依次为13H、0D8H、92H、2AH、66H、0E0H、3FH。
编程找出它们的中间值并放入RES单元,且将结果以“(RES)=?
”的格式显示在屏幕上。
答:
一种可能的程序如下实现:
DATASEGMENT
BUFDB13H,0D8H,92H,2AH,66H,0E0H,3FH
RESDB?
;中间数的存放单元
STRDB‘(RES)=’
STR1DB?
,?
,‘$’;结果字符串
DATAENDS
SSEGSEGMENTPARASTACK‘SSEG’
DB100DUP(?
)
SSEGENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
SSEG,DS:
DATA,ES:
DATA
MAINPROCFAR;主程序
PUSHDS
XORAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVES,AX;有STOS指令,需用ES
MOVCX,6;外循环次数,比6次
AGN:
MOVSI,OFFSETBUF
MOVDI,SI
INCDI;SI、DI指向相邻2数
MOVDX,6;内循环次数,比6次
AGN1:
MOVAL,[SI]
CMPAL,[DI];两个无符号数相比较
JBUNCH;小于则转,不互换
EXCH:
XCHGAL,[DI];前1单元较大,则互换
MOV[SI],AL;大数放在后面
UNCH:
INCSI;修改指针,指向下一个数
INCDI
DECDX
JNZAGN1;未处理完,继续内循环
LOOPAGN;外循环
DONE:
MOVAL,[SI-3];排序完成,取中间数
MOVRES,AL
ANDAL,0F0H;分离高半字节
MOVCL,4
SHRAL,CL
CALLBATR;调子程序,将AL值转换为ASCII码
LEADI,STR1;DI指向结果单元
CLD
STOSB;存放转换结果
MOVAL,RES
ANDAL,0FH;分离并转换低半字节
CALLBATR
STOSB
LEADX,STR;显示整个字符串
MOVAH,09H
INT21H
RET
MAINENDP;主程序MAIN结束
;子程序BATR,实现16进制数到ASCII码的转换
BATRPROCNEAR
CMPAL,10;入口参数为AL
JBNUM;是数字,则转NUM
ADDAL,’A’-10-’0’;字母
NUM:
ADDAL,’0’
RET
BATRENDP;子程序结束
CODEENDS
ENDMAIN
简析:
本例的基本思路是:
先把7个无符号数按大小排序,排序完成之后取位于中间的一个数即为中间值。
然后将该16进制数转换为两个对应的ASCII码,再与要求的格式字符一起输出送显即可。
数据排序可以是从大到小、或从小到大排列,本参考程序完成从小到大排序,由一个双重循环结构实现。
内循环完成一个数与其它数之间的一一比较,并使每次比较所得的小数置于低地址单元。
外循环实现所有数之间的两两相较。
共7个数据,故内、外循环中的比较次数均为6次。
编程时需注意:
无符号数比较大小应使用JA、JB、JAE、JBE指令,本例完成从小到大的排列,故用JB控制转移到UNCH;若要从大到小排列,则用JA代替JB即可。
第5章存储器系统
一、选择题
1.下列(B)不是半导体存储器芯片的性能指标。
A.存储容量B.存储结构C.集成度D.最大存储时间
2.高速缓存由(B)构成。
A.SRAMB.DRAMC.EP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理及汇编语言 微机 原理 汇编语言 习题