一、单项选择题(只有一个选项正确,共10道小题)
1. 若PORT_VAL<5,则执行指令MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL GE 5) AND 30)后BX的内容是: ( )。
  (A) 20
  (B) 30
  (C) 5
  (D) 10
你选择的答案: 未选择  [错误]
正确答案:A
解答参考:
2. 假设(AL=10010010 
MOV CL4   
SHL ALCL 
执行上述指令后CFAL的内容是(        )。
  (A) AF=1,(AL=00001001
  (B) AF=0,(AL=00001001
  (C) AF=1,(AL=00100000
  (D) AF=0,(AL=00100000
你选择的答案: 未选择  [错误]
正确答案:C
解答参考:
3. 下面指令序列测试BH中的数是否为奇数, 若为奇数则转移至K1处,横线处的指令应为(          )。
TEST BH01H
_____K1                                           
  (A) JNE
  (B) JZ
  (C) JS
  (D) JC
你选择的答案: 未选择  [错误]
正确答案:A
解答参考:
4. 已知标号NEXT与指令 MOV AX,TYPE NEXT在同一个段内,则AX的值为( )。
  (A) 0
  (B) 1
  (C) 2
  (D) -1
你选择的答案: 未选择  [错误]
正确答案:B
解答参考:
5. DATA  SEGMENT
BUF  DB 1,2,3,4,5
COUNT EQU -BUF
DATA  ENDS
在以上数据段中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) 065535
你选择的答案: 未选择  [错误]
正确答案:B
解答参考:
8. 下面的XCHG指令中,语法正确的是(        )
  (A) XCHG AL,DS
  (B) XCHG BL,[BX]
  (C) XCHG AL,0FH
  (D) XCHG BUF1,BUF2
你选择的答案: 未选择  [错误]
正确答案:B
解答参考:
9. LDS SI,ES:[2000H]指令的全部功能是(            )
  (A) 把地址2000HSI
  (B) 把地址2000H字单元的内容送SI
  (C) 把地址2000H字单元内容送SI,2002H字单元内容送DS
  (D) 把地址2000H字单元内容送DS,2002H字单元内容送SI
你选择的答案: 未选择  [错误]
正确答案:C
解答参考:
10. 数据定义如下:
BUF1 DB 10
BUF2 DW 20 DUP(?)
实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是( )。
  (A) CMP BUF1,BYTE PTR BUF2+3
  (B) MOV AL,BUF1
CMP AL,BYTE PTR BUF2+2
  (C) MOV AL,BUF1
CMP AL,BUF2+2
  (D) MOV AL,BUF1
CMP AL BUF2+3
你选择的答案: 未选择  [错误]
正确答案:B
解答参考:
(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。在线只需提交客观题答案。)
二、主观题(共15道小题)
11. 假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?
(1) MOV BP, AL
(2) MOV WORD_OP [BX+4*3][DI], SP
(3) MOV WORD_OP1, WORD_OP2
(4) MOV AX, WORD_OP1[DX]
(5) MOV SAVE_WORD, DS
(6) MOV SP, SS:DATA_WORD [BX][SI]
(7) MOV [BX][SI], 2
(8) MOV AX, WORD_OP1+WORD_OP2
(9) MOV AX, WORD_OP1-WORD_OP2+100
(10) MOV WORD_OP1, WORD_OP1-WORD_OP2
参考答案:
假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?
(1) MOV BP, AL ;错,寄存器类型不匹配
(2) MOV WORD_OP [BX+4*3][DI], SP
(3) MOV WORD_OP1, WORD_OP2 ;错,不能都是存储器操作数
(4) MOV AX, WORD_OP1[DX] ;错,DX不能用于存储器寻址
(5) MOV SAVE_WORD, DS
(6) MOV SP, SS:DATA_WORD [BX][SI]
(7) MOV [BX][SI], 2 ;错,[BX][SI]未指出数据类型
(8) MOV AX, WORD_OP1+WORD_OP2
(9) MOV AX, WORD_OP1-WORD_OP2+100
(10) MOV WORD_OP1, WORD_OP1-WORD_OP2
12. 假设VAR1VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1) ADD VAR1, VAR2
(2) SUB AL, VAR1
(3) JMP LAB [SI]
(4) JNZ VAR1
(5) JMP NEAR LAB
参考答案:
假设VAR1VAR2为字变量,LAB为标号,试指出下列指令的错误之处:
(1) ADD VAR1, VAR2 ;不能都是存储器操作数
(2) SUB AL, VAR1 ;数据类型不匹配
(3) JMP LAB [SI] LAB是标号而不是变量名,后面不能加[SI]
(4) JNZ VAR1 VAR1是变量而不是标号
(5) JMP NEAR LAB ;应使用NEAR PTR
13. 有符号定义语句如下:
BUFF DB 1, 2, 3, ‘123’
EBUFF DB 0
L EQU EBUFF - BUFF
L的值是多少?
参考答案:L=6。
14. 假设程序中的数据定义如下:
LNAME DB 30 DUP (?)
ADDRESS DB 30 DUP (?)
CITY DB 15 DUP (?)
CODE_LIST DB 1, 7, 8, 3, 2
(1) 用一条MOV指令将LNAME的偏移地址放入AX
(2) 用一条指令将CODE_LIST的头两个字节的内容放入SI
(3) 用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。
参考答案:
(1) MOV AX, OFFSET LNAME
(2) MOV SI, WORD PTR CODE_LIST
(3) CODE_LENGTH EQU -CODELIST;此语句必须放在CODELIST语句之后
15. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
参考答案:
程序段如下:
 
BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用
 
INT 21H
 
CMP AL, a ;输入字符<a’吗?
 
JB STOP
 
CMP AL, z ;输入字符>z’吗?
 
JA STOP
 
SUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可
 
MOV DL, AL ;显示一个字符的DOS调用
 
MOV AH, 2
 
INT 21H
 
JMP BEGIN
 
STOP: RET
16. 编写程序,从键盘接收一个小写字母,然后出它的前导字符和后续字符,再按顺序显示这三个字符。
参考答案:
程序段如下:
BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用
INT 21H
CMP AL, a ;输入字符<a’吗?
JB STOP
CMP AL, z ;输入字符>z’吗?
JA STOP
DEC AL ;得到前导字符
MOV DL, AL ;准备显示三个字符
MOV CX, 3
DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用
INT 21H
INC DL
LOOP DISPLAY
STOP: RET
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17. 下面的程序段有错吗?若有,请指出错误。
CRAY PROC
PUSH AX
ADD AX, BX
RET
ENDP CRAY
 
 
 
 
 
offset指令是什么意思参考答案:
程序有错。改正如下:
CRAY PROC
ADD AX, BX
RET
CRAY ENDP CRAY是过程名,应放在ENDP的前面
 
 
 
 
18. 写一段子程序SKIPLINES,完成输出空行的功能。空出的行数在AX寄存器中。
参考答案:
程序如下:
CSEG SEGMENT
SKIPLINES PROC FAR
ASSUME CS: CSEG
BEGIN: PUSH CX
PUSH DX
MOV CX, AX
DISP: MOV DL, 0DH ;显示回车换行,即输出空行
MOV AH, 2 ;显示一个字符的DOS调用
INT 21H
MOV DL, 0AH
MOV AH, 2 ;显示一个字符的DOS调用
INT 21H
LOOP DISP
POP DX
POP CX
RET
SKIPLINES ENDP
END
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。
参考答案:
宏定义如下:
 
CLRB MACRO N, CFIL
 
MOV CX, N
 
CLD
 
MOV AL,   ;;取空格符的ASCII
 
LEA DI, CFIL
 
REP STOSB
 
ENDM
20.  写出分配给下列中断类型号在中断向量表中的物理地址。
(1) INT 12H (2) INT 8
 
参考答案:
(1) 中断类型号12H在中断向量表中的物理地址为00048H00049H0004AH0004BH
(2) 中断类型号8在中断向量表中的物理地址为00020H00021H00022H00023H
 
21. CALL指令来模拟实现INT 21H显示字符T的功能。
参考答案:
MOV AH, 2
 
MOV DL, ‘T’
 
PUSH DS
 
PUSHF ;因中断服务程序的返回指令是IRET,而不是RET
 
MOV BX, 0
 
MOV DS, BX
 
CALL DWORD PTR[21H*4] ;用CALL指令调用21H的中断服务程序
 
POP DS
22. 写出指令将一个字数据从端口1000H输入。
参考答案:
指令为: MOV DX, 1000H
 
IN AX, DX
23. 写出文件代号式磁盘存取操作的错误代码:
(1) 非法文件代号 (2) 路径未发现 (3) 写保护磁盘
 
参考答案:
错误代码为:
(1) 06 (2) 03 (4) 19
 
24. 8088/8086CPU的存储器采用分段方式管理,每个段最多可以有___    ___字节,全部存储空间可以分成____    __个这样大小且互相不重叠的段。
参考答案: 64K    16
25. 已知[X-Y]补=7001H,[X+Y]补=0001H,则[2X]补=          H。
参考答案:7002H