汇编语言程序第二次作业讲述.docx
《汇编语言程序第二次作业讲述.docx》由会员分享,可在线阅读,更多相关《汇编语言程序第二次作业讲述.docx(16页珍藏版)》请在冰豆网上搜索。
汇编语言程序第二次作业讲述
一、单项选择题(只有一个选项正确,共10道小题)
1.若PORT_VAL<5,则执行指令MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)后BX的内容是:
()。
(A) 20
(B) 30
(C) 5
(D) 10
你选择的答案:
未选择 [错误]
正确答案:
A
解答参考:
2.假设(AL)=10010010,
MOVCL,4
SHLAL,CL
执行上述指令后CF和AL的内容是()。
(A) AF=1,(AL)=00001001
(B) AF=0,(AL)=00001001
(C) AF=1,(AL)=00100000
(D) AF=0,(AL)=00100000
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
3.下面指令序列测试BH中的数是否为奇数, 若为奇数则转移至K1处,横线处的指令应为()。
TESTBH,01H
_____K1
(A) JNE
(B) JZ
(C) JS
(D) JC
你选择的答案:
未选择 [错误]
正确答案:
A
解答参考:
4.已知标号NEXT与指令MOVAX,TYPENEXT在同一个段内,则AX的值为()。
(A) 0
(B) 1
(C) 2
(D) -1
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
5.DATASEGMENT
BUFDB1,2,3,4,5
COUNTEQU-BUF
DATAENDS
在以上数据段中COUNT的值为()
(A) 3
(B) 5
(C) 4
(D) 6
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
6.下列是8位二进制数的补码,其中真值最大的是( )。
(A) 10001000
(B) 11111111
(C) 00000000
(D) 00000001
你选择的答案:
未选择 [错误]
正确答案:
D
解答参考:
7.16位有符号数的补码所表示的十进制数的范围是( )。
(A) -32767~+32768
(B) -32768~+32767
(C) -65535~+65536
(D) 0~65535
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
8.下面的XCHG指令中,语法正确的是()。
(A) XCHGAL,DS
(B) XCHGBL,[BX]
(C) XCHGAL,0FH
(D) XCHGBUF1,BUF2
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
9.LDSSI,ES:
[2000H]指令的全部功能是()。
(A) 把地址2000H送SI
(B) 把地址2000H字单元的内容送SI
(C) 把地址2000H字单元内容送SI,把2002H字单元内容送DS
(D) 把地址2000H字单元内容送DS,把2002H字单元内容送SI
你选择的答案:
未选择 [错误]
正确答案:
C
解答参考:
10.数据定义如下:
BUF1DB10
BUF2DW20DUP(?
)
实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是()。
(A) CMPBUF1,BYTEPTRBUF2+3
(B) MOVAL,BUF1
CMPAL,BYTEPTRBUF2+2
(C) MOVAL,BUF1
CMPAL,BUF2+2
(D) MOVAL,BUF1
CMPALBUF2+3
你选择的答案:
未选择 [错误]
正确答案:
B
解答参考:
(注意:
若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。
在线只需提交客观题答案。
)
二、主观题(共15道小题)
11. 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?
它们的错误是什么?
(1)MOVBP,AL;
(2)MOVWORD_OP[BX+4*3][DI],SP
(3)MOVWORD_OP1,WORD_OP2;
(4)MOVAX,WORD_OP1[DX];
(5)MOVSAVE_WORD,DS
(6)MOVSP,SS:
DATA_WORD[BX][SI]
(7)MOV[BX][SI],2;
(8)MOVAX,WORD_OP1+WORD_OP2
(9)MOVAX,WORD_OP1-WORD_OP2+100
(10)MOVWORD_OP1,WORD_OP1-WORD_OP2
参考答案:
假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?
它们的错误是什么?
(1)MOVBP,AL;错,寄存器类型不匹配
(2)MOVWORD_OP[BX+4*3][DI],SP
(3)MOVWORD_OP1,WORD_OP2;错,不能都是存储器操作数
(4)MOVAX,WORD_OP1[DX];错,DX不能用于存储器寻址
(5)MOVSAVE_WORD,DS
(6)MOVSP,SS:
DATA_WORD[BX][SI]
(7)MOV[BX][SI],2;错,[BX][SI]未指出数据类型
(8)MOVAX,WORD_OP1+WORD_OP2
(9)MOVAX,WORD_OP1-WORD_OP2+100
(10)MOVWORD_OP1,WORD_OP1-WORD_OP2
12. 假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1)ADDVAR1,VAR2;
(2)SUBAL,VAR1;
(3)JMPLAB[SI];
(4)JNZVAR1;
(5)JMPNEARLAB;
参考答案:
假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1)ADDVAR1,VAR2;不能都是存储器操作数
(2)SUBAL,VAR1;数据类型不匹配
(3)JMPLAB[SI];LAB是标号而不是变量名,后面不能加[SI]
(4)JNZVAR1;VAR1是变量而不是标号
(5)JMPNEARLAB;应使用NEARPTR
13. 有符号定义语句如下:
BUFFDB1,2,3,‘123’
EBUFFDB0
LEQUEBUFF-BUFF
问L的值是多少?
参考答案:
L=6。
14. 假设程序中的数据定义如下:
LNAMEDB30DUP(?
)
ADDRESSDB30DUP(?
)
CITYDB15DUP(?
)
CODE_LISTDB1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入AX。
(2)用一条指令将CODE_LIST的头两个字节的内容放入SI。
(3)用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。
参考答案:
(1)MOVAX,OFFSETLNAME
(2)MOVSI,WORDPTRCODE_LIST
(3)CODE_LENGTHEQU-CODELIST;此语句必须放在CODELIST语句之后
15. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
参考答案:
程序段如下:
BEGIN:
MOVAH,1;从键盘输入一个字符的DOS调用
INT21H
CMPAL,‘a’ ;输入字符<‘a’吗?
JBSTOP
CMPAL,‘z’ ;输入字符>‘z’吗?
JASTOP
SUBAL,20H;转换为大写字母,用ANDAL,11011111B也可
MOVDL,AL;显示一个字符的DOS调用
MOVAH,2
INT21H
JMPBEGIN
STOP:
RET
16. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
参考答案:
程序段如下:
BEGIN:
MOVAH,1;从键盘输入一个字符的DOS调用
INT21H
CMPAL,‘a’ ;输入字符<‘a’吗?
JBSTOP
CMPAL,‘z’ ;输入字符>‘z’吗?
JASTOP
DECAL;得到前导字符
MOVDL,AL;准备显示三个字符
MOVCX,3
DISPLAY:
MOVAH,2;显示一个字符的DOS调用
INT21H
INCDL
LOOPDISPLAY
STOP:
RET
17. 下面的程序段有错吗?
若有,请指出错误。
CRAYPROC
PUSHAX
ADDAX,BX
RET
ENDPCRAY
参考答案:
程序有错。
改正如下:
CRAYPROC
ADDAX,BX
RET
CRAYENDP;CRAY是过程名,应放在ENDP的前面
18. 写一段子程序SKIPLINES,完成输出空行的功能。
空出的行数在AX寄存器中。
参考答案:
程序如下:
CSEGSEGMENT
SKIPLINESPROCFAR
ASSUMECS:
CSEG
BEGIN:
PUSHCX
PUSHDX
MOVCX,AX
DISP:
MOVDL,0DH;显示回车换行,即输出空行
MOVAH,2;显示一个字符的DOS调用
INT21H
MOVDL,0AH
MOVAH,2;显示一个字符的DOS调用
INT21H
LOOPDISP
POPDX
POPCX
RET
SKIPLINESENDP
END
19. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。
字符区首地址及其长度为变元。
参考答案:
宏定义如下:
CLRBMACRON,CFIL
MOVCX,N
CLD
MOVAL,‘ ’ ;;取空格符的ASCII码
LEADI,CFIL
REPSTOSB
ENDM
20. 写出分配给下列中断类型号在中断向量表中的物理地址。
(1)INT12H
(2)INT8
参考答案:
(1)中断类型号12H在中断向量表中的物理地址为00048H、00049H、0004AH、0004BH;
(2)中断类型号8在中断向量表中的物理地址为00020H、00021H、00022H、00023