汇编语言程序第三次作业.docx
《汇编语言程序第三次作业.docx》由会员分享,可在线阅读,更多相关《汇编语言程序第三次作业.docx(19页珍藏版)》请在冰豆网上搜索。
汇编语言程序第三次作业
一、单项选择题(只有一个选项正确,共10道小题)
1.某数据段如下:
DATASEGMENT
ORG20H
XDB12H
YDW789AH
DATAENDS
则Y单元的偏移址是()。
(A) 0
(B) 20H
(C) 21H
(D) 12H
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
2.MOVAL,-1
NEGAL
XORAL,65
上述程序段执行后,AL中的内容是()。
(A) 40H
(B) 64H
(C) 01H
(D) 61H
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
3.下面的数据传送指令中,错误的操作是()。
(A) MOVSS:
[BX+DI],1000H
(B) MOVDX,1000H
(C) MOVWORDPTR[BX],1000H
(D) MOVDS,2000H
你选择的答案:
未选择 [错误]
正确答案:
D
解答参考:
4.设AH=0,AL=06H,BL=09H,执行指令
ADDAL,BL
AAA
之后,其结果应是()。
(A) AH=01,AL=05
(B) AH=1AL=15
(C) AH=0,AL=0FH
(D) AH=0AL=05
你选择的答案:
未选择 [错误]
正确答案:
A
解答参考:
5.BUFAEQUTHISWORD
BUFBDB80DUP(0)
对以上两条语句而言,下列说法不正确的是()。
(A) BUFA与BUFB对应同一存储单元地址。
(B) BUFA与BUFA具有相同的偏移属性。
(C) BUFA与BUFB具有相同的类型属型。
(D) BUFA与BUFB具有相同的段属性。
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
6.已定义数据:
FEESDW100DUP(0,2DUP(?
)),执行指令MOVAL,LENGTHFEES后AL寄存器内容为()。
(A) 1
(B) 100
(C) 200
(D) 2
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
7.09号中断的中断向量所处内存中相应单元的物理地址为()。
(A) 00009H
(B) 00012H
(C) 00024H
(D) 00036H
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
8.在VAR单元中存放着数据2010H的地址2000H。
MOVBX,VAR
MOVAX,[BX]
执行上述指令AX和BX寄存器的内容分别是()。
(A) AX=2000H,BX=2010H
(B) AX=2010H,BX=2000H
(C) AX=22010H,BX=22100H
(D) AX=22100H,BX=22010H
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
9.下列指令中能实现把AX,BX寄存器内容进行交换的是()。
(A) XCHGCX,BX
(B) MOVCL,AX
(C) PUSHAX
(D) MOVAX,BX
XCHGAX,CX
MOVAX,BX
PUSHBX
MOVBX,AX
MOVBX,CL
POPAX
POPBX
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
10.数据段定义如下:
DATASEGMENT
0RG0074H
ARRAYDW1,2,+4,3,4
DATAENDS
则执行指令MOVAX,ARRAY[4]后,AX寄存器的内容是()。
(A) 0002H
(B) 0082H
(C) 007CH
(D) 0003H
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
(注意:
若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。
在线只需提交客观题答案。
)
二、主观题(共21道小题)
11. 从缓冲区写信息到一个文件,如果没有关闭文件,可能会出现什么问题?
参考答案:
文件结尾的部分信息就没有被写入磁盘,从而造成写入的文件不完整。
12. 下面的ASCIZ串有什么错误?
PATH_NAMEDB‘C:
\PROGRAMS\TEST.DAT’
参考答案:
此ASCIZ串的最后少了一个全0字节,应改为:
PATH_NAMEDB‘C:
\PROGRAMS\TEST.DAT’,0
13. 据定义如下:
X1DB10H,100,-1
X2DW10H,100,-1
X3DD?
COUNTEQUX3-X1
变量COUNT的值是,其表示的意义是 。
参考答案:
9X1和X2两个变量所占内存字节单元的个数。
(写为内存单元的个数也正确。
如果写为字单元则为错误)
14. 执行指令
MOVAX,0
MOVAL,09H
ADDAL,4
若要获得结果AX=0103H,则在ADD指令之后,加一条 指令,若要获得结果AL=13H,在ADD指令之后加一条 指令。
参考答案:
DAAAAA
15. 实现AL中高四位置1的指令为。
实现AL中高四位取反的指令为。
参考答案:
ORAL,0F0HXORAL,0F0H
16. 存贮器的地址区域___________为中断向量区。
参考答案:
◎最低1K字节◎(0-3FFH)◎0000开始的1K字节
以上三个答案都正确
17. X、Y、Z是双精度数,他们分别存放在X、X+2、Y、Y+2、Z、Z+2的内存单元中,高位字存放在高位地址中,低位字存放在低位地址中,下列指令序列实现X+Y+24-ZW。
并且用W和W+2单元存放运算结果:
MOVAX,X
MOVDX,X+2
ADDAX,Y
ADCDX,Y+2
ADDAX,24
SUBAX,Z
SUBDX,Z+2
MOVW,AX
MOVW+2,DX
分析以上指令序列,指出程序中出现的错误:
;
。
参考答案:
在ADD和SUB两条指令之间加上ADCDX,0(仅仅写出这条指令就正确)
把SUBDX,Z+2改成SBBDX,Z+2(仅仅写出这条指令就正确)
18. 在数据段中有一个字符串,其长度是17,要求把他们传送到附加段中的一个缓冲区。
DATASEGMENT
MESS1DB‘PERSONALCOMPUTER’
DATAENDS
EXTRASEGMENT
MESS2DB17DUP(?
)
EXTRAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA,ES:
EXTRA
START:
PUSHDS
SUBAX,AX
PUSHAX
LEASI,MESS1
LEADI,MESS2
CLD
REPMOVSB
RET
MAINENDP
CODEENDS
ENDSTART
以上是完整的程序段,请分析主过程,修改主过程中的错误。
1、;
2、;
3、;
4、;
5、。
参考答案:
MOVAX,DATA
MOVDS,AX
MOVAX,EXTRA
MOVES,AX
MOVCX,17只要写出以上5条指令就给分,每条指令1分。
评分标准:
指令中没有写出逗号、没有写对相应数据、写错操作码都视为错误答案。
19. 已知主程序和子程序之间的调用如下:
STACKSEGMENT
DB100DUP(0)
STACKENDS
CODE1SEGMENT
ASSUMECS:
CODE1,SS:
STACK
BEG:
¼
MOVAX,0A3BH
MOVCX,1234H
CALLFARPTRAA;断点(IP)=1110H,(CS)=0200H
¼
CODE1ENDS
CODE2SEGMENT
ASSUMECS:
CODE2
AAPROCFAR
PUSHAX
PUSHCX
BB:
¼
RET
AAENDP
CODE2ENDS
ENDBEG
画出执行到标号BB时,堆栈的情况图。
参考答案:
1234H
0A3BH
1110H
0200H
20. 试编写一个程序把BX寄存器的二进制数用十六进制数的形式在屏幕上显示出来。
参考答案:
1、 CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,07H
PRINTIT:
MOVDL,AL
MOVAH,2
INT21H
DECCH
JNZROTATE
RET
MAINENDP
CODEENDS
ENDSTART
21. 写出一段子程序,完成输出空行的功能。
空出的行数在AX寄存器中。
参考答案:
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,5
OUTPUT:
PUSHAX
CALLDISP
POPAX
DECAX
22. 假定(DS)=2000H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H则
MOVAX,[BX+10]的寻址方式是;操作数的物理地址是。
MOVAX,[BP][SI]的寻址方式是;操作数的物理地址是。
参考答案:
寄存器相对寻址物理地址:
20110H
基址变址寻址物理地址:
150B0H
23. 如果TABLE为数据段中0032H单元的符号名,其中存放的内容为1234H,则执行MOVAX,TABLE后AX寄存器的内容是;执行LEAAX,TABLE后AX寄存器的内容是。
参考答案:
1234H0032H
24. 如果TABLE为数据段中0032H单元的符号名,其中存放的内容为1234H,则执行MOVAX,TABLE后AX寄存器的内容是;执行LEAAX,TABLE后AX寄存器的内容是。
参考答案:
1234H0032H
25. 1、汇编语言程序上机操作的步骤是;
;;
。
参考答案:
用编辑器编写汇编源程序ASM文件
用MASM命令编译ASM文件为OBJ文件
用LINK命令连接OBJ文件为EXE文件
在DOS下运行程序查看结果或者进入DEBUG查看结果
26. 假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q(X,Y为低位字),试说明下列程序段做什么工作?
MOVDX,X+2
MOVAX,X
ADDAX,X
ADCDX,X+2
CMPDX,Y+2
JLL2
JGL1
CMPAX,Y
JBEL2
L1:
MOVAX,1
JMPEXIT
L2:
MOVAX,2
EXIT:
…
分析以上程序段。
写出该程序段实现的功能:
。
参考答案:
程序功能:
AX=1(2P>Q)
=2(2P≤Q)用语言描述也正确。
27. MOVCL,4
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
分析以上程序段。
写出该程序段实现的功能:
。
参考答案:
程序功能:
把DXAX构成的双精度数左移四位
28. 以下程序段实现从键盘输入一个十进制数并转换成二进制数,试分析程序并填写恰当的指令使程序完整。
MOVBX,0
NEWCHAR:
INT21H
SUBAL,30H
JLEXIT
CMPAL,9D
JGEXIT
XCHGAX,BX
MOVCX,10D
XCHGAX,BX
ADDBX,AX
JMPNEWCHAR
EXIT:
RET
参考答案:
MOVAH,1
CBW
MULCX
29. 下列程序段实现计算(V-(X*Y+Z-540))/X,并把结果的商存入AX,余数存入DX,其中X,Y,Z,V都是16位带符号数,已经分别装入了X,Y,Z,V单元中。
试分析程序并填写恰当的指令使程序完整。
MOVAX,X
IMULY
MOVCX,AX
MOVBX,DX
MOVAX,Z
CWD
ADDCX,AX
SUBCX,540
MOVAX,V
SUBAX,CX
SBBDX,BX
IDIVX
参考答案:
ADCBX,DX
SBBDX,0
CWD
平分标准:
有写错指令操作码的不给分。
30. 在ADDR单元中存放着数据Y,试编写一程序把Y中1的个数存入COUNT单元中。
参考答案:
DATASEGMENT
ADDRDWY
COUNTDW?
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,0
MOVAX,ADDR
REPEAT:
TESTAX,0FFFFH
JZEXIT
JNSSHIFT
INCCX
SHIFT:
SHLAX,1
JMPRETEAT
EXIT:
MOVCOUNT,CX
RET
MAINENDP
CODEENDS
ENDSTART
31. 设有5个学生的成绩分别是76,69,84,90,55。
试编写程序统计成绩在80~100,60~79以及60分以下人数的个数分别存放在COUNT开始的三个字节单元中。
参考答案:
DATASEGMENT
ARRAYDB76,69,84,90,55
COUNTDB3DUP(0)
DATAENDS
CODESEGMENT
MAINPROCFAR
ASSUMECS:
CODE,DS:
DATA
START:
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,5
MOVSI,0
LOOP1:
MOVAL,ARRAY[SI]
CMPAL,80
JGEG80
CMPAL,60
JLL60
INCCOUNT[1]
JMPL1
G80:
INCCOUNT[0]
JMPL1
L60:
INCCOUNT[2]
L1:
INCSI
LOOPLOOP1
RET
MAINENDP
CODEENDS
ENDSTART