汇编语言程序设计期末复习题及复习资料.docx
- 文档编号:29231829
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:20
- 大小:20.87KB
汇编语言程序设计期末复习题及复习资料.docx
《汇编语言程序设计期末复习题及复习资料.docx》由会员分享,可在线阅读,更多相关《汇编语言程序设计期末复习题及复习资料.docx(20页珍藏版)》请在冰豆网上搜索。
汇编语言程序设计期末复习题及复习资料
《汇编语言程序设计》期末复习题及答案
一、选择(30题)
1.下列是8位带符号二进制数的补码,其中最大的是(B)。
B、00000001
2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现
(C)
C、占内存空间大,但速度快
3.数据定义为:
EEDB3,4
CCDW3456H,6789H
执行指令“MOVCX,WORDPTREE+1”后,(CX)=(B)
B、5604H
4.有如下指令序列:
MOVAL,95H
MOVCL,2
SARAL,CL
上述指令序列执行后,AL的内容是(D)
D、0E5H
5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是(D)
D、A
6.用一条指令实现寄存器BX和SI的内容相加,并将结果送入AX中,这条指令是(D)
D、LEAAX,[BX][SI]
7.要从端口1234H中读入8位数据,其指令应是(C)
C、MOVDX,1234H
INAL,DX
8.循环控制指令LOOPNZ/LOOPNE继续执行循环的条件是(B)
B、CX≠0且ZF=0
9.8088/8086存储器分段,每个段不超过(D)
D、64K个字节
10.表示过程定义结束的伪指令是(A)
A、ENDP
11.用来存放下一条将要执行的指令代码段地址的段寄存器是(D)
D、CS
12.假定(SS)=1000H,(SP)=0100H,(AX)=5609H,执行指令PUSHAX后,存放数据
56H的物理地址是(D)
D、100FFH
13.执行“SUBAX,[BP][DI]”指令,取源操作数时,使用的物理地址表达式是(A)
A、16*SS+BP+DI
14.设AX中有一带符号数8520H,执行“SARAX,1”指令后,AX中的值是(C)
C、0C290H
15.设(BX)=1234H,(DS)=2000H,(21234H)=5678H,则指令“LEASI,[BX]”执行后的结果是:
(B)
B、SI=1234H
16.测试BL中的数是否为负数,若为负数则转移至AA1处,横线处的指令应为(A)
A、JNE
17.设DF=0,(SI)=20H,(CX)=10,执行“REPLODSW”指令后,SI中的内容是(C)
C、34H
18.在程序执行过程中,IP寄存器中始终保存的是(B)
B、下一条指令的首地址
19.设SP初值为2000H,执行指令“POPAX”后,SP的值是(A)
A、2002H
20.若AX=3500H,CX=56B8H,当ANDAX,CX指令执行后,AX=(A)
A、1400H
21.汇编源程序时,出现语法错误的语句是(A)
A、MOVDS,1200H
22.将数据1234H存放在存储单元中的伪指令是(C)
C、DATA1DB34H,12H
23.下面指令执行后,可能改变AL寄存器内容的指令是(D)
D、ANDAL,BL
24.操作数地址存放在寄存器的寻址方式称为(B)
B、寄存器间接寻址
25.用户为了解决自己的问题,用汇编语言所编写的程序,称为(B)
B、汇编语言程序
26.用DOS功能调用时,子功能调用的编号应放在(C)
C、AH
27.提供串指令中目的操作数地址的是(C)
C、ES:
[DI]
28.在寄存器间接寻址方式下,能够提供有效地址的寄存器有(B)
B、BX,BP,SI,DI
29.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是(A)
A、2025∶0F2A
30.中断向量表中的每个中断向量所占内存空间为:
(B)
B、4个字节
二、填空(30题)
1.在用直接寻址方式寻址操作数时,系统对段地址的默认值在段寄存器DS中。
参见P40
2.与指令“NEGAX”功能等效的两条指令依次是NOTAX和INCAX。
参见P85、94、84
3.语句“VARDB3DUP(3,3DUP(3))”经过汇编后应分配12个字节单元。
参见P58
4.指令“MOVAX,SEGVAR”的执行,是把变量VAR的段地址送到AX中。
参见P62
5.设(DS)=1000H,(ES)=2000H,(SS)=3000H,(BP)=4000H。
计算下列各指令中源操作数的物理地址:
MOVAX,[1000H]物理地址11000H
MOVAX,ES:
[BP]物理地址24000H
参见P29
6.变量和标号均具有三种属性,即:
段属性、偏移属性、类型属性。
参见P56、59
7.在做乘法运算时,如果是做字运算,乘积放在DX和AX两个寄存器中,做除法运算时,若做字节运算,余数放在AH中,商放在AL中。
参见P86、87
8.用以访问存储器操作的地址表达式中,只要出现BP寄存器,系统就默认以段寄存
器SS的内容作为存储器操作数的段地址。
参见P40~44
9.在数据段或代码段的最开始,常用伪指令“ORGn”来定义本段的偏移地址初值,该初值的范围是0000H~FFFFH。
参见P66、28
10.指令“CWD”能实现对某寄存器中内容进行扩展,该寄存器是:
AX。
参见P89
11.8088/8086CPU能寻址的最大存储空间为1MB,因此CPU的地址总线是20条。
参见P28
12.在应用串处理指令MOVSB时,源串首地址存放在寄存器SI中,目的串首地址存放在寄存器DI中,并且目的串必须在附加段中,执行串处理指令时,用方向标志位DF控制地址自动增减,数据串的长度存放在寄存器CX中。
参见P125、126
13.程序状态字PSW中的ZF位,当结果为0时,ZF=1,结果为1时,ZF=0。
参见P33
14.十六进制数0D6H,当把它看作无符号数时,它表示的十进制正数为214,当把它看作带符号数时,它表示的十进制负数为-42。
参见P22、23
15.IBMPC机中用来存放段地址的段寄存器有四个:
CS、DS、SS、ES。
参见P31、32
三、判断题(15题)
1.SHLAL,2(错)参见P952改为CL
2.INC2(错)参见P84、83不能用立即数
3.ADDBX,1(对)参见P83
4.MOV[SI][DI],BX(对)参见P44
5.SUBBX,CL(错)参见P84BX与CL数据宽度不一致
6.OUT34H,AL(对)参见P170
7.INAL,0AH(对)参见P169
8.MOVCX,[SP](错)参见P42SP不能做间址寄存器
9.MULAL(对)参见P86、87
10.SUBBX,BP(对)参见P84
11.MOVDS,SEGVARY(错)
参见P62、46SEGVARY是立即数,而DS不能接受立即数
12.MOVVARY[SI],ES:
BL(错)
参见P40对寄存器不能使用段跨越前缀
13.CMPBLOCK,[100H](错)
参见P85不能对两个内存单元直接进行比较
14.宏调用时实元和哑元的个数可以不一致。
(对)参见P161
15.REPSTOSB(对)参见P127
四、写程序段(9题)
1.计算8*9,并将乘积送SI。
(参见P87,例5.10,考查对乘法指令的掌握情况)
moval,8
movbl,9
mulbl
movsi,ax
2.计算35/6,商存于BL中,余数存于CL中。
(参见P88,例5.13,考查对乘法指令的掌握情况)
movax,35
movbl,6
divbl
movcl,ah
3.输入一个字母,然后输出它的后继字母(不考虑输入字母是Z的情况)。
(参见P102第6题及P186,考查对1号、2号功能调用的掌握)
movah,01h
int21h
incal
movdl,al
movah,02h
int21h
4.从端口35H读入一个字节数据,将该数的第3位置1后(其余位不变),再写回端口
35H。
(说明:
最低位为第0位)
(参见P178,第2道问答题,考查对I/O指令的掌握)
inal,35h
oral,08h
out35h,al
5.定义数据段NUM,数据段中的数据按下列要求依次存储:
(1)变量X,类型为字节,初值为17;
(2)数组变量M,类型为字,所占空间为100H个单元;
(3)变量MSG,存储字符串"LUCKY"。
(参见P79,问答题的第2小题及P181,考查对段定义伪操作的掌握)
NUMsegment
Xdb17
Mdw100hdup(?
)
MSGdb‘LUCKY’
NUMends
6.寄存器BX中存放着一个带符号数,求出其绝对值,结果还放在BX中。
(参见P107,例6.3,考查对CMP、NEG指令的掌握)
cmpbx,0
jgL1
negbx
L1:
…
7.对存放在(DX,AX)中的双字数据作求补运算。
(参见P83,例5.2及P85,例5.7,考查对双精度数的操作)
notdx
notax
addax,1
adcdx,0
8.计算5!
,结果存于寄存器SI中。
(参见P107,例6.4,考查对循环指令的掌握)
movcx,5
moval,1
movbl,1
L1:
mulbl
incbl
loopL1
movsi,ax
9.定义一个名字为ADDXYZ的宏,实现W←X+Y+Z。
(注:
所有数据均为字类型)
(参见P166,编程题第4题及P201,考查对宏定义的掌握)
ADDXYZMACROX,Y,Z,W
movax,x
addax,y
addax,z
movw,ax
endm
五、写程序(9题)
1.从键盘输入一个字符串(长度不超过30),统计字符串中非数字的个数,并将统计的结果存入字单元COUNT中,用EXE格式实现。
(参见P152~P154,考查字符数组、比较指令、循环等)
datasegment
strdb30,?
30dup(?
)
countdb0
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
pushds
movax,0
pushax
movax,data
movds,ax
leadx,str
movah,0ah
int21h
movcl,str+1
movch,0
movsi,2
L3:
cmpstr[si],30h
jaeL1
inccount
jmpL2
L1:
cmpstr[si],39h
jbeL2
inccount
L2:
incsi
loopL3
ret
mainendp
codeends
endstart
2.统计一个16位二进制数中1的个数,并将结果输出,用COM格式实现。
(参见P119,考查COM格式文件、移位指令、跳转指令)
codesegment
org100h
assumecs:
code
mainprocnear
start:
movbx,0a39h
movsi,0
movcx,16
next:
shrbx,1
jncl1
incsi
l1:
loopnext
movdx,si
adddx,30h
cmpdl,3ah
jbl2
adddl,7
l2:
movah,02h
int21h
movax,4c00h
int21h
mainendp
codeends
endstart
3.从键盘输入两个一位十进制数,求它们的和,并将结果以十进制形式输出。
(只考虑和小于10的情况)
(参见P156第6题及P200,考查1号功能调用、2号功能调用、字符的输出)
codesegment
assumecs:
code
mainprocfar
start:
pushds
movax,0
pushax
movah,01
int21h
movbl,al
movah,01
int21h
movbh,al
subbx,3030h
addbl,bh
movdl,bl
adddl,30h
movah,02
int21h
ret
mainendp
codeends
endstart
4.从键盘输入一个十进制个位数,在屏幕上显示相应数量的该数。
例如,输入3,屏幕上将显示“333”。
(参见P123第6题及P193,考查1号功能调用、字符如何变成数值、LOOP指令)
codesegment
assumecs:
code
mainprocfar
pushds
movax,0
pushax
movah,01h
int21h
movbl,al
subal,30h
cbw
movcx,ax
L1:
movah,02h
movdl,bl
int21h
loopL1
ret
mainendp
codeends
endmain
5.求100以内所有奇数的和,存于字变量X中。
(参见P143,例8.6,考查循环指令)
datasegment
xdw?
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
pushds
movax,0
pushax
movax,data
movds,ax
movax,0
movbx,1
movcx,50
L1:
addax,bx
addbx,2
loopL1
movx,ax
ret
mainendp
codeends
endstart
6.将BX中的数以二进制形式在屏幕上显示出来。
(参见P123第2题及P189,考查移位指令、跳转指令、数值的输出、2号功能调用)
codesegment
assumecs:
code
mainprocfar
start:
movbx,1234h
movcx,16
L1:
movdl,30h
shlbx,1
jncL2
incdl
L2:
movah,02h
int21h
loopL1
movax,4c00h
int21h
mainendp
codeends
endstart
7.字节数组X中存放着0~F共16个十六进制数,请将这些数以十六进制形式显示在屏幕上。
(参见P115,例6.9,考查对数组的使用、数值的输出、2号功能调用、循环指令)
datasegment
xdb0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
movax,data
movds,ax
movcx,16
movsi,0
L1:
movdl,x[si]
adddl,30h
cmpdl,39h
jbeL2
adddl,7
L2:
movah,02h
int21h
incsi
loopL1
movax,4c00h
int21h
mainendp
codeends
endstart
8.从包含10个无符号数的字节数组array中选出最小的一个数存于变量MIN中,并将该数以十进制形式显示出来。
(参见P123,第3题及P190~191,考查对数组的使用、循环指令、比较指令、除法指令、数值的输出)
datasegment
arraydb45,67,75,82,90,29,80,26,63,59
mindb?
dataends
stacksegmentstack
dw10dup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
mainprocfar
start:
movax,data
movds,ax
movcx,10
moval,255
movsi,0
movdi,0
L1:
cmpal,array[si]
jbeL2
moval,array[si]
L2:
incsi
loopL1
movmin,al
movah,0
movcx,3
L3:
movbl,10
divbl
movdl,ah
pushdx
incdi
movah,0
cmpax,0
jzL4
loopL3
L4:
movcx,di
L5:
popdx
adddl,30h
movah,02h
int21h
loopL5
movax,4c00h
int21h
mainendp
codeends
endstart
9.设在起始地址为STRING的存储空间存放了一个字符串,统计字符串中字符“A”的个数,并将结果存放到RESULT字节单元中。
(参见P134第5题及P196,考查串处理指令、比较指令)
datasegment
stringdb'assembly'
lendw$-string
resultdb0
dataends
codesegment
assumecs:
code,ds:
data
mainprocfar
start:
movax,data
movds,ax
movcx,len
leasi,string
L1:
lodsb
cmpal,'a'
jnzL2
incresult
L2:
loopL1
movax,4c00h
int21h
mainendp
codeends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 期末 复习题 复习资料