汇编语言练习题Word下载.docx
《汇编语言练习题Word下载.docx》由会员分享,可在线阅读,更多相关《汇编语言练习题Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
6.寻址指令MOVCX,[BX+DI+20]使用的是哪一种寻址方式(B)
寄存器寻址B:
相对基址变址寻址
变址寻址D:
基址变址寻址
7.连接程序把汇编语言源程序生成的目标文件(.OBJ文件)转换成(B)。
A..OBJ文件B..EXE文件
C..LST文件D..CRF文件
8.在程序运行过程中,确定下一条指令的物理地址的计算表达式是(A)。
A.(CS)×
16+(IP)B.(DS)×
16+(DI)
C.(SS)×
16+(SP)D.(ES)×
16+(SI)
9.若AX=-15要得到AX=15应执行的指令是(A)
A.NEGAXB.NOTAX
C.INCAXD.DECAX
10.8086/8088系统执行传送指令MOV时(A)
A.不影响标志位B.影响DF方向标志
C.影响SF符号标志D.影响CF进位标志
11.执行下列程序后,(AL)=(D)H。
DATASEGMENT
TABDB‘0123456789’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETTAB
MOVAL,04
…
XLATTAB
A.04B.0400
C.33D.34
12.下列指令中操作数在代码段中的是(A)。
A.MOVAL,25HB.ADDAH,BL
C.INCBYTEPTR[25H]D.CMPBL,AL
13.若要求一个操作数中的若干位维持不变,若干位置“1”,可以使用(B)
NOTB:
ORC:
ANDD:
XOR
14.下列指令中段默认为堆栈段的是(C)
A.MOVAX,[BX+SI+10]B.ADDAX,ES:
[SI]
C.SUB[BX],[BP][DI]D.MOVDX,[1000H]
15.设BL=05H,要使结果BL=0AH,应执行的指令是(C)。
A.NOTBLB.ANDBL
C.XORBL,0FHD.ORBL,0FH
16.表示一条指令的存储单元的符号地址称(A)。
A.标号B.变量
C.偏移量D.类型
17.关于8086/8088微机系列,下列说法哪个是正确的(D)
一个存储单元由16个二进制位组成,简称字。
B:
当存储一个字数据时,低字节放高地址位,高字节放低地址位。
在内存空间中,可以无限分配段,且段的大小不受限制。
D:
段与段之间可以邻接,也可以重叠。
18.下列关于堆栈的说法,错误的是(D)
以“先入后出”为原则。
栈区最高地址单元的前一个单元为栈底。
运行中SP寄存器动态跟踪栈顶位置。
压栈和弹出都是以字节为单位。
19.分配给INT12H在中断向量表中的物理地址是(D)。
A.12HB.24H
C.36HD.48H
20.DOS调用INT21H的键盘输入功能1和功能8的区别是(B)。
A.功能1不回显而功能8回显B.功能1回显而功能8不回显
C.功能1和功能8都不回显D.功能1和功能8都回显
二、填空题(共27题)。
(最后二题有备选答案)
1.设一存储单元中的二进制代码是83H,其对应的一个无符号数是148,一个带符号数是-108。
2.8086/8088系统中,I/O端口地址范围是0000H~FFFFH。
3.8086/8088系统中,段内一个单元相对段的起始地址的距离称为偏移地址,它小于64K。
4.8086/8088CPU内部用来存放段地址的寄存器有CS,DS,ES,SS。
5.在PC机中,使用SS、SP合成20位的物理地址,用以指向当前堆栈桟顶的位置。
6.一个字单元由二个连续的字节单元组成,其中数据的低8位存放在低地址单元、高8位存放在高地址单元。
7.在指令中直接给出操作数的寻址方式称为立即寻址方式。
8.设MASK为一个变量,在“MOVAX,MASK[SI+BX]”指令中,源操作数的寻址方式是相对基址变址寻址方式,其物理地址是(DS)×
16+(SI)+(BX)+OFFSETMASK,目的操作数的寻址方式是
寄存器寻址方式。
9.若(SS)=1100H,(SP)=0150H,那么执行PUSHEAX指令后SP的内容是014CH,再执行POPCX指令后桟顶的物理地址是1114EH。
10.CPU执行“JMPBX”指令只改变IP,而不改变CS内容。
11.执行CALLNEARPTRSUBROUT时,在修改IP/EIP内容之前应该PUSHIP或PUSHEIP。
12.STRINGDB‘ABCDEFG’
COUNTEQU$-STRING
COUNT的值是7,表示的意义是表示变量STRING所分配的字节数。
13.数据定义语句:
TABDW100DUP(?
)
执行MOVBX,LENGTHTAB指令后,BX的内容是100。
14.循环程序可由三个部分组成:
设置循环初始部分、循环体和循环控制部分。
15.在多个模块中传递参数的时候,在本模块中要使用另一个模块中的符号要用EXTRN伪操作进行说明符号,本模块中的符号要提供给另一个模块使用要用
PUBLIC伪操作进行说明符号,
16.宏汇编的三个步骤是:
宏定义、宏调用和宏展开。
17.每种类型的中断都由相应的中断处理程序来处理。
18.下列程序段求数组FLD的平均值,结果在AL中。
请将程序填写完整(不考虑溢出)
FLDDW10,-20,30,-60,-71,80,79,56
LEASI,___FLD___
MOVCX,8
XORAX,AX
R1:
ADDAX,_[SI]____
ADDSI,2
LOOPR1
MOVCL,8
IDIVCL
HLT
19.MOVAX,1090H
SUBAX,4AE0H
JCL1
JOL2
JMPL3
上述程序执行后AX=___C5BO____,程序转向___L1____
20.假设寄存器AX=1234H,DX=0A000H
MOVBX,0
MOVCX,BX
SUBCX,AX
SBBBX,DX
MOVAX,CX
MOVDX,BX
上述程序段执行后AX=___OEDCCH____,DX=__5FFFH_____
21.MOVAX,234H
MOVCL,3
ROLAX,CL
DECAX
MOVCX,4
MULCX
此段程序执行完后,(AX)=__467CH_____,(CX)=___4____
22.DA1
DB83H,72H,61H,94H,5AH
MOVCX,WORDPTR[DA1]
ANDCX,0FH
MOVAL,[DA1+3]
SHLAL,CL
上述指令序列执行后,AL=____OAOH___,CL=___03H____。
23.阅读如下程序片段
MOVAL,4CH
MOVBL,86H
ADDAL,BL
执行上述程序片段后,(AL)=0D2H,(BL)=86H,
CF=0,OF=0
24.以下程序求出首地址为BUF的M字数组的内容之和。
DATASEGMENT
BUFDWX1,X2,…,XM
COUNTEQU($一BUF)/2
SUMDW?
CODE,DS:
START:
MOVBX,OFFSETBUF
MOVCX,COUNT
MOVAX,0
LOP1:
ADDAX,[BX]
ADDBX,2
LOOPLOP1
MOVSUM,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
25.以下程序完成将键盘输入的小写字母转换成大写字母并输出显示,直到输入字符“$”结束。
ERRORDB“INPUTEXCEEDS‘a’~‘z’,PLEASEINPUTAGAIN!
”,0DH,0AH,‘$’
MOVAX,DATA
NEXT:
MOVAH,1
CMPAL,‘$’
JEEXIT
CMPAL,‘a’
JBERR
CMPAL,‘z’
JAERR
SUBAL,20H
MOVDL,AL
MOVAH,2
JMPNEXT
ERR:
LESDX,ERROR
MOVAH,9
EXIT:
ENDSTART
26.下面子程序完成把BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。
BINTOHEXPROCNEAR
PUSHCX
PUSHAX
PUSHDX
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVAL,BL
2
ADDAL,30H
CMPAL,3AH
1
ADDAL,7H
PRINTIT:
3
JNZROTATE
POPDX
POPAX
POPCX
RET
BINTOHEXENDP
备选答案:
①JLPRINTIT
②ANDAL,OFH
③DECCH
27.下面程序段是判断寄存器BL中第3位、第5位是否同时为1,如同时为1,则AH置0,否则AH置全l。
MOVDL,BL
NOTDL
JZZERO
MOVAH,0FFH
ZERO:
MOVA