汇编语言程序第二次作业讲述Word格式.docx
《汇编语言程序第二次作业讲述Word格式.docx》由会员分享,可在线阅读,更多相关《汇编语言程序第二次作业讲述Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
SHLAL,CL
执行上述指令后CF和AL的内容是()。
AF=1,(AL)=00001001
AF=0,(AL)=00001001
AF=1,(AL)=00100000
AF=0,(AL)=00100000
C
3.下面指令序列测试BH中的数是否为奇数,
若为奇数则转移至K1处,横线处的指令应为()。
TESTBH,01H
_____K1
JNE
JZ
JS
JC
4.已知标号NEXT与指令MOVAX,TYPENEXT在同一个段内,则AX的值为()。
1
2
-1
B
5.DATASEGMENT
BUFDB1,2,3,4,5
COUNTEQU-BUF
DATAENDS
在以上数据段中COUNT的值为()
3
4
6
6.下列是8位二进制数的补码,其中真值最大的是( )。
10001000
11111111
00000000
00000001
D
7.16位有符号数的补码所表示的十进制数的范围是( )。
-32767~+32768
-32768~+32767
-65535~+65536
0~65535
8.下面的XCHG指令中,语法正确的是()。
XCHGAL,DS
XCHGBL,[BX]
XCHGAL,0FH
XCHGBUF1,BUF2
9.LDSSI,ES:
[2000H]指令的全部功能是()。
把地址2000H送SI
把地址2000H字单元的内容送SI
把地址2000H字单元内容送SI,把2002H字单元内容送DS
把地址2000H字单元内容送DS,把2002H字单元内容送SI
10.数据定义如下:
BUF1DB10
BUF2DW20DUP(?
)
实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是()。
CMPBUF1,BYTEPTRBUF2+3
MOVAL,BUF1
CMPAL,BYTEPTRBUF2+2
MOVAL,BUF1
CMPAL,BUF2+2
CMPALBUF2+3
(注意:
若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。
在线只需提交客观题答案。
)
二、主观题(共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
参考答案:
错,寄存器类型不匹配
错,不能都是存储器操作数
错,DX不能用于存储器寻址
错,[BX][SI]未指出数据类型
12.
假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1)ADDVAR1,VAR2;
(2)SUBAL,VAR1;
(3)JMPLAB[SI];
(4)JNZVAR1;
(5)JMPNEARLAB;
不能都是存储器操作数
数据类型不匹配
LAB是标号而不是变量名,后面不能加[SI]
VAR1是变量而不是标号
应使用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
JMPBEGIN
STOP:
RET
16.
编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
DECAL;
得到前导字符
准备显示三个字符
MOVCX,3
DISPLAY:
MOVAH,2;
INCDL
LOOPDISPLAY
17.
下面的程序段有错吗?
若有,请指出错误。
CRAYPROC
PUSHAX
ADDAX,BX
RET
ENDPCRAY
程序有错。
改正如下:
CRAYENDP;
CRAY是过程名,应放在ENDP的前面
18.
写一段子程序SKIPLINES,完成输出空行的功能。
空出的行数在AX寄存器中。
程序如下:
CSEGSEGMENT
SKIPLINESPROCFAR
ASSUMECS:
CSEG
PUSHCX
PUSHDX
MOVCX,AX
DISP:
MOVDL,0DH;
显示回车换行,即输出空行
MOVAH,2;
MOVDL,0AH
LOOPDISP
POPDX
POPCX
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