微机练习题2.docx
《微机练习题2.docx》由会员分享,可在线阅读,更多相关《微机练习题2.docx(37页珍藏版)》请在冰点文库上搜索。
![微机练习题2.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/63a6ca51-ec6c-46c4-8445-9fe2719477e3/63a6ca51-ec6c-46c4-8445-9fe2719477e31.gif)
微机练习题2
《微机原理及接口技术》练习题
1.十六进制数0FFF8H表示的十进制正数为_65528___,表示的十进制负数为____-8____。
2.十六进制数41H表示的十进制正数为65;表示的ASCII码字符是A。
3.十进制数57的压缩BCD编码是01010111。
4.已知X=+20,Y=-20,则[X]补=00010100,[Y]补=11101100。
5.采用补码表示的8/16位二进制数真值范围是8位:
-128~+127.16位:
-32768~+32767。
6.某带符号十进制数的补码是E9H,则该十进制数是-23。
7.已知X=-30,Y=-27,补码运算求X+Y的值10111001=-57。
8.一个完整的计算机系统通常应包括硬件和软件。
9.计算机硬件中最核心的部件是ALU。
10.计算机的软件系统一般分为两大部分系统软件和应用软件。
11.系统总线的组成、作用。
系统总线是CPU与其他部件之间传送数据,地址和控制信息的公共通道。
由数据总线,地址总线,控制总线组成。
12.8086CPU的主要由哪两部分组成?
它们的主要功能是什么?
它们如何协同工作?
EU和BIU。
EU:
从BIU指令队列中取出指令代码,经指令译码器译码后执行指令规定的全部功能。
BIU:
根据EU的请求,完成CPU与存储器或I/O设备之间的数据传送。
通过并行工作方式协同工作。
13.8086CPU有哪几个寄存器?
分成哪些类型?
它们的主要作用是什么?
14个16位寄存器。
通用寄存器,控制寄存器,段寄存器。
14.8086/8088CPU中,用来存放指令代码的功能部件是BIU。
在EU中起数据加工与处理作用的功能部件是ALU。
15.8086CPU中,可用作寄存器间接寻址或基址、变址寻址的地址寄存器有SIDISPBP。
16.8086CPU中,可当成1个16位或2个8位使用的寄存器有AXBXCXDX。
17.8086/8088存储器分四个段,这四个段的段名是代码段,数据段,堆栈段,附加段;所对应的段寄存器分别是CS,DS,SS,ES。
18.IP的名称是指令指针寄存器;作用是存放EU要执行的下条指令偏移地址。
19.堆栈操作以子为单位,按照先进后出的原则来处理。
堆栈操作中用于指示栈顶地址的寄存器是SP。
20.简述寄存器AX、BX、CX、DX在指令中的特定用法。
分成独立的两组8位寄存器使用,16位寄存器主要用于存放数据和地址,而8位寄存器只能用于存放数据。
21.简述段地址寄存器与偏移地址寄存器的搭配使用规律。
?
22.8086的数据总线和地址总线分别是16和20条。
23.8086系统可访问的内存空间范围是1MB;I/O地址空间范围是64KB。
24.8086/8088存储器地址是分段管理的,为什么?
扩大范围和提高效率。
25.8086/8088存储器地址分段时,每个段起始地址的特征是低四位为0。
26.8088/8086存储器分段,每个段不超过64KB。
段内偏移地址从0000H到FFFFH。
27.8086取指令时,由CS提供的段地址和IP提供的偏移地址形成20位物理地址。
28.在8086/8088系统中,存储器是分段组织的,按各段实际长度定位。
已知DS=2150H,CS=2640H,SS=2250H,SP=100H,问题:
数据段起始地址是多少?
21500H
计算数据段中最多可以存放多少个字节数据?
(要有具体计算式)2^16=64KB
代码段最多可以存放多少个字节程序代码?
说明理由。
64KB.8086系统内所有寄存器都只有16位,只能寻址64KB
29.8086/8088CPU允许最大的存储空间为1MB,因此CPU的地址总线是20位。
30.逻辑地址由段地址和偏移地址组成。
31.当SS=9876H,SP=4328H,执行POPF指令后,堆栈顶部的物理地址是9CA8AH。
32.在8086/8088系统中,存储器物理地址是分段组织的。
堆栈段的段地址存放在__SS寄存器中,栈顶数据的偏移地址放在SP寄存器中。
代码段的段地址存放在CS寄存器中。
偏移地址在IP寄存器中。
33.计算机指令由操作数和操作码两部分组成。
34.用汇编语言指令所编写的程序,称为汇编源程序;经过汇编产生目标程序;目标程序经链接后产生可执行文件。
35.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOVAX,[SI+COUNT]中,源操作数的有效地址EA为20A8H,其物理地址为11488H。
36.CPU的标志寄存器中共有9个标志位,可以分为两大类,其中一类称为控制标志位,另一类称为状态标志位。
37.简述标志寄存器F中各状态标志的作用。
CF,DFAF,ZF,SF,OF
在8086/8088CPU控制寄存器中,IP寄存器内容始终指向下一条指令的首地址,此时该指令38.物理地址计算式是PA=CS*10H+IP。
39.CPU要访问的某一存储单元的实际地址称为物理地址。
40.列出8086指令常用的寻址方式,并各举例说明。
若为存储器操作数,说明其物理地址计算方法。
立即数寻址:
MOVAX,2000H;
寄存器寻址:
MOVAL,BL;
寄存器间接寻址:
MOVAX,[BX];
直接寻址:
MOVAX,[2000H];
基址变址寻址:
MOVAX,[BX][SI];
相对基址变址寻址:
MOVAX,MASK[BX][SI];
41.8086汇编语言指令,按功能分成哪几类?
数据传送类指令。
算术运算类指令。
逻辑运算与移位指令。
串操作类指令。
控制转移类指令。
处理器控制类指令。
42.在8086指令系统中,寄存器间接寻址方式的操作数位于存储器中;立即寻址方式的操作数在代码段中。
43.在访问存储单元时,使用寄存器间接寻址方式,允许使用的寄存器是BP,BX,SI,DI。
44.写出下列指令中,源操作数的寻址方式:
MOVAX,3069H;立即数寻址
MOVAL,‘A’;立即数寻址
MOVAL,BH;寄存器寻址
MOVAX,[2000H];直接寻址
MOVAX,ES:
[2000H];直接寻址
MOVAX,BUF;直接寻址BUF为变量名
MOVAX,ES:
[BX];寄存器间接寻址
MOVAX,[BP];寄存器间接寻址
MOVAX,COUNT[SI];相对变址寻址
MOVAX,[BX][SI];基址变址寻址
MOVAX,[BX][DI];基址变址寻址
MOVAX,MASK[BX][SI];相对基址变址寻址
45.已知:
BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别计算下面各指令中存储器操作数的物理地址。
(1)MOVAL,[BX]PA=21357H
(2)MOVCS:
[BX+DI],AHPA=43357H
46.判断下列指令是否正确,如有错误,说明原因。
MOVAL,BX;错,操作数和源操作数类型不一致
MOV[2000H],100;立即数不能送存储单元
PUSHBX;正确。
OUTDX,BL;错,I/O的数据传送用AL
MUL40H;不能直接跟立即数
MOV[SI],[BX];
INAL,DX;正确
ROLAL,2;数值大于1时应先放在CL中
PUSHCS;正确
MOVCS,2000H;CS不能作为目的操作数
MOVAL,[BX+SI];正确
INAL,2F0H;错,地址大于FFH应放在DX中
MOVCS,BX;CS不能作为目的操作数
POPDS;正确
PUSHCL;错,堆栈以字为单位
DIV40H;不能直接跟立即数
MOVDS,ES;错,段地址间不能直接传送数据
INAL,60H;正确
47.数据段中下列语句在存储器中分别为变量分配多少个字节?
画出示意图。
AD1DW10HDUP(?
),10H34字节
COUNTEQU10
AD2DB3DUP(2DUP(3))6字节
AD3DDCOUNTDUP(?
)40字节
48.画出下列伪指令定义的存储空间分配图,写出各单元内容(十六进制)。
VAR1DB'A'
VAR2DW2233H
VAR3DB2DUP(2,3),25H
49.DOS系统功能调用INT21H的功能选择,应将相应的功能号放在AH寄存器中,实现键盘输入一个字符的功能号是01H;显示单个字符的功能号是02H。
50.伪指令语句VARDW4DUP(1,2),?
在存储器中为变量数据区分配了18字节单元。
51.8086CPU的十进制加法调整指令DAA依据AF,AL,CF的值完成相应的调整操作。
52.循环指令LOOPNZ终止循环的条件是CX=0或ZF=1。
53.执行指令MULBX后,乘积存放在AX,DX寄存器中。
54.指令MOVAL,[BP]的源操作数在存储器中。
55.已知AX=1234H
MOVBX,AX
NOTBX
XORBX,AX
上述程序段执行后,BX=FFFFH。
如把XOR指令改为OR指令,那么程序段执行后,BX=FFFFH。
56.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是D.
A.DB41,42,43,44,45,46B.DW4142H,4344H,4546H
C.DW'AB','CD','EF'D.DW'BA','DC','FE'
57.DA2DB'AB','CD'
┇
MOVAX,WORDPTRDA2+1
上述语句执行后AX中的值是D。
A.'AD'B.'BC'
C.'DA'D.'CB'
58.指令指针寄存器IP是用于存放代码段的__偏移地址。
59.与LEABX,VAR等效的指令是MOVBX,OFFSETVAR。
60.设SP初值为2000H,执行指PUSHAX后,SP的值是1FFEH。
条件转移指令JB产生程序转移的条件是A。
A.CF=1 B.CF=0
C.CF=1且ZF=1 D.CF=1且ZF=0
61.设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1.执行SBBAL,[SI]后,正确的结果是C。
A.AL=5FHSF=1CF=1
B.AL=60HSF=1CF=0
C.AL=5FHSF=0CF=1
D.AL=60HSF=0CF=0
62.设AX=1000H
NEGAX
NOTAX
执行上述指令后,正确的结果是B。
A.AX=1001H B.AX=0FFFH
C.AX=1000H D.AX=0111H
63.CBW指令的功能是B。
把源操作数的符号位扩展到目的操作数中
把AL中的符号位扩展到AH中
把AH中的符号位扩展到AL中
把AX中的符号位扩展到DX中
64.汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效名字是A。
A.Variable B.First&ld
C.0FFFFH D.‘Memphis’
65.要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,可选用的语句是A。
A.DA1DB‘AB’
B.DA1DW‘AB’
C.DA1DB0ABH
D.DA1DW0ABH
66.MOVCL,8
ROLAX,CL
ORAX,BX
假设AX=0012H,BX=0034H,那么上述程序段执行后,AX中的结果是1234H。
67.选用NOT、AND、OR、XOR逻辑指令编写一指令序列,实现将AL第0位,第2位同时置1,其他位变反。
ORAL,00000101BXORAL,11111010B
68.MOVAX,0BC5FH
MOVBX,0C0FBH
XORAX,BX
XORAX,BX
上述程序段运行后,AX=_0BC5FH,CF=0
69.HEXDB‘0123456789ABCDEF’
HCODDB?
?
┇
MOVBX,OFFSETHEX
MOVAL,1AH
MOVAH,AL
ANDAL,0FH
XLAT
MOVHCOD+1,AL
MOVCL,12
SHRAX,CL
XLAT
MOVHCOD,AL
上述程序段运行后,HCOD和HCOD+1两字节单元内容是什么?
31H,41H
70.MOVBL,0FFH
ANDBL,0F0H
ORAL,0FFH
XORBL,AL
上述程序段运行后,AL=FFH,BL=0FH。
71.MOVAX,0E453H
ADDAX,0C572H
72.上述程序段运行后,标志寄存器中CF=1,SF=1,ZF=0,OF=0,PF=1。
73.某源程序如下,在DEBUG下用反汇编命令查看程序如右边所示。
DATASEGMENT
S1DB35H,18H
S2DB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
DEBUG下查看到的内容
MOVDS,AX
LEABX,S1
MOVAL,[SI]
INCSI
ADDAL,[SI]
DAA
MOVS2,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
则变量S2的物理地址是144A2H;程序执行后,S2的值是53H;
代码段寄存器CS的值是144BH;指令INCSI的逻辑地址是144B:
000B。
74.XDB0F8H
YDB3DUP(?
)
┇
LEADI,B
MOVCX,3
MOVAL,A
LOP:
SARAL,1
MOV[DI],AL
INCDI
LOOPLOP
上述程序段运行后,从Y单元开始依次存放的数据是什么?
0FCH,0FEH,0FFH
75.已知BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么?
MOVCX,10
LEABX,BUF
K2:
MOVAL,[BX]
CMPAL,‘Z’
JBEK1
SUBAL,20H
MOV[BX],AL
K1:
INCBX
LOOPK2
┇
MOVCL,8
MOVAL,0
NOTAL
ROLAL,CL
CMPAL,0FFH
JZNEXT
MOVAL,0
NEXT:
……
功能:
将10个大小写字母中的小写字母转换为大写字母。
上述程序段运行后,AL=_FFH,CF=_0。
76.假设SP=1006H,AX=1234H,BX=5678H:
PUSHAX
PUSHBX
POPAX
上述程序段运行后,AX、BX值有和变化,画出堆栈变化情况示意图。
77.已知数据段中定义:
TABDB0C0H,0F9H,0A4H,0B0H,99H,92H
DB82H,0F8H,80H,90H,
CNTEQU$-TAB
程序段如下所示:
LEABX,TAB
MOVAL,05H
XLAT
程序段执行后AL=92H,CNT=10。
78.MOVAL,34H
ADDAL,59H;AL=8DH
DAA;AL=93H
79.将AL寄存器中位3清0、位5置1、位7取反,其它位保持不变,可以用什么指令系列实现?
ANDORXOR
80.比较指令SUB与CMP、AND与TEST的异同点。
SUB与CMP:
都是执行减操作,但SUB存结果,CMP不存。
AND与TEST:
都是执行与操作,但AND存结果,TEST不存
81.编写一个完整的源程序:
X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等的那个数,并存入W单元中。
Datasegment
xdb1
ydb2
zdb1
wdb?
Dataends
Codesegment
Assumecs:
code,ds:
data
movax,data
movds,ax
moval,[x]
cmpal,[y]
jnzyz
moval,[z]
jmpdone
Yz:
moval,[y]
cmpal,[z]
jnzyw
moval,[x]
jmpdone
Yw:
moval,[y]
Done:
mov[w],al
movah,4ch
int21h
Codeends
end
82.编程:
把存储单元A和B中的两个压缩BCD数相加,结果存入存储单元C中,并将结果显示。
datasegment
adb23h
bdb45h
cdb?
dataends
codesegment
assumecs:
code,ds:
data
movax,data
movds,ax
moval,[a]
addal,[b]
daa
mov[c],al
andal,0f0h
movcl,4
shral,cl
addal,30h
movdl,al
movah,2
int21h
moval,[c]
andal,0fh
addal,30h
movdl,al
movah,2
int21h
movah,4ch
int21h
codeends
end
83.编程:
在以BUF为首址的内存存放有0~15的平方值表。
查表求X单元中数(在0~15之间)的平方值,并送回X单元。
datasegment
bufdb0,1,4,9,16,25,36,49,64,81,100
db121,144,169,196,225
xdb13
dataends
codesegment
assumecs:
code,ds:
data
movax,data
movds,ax
leabx,buf
moval,[x]
xlat
mov[x],al
movah,4ch
int21h
codeends
end
84.编程:
将字节变量DISP的内容显示出来。
DATA SEGMENT
DISP DB 7FH
BUF DB ?
?
0DH,0AH,'$'
TABLE DB '0123456789ABCDEF'
DATA ENDS
CODE SEGMENT
ASSUME CS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
LEA BX,TABLE
LEA SI,BUF
MOV AL,DISP
MOV CL,4
SHR AL,CL
XLAT
MOV [SI],AL
INC SI
MOV AL,DISP
AND AL,0FH
XLAT
MOV [SI],AL
LEA DX,BUF
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODEENDS
ENDSTART
85.编程:
将无符号数A、B中的大数送C单元中。
DATA SEGMENT
A DB 39H
B DB 0B4H
C DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,A
CMP AL,B
JNB NEXT
XCHG AL,B
MOV C,AL
NEXT:
MOV AH,4CH
INT 21H
CODEENDS
ENDSTART
86.编程:
将AX的绝对值放RES单元中。
DATASEGMENT
RESDB?
XDB-5
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX[X]
CMPAX,0
JGENT
NEGAX
NT:
MOVRES,AX
CODEENDS
ENDSTART
87.编程:
比较D1、D2单元中的字符,相同显示YES,不同显示NO。
DATA SEGMENT
D1 DB ‘A’
D2 DB ‘B’
RES1 DB ‘YES’, ’ $ ’
RES2 DB ‘NO’, ’ $ ’
DATA ENDS
CODE SEGMENT
ASSUME CS:
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,D1
MOV BL,D2
CMP AL,BL
JNE NEXT1
LEA DX,RES1
JMP NEXT2
NEXT1:
LEA DX,RES2
NEXT2:
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
ENDSTART
88.编程实现符号函数功能(+127X-128)。
datasegment
xdb-23h
ydb?
dataends
codesegment
assumecs:
code,ds:
data
movax,data
movds,ax
moval,[x]
cmpal,0
jzzero
jlnegative;JS?
JC?
moval,1
jmpzero
negative:
moval,-1
zer