川农汇编语言题库及部分答案解析 下载本文

3.下列指令不正确的是( A )。

A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A

4.若定义“BUF DB 1,2,3,4”,执行MOV AL,TYPE BUF 后AL=( B )。 A.0 B.1 C.2 D.3

5.若定义“A EQU 100”,执行“MOV AX,A”后,AX=( C )。 A.A的偏移地址 B.A单元中的内容 C.100 D.A的段地址

6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配( D )字节单元。 A.10 B.20 C.22 D.24

7.若定义“C DD 2,4”,则该伪指令分配( D )个字节单元。 A.2 B.4 C.6 D.8

8、伪指令是( C )规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT

9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个( A )文件。

A. .LST B. .EXE C. .MAP D. .ASM

10.LINK命令执行后可以生成一个以( B )为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义( B )字节。 A.1M B.64K C.32K D.16K

12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选( D )。

A.BYTE B.WORD C.PARA D.PAGE

13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的(B )。

A.相同 B.长 C.短 D.不定

14.宏指令与子程序相比,子程序调用的执行速度比宏指令的( C )。 A.相同 B.快 C.慢 D.不定

15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响( A )的设定。

A.源程序 B.目标程序 C.汇编程序 D.连接程序

16.设A和B为字变量,C为标号,下列指令中不正确的是( C )。 A.MOV AX,A B.MOV AX,B C.JNE A D.JMP C

17.代码段中的语句( B )表示该段结束。 A.ASSUME B.CODE ENDS C.START:MOV AX,DATA D.END START

18.过程定义语句以“过程名PROC”开始,以过程名( B )结束。 A.ENDS B.ENDP C.ENDM D.END

19.一个段可以放在内存的任何地方,但起始地址应该从一个能被( A 元地址开始。

A.16 B.32 C.64 D.128 20.在数据定义语句中,下列描述不正确的是( A )。 A.存放存储单元的地址可以用字节表示 B.存放存储单元的地址可以用字表示 C.存放存储单元的地址可以用双字表示 D.存放存储单元的地址可以用四字表示 3.4.2 多项选择题

1.在8086汇编语言中,语句的种类有( AB )。

A.指令性语句 B.指示性语句 C.汇编语句 D.说明语句 2.在下列的选项中,不能作为名字的有( ABD )。

A.AX B.3MA C.ABCD D.MOV 3.在下列的选项中,作为变量的类型有( ABC )。

A.字节 B.字 C.双字 D.近程 4.在下列的选项中,作为标号的类型有( CD )。

A.DB B.DD C.NEAR D.FAR 5.在运算符OFFSET后可以是( AB )。

A.标号 B.变量 C.表达式 D.数字 6.在指令“LEA BX,X”中的X可以是( ABC )。

A.标号 B.变量 C.表达式 D.数字 7.不能分配内存单元的伪指令语句有( AC )。

A.EQU B.DW C.= D.DD

)整除的单

8.定义一个段的伪指令语句有( AD )。

A.NAME SEGMENT B.NAME PROC C.NAME ENDP D.NAME ENDS 9.定义一个过程的伪指令语句有( BC )。

A.NAME SEGMENT B.NAME PROC C.NAME ENDP D.NAME ENDS 10.宏指令与子程序的主要区别在于( BCD )。 A.完成的功能完全不同 B.目标程序的长度不同 C.执行程序的速度不同 D.汇编时处理的方式不同 3.4.3 填空题

1.汇编语言的语句有指令语句和 指示性语句(伪指令) ,宏指令是 指令语句 的另一种形式。

2.标号的三个属性是段地址、 偏移地址 和类型。 3.变量的三个属性是段地址、 偏移地址 和类型。

4.标号的类型有 近程(NEAR) 和 远程(FAR) 。

5.变量的类型有 字节(BYTE) 、 字(WORD) 、 双字(DWORD) 、四字(八字节)和十字节。

6.等价语句不能重复定义、等号语句 可以 重复定义。 7.等价语句和等号语句 不分配 内存单元。

8.语句“MOV BX,OFFSET A”可用 LEA BX,A 一条指令代替。 9.若定义“A DW 1234H”,指令“MOV AL,BYTE PTR A”执行后,AL= 34H 。

10.若定义“B DW 1,2,30 DUP(5)”,则B分配的内存单元数是 64 字节。

11.若定义C DW ‘AB’,则“MOV AL,BYTE PTR C”执行后,AL= 42H 。 12.在程序的操作数项中使用的段名、标号名、变量名和符号名都必须在源程序中先 定义 ,否则汇编程序进行汇编时就会 报错 。

13.使用伪指令 “段名 SEGMENT” 和 “段名 ENDS” 定义一个段。 14.使用伪指令 “过程名 PROC” 和 “过程名 ENDP” 定义一个过程。利用过程定义语句可以把程序分成小段,以便于 阅读 、 理解 、调试和修改。 15.伪指令 “END [表达式]” 表示整个程序结束。

16.宏展开就是用宏定义取代源程序中的宏指令。若实元个数大于变元个数,则多余的实元 不予考虑 。若实元个数少于变元个数,则多余的变元用 用空格 代替。 17.汇编语言源程序经 MASM(汇编) 产生目标文件,它 不能 直接在机器上运行,还必须经过 LINK(连接) 后形成可执行文件。

18.在数据段中使用字符串时,该字符必须用 引号 括起来。当定义含有多个字符的字符串时,只能使用 DB 伪指令。

19.用汇编语言编写的程序称为 汇编语言源程序 ,其扩展名为 ASM 。

20.在源程序中只要对某一独立功能的程序段进行一次宏定义,就可以 多 次调用它。

3.4.4 简答题

1.按照下列题目要求写出每小题的伪指令。

(1)将12H、34H、56H、78H存放在字节变量A的存储单元中。 (2)将12、1638H、0E52H存放在字变量B的存储单元中。 (3)将字符串COMPUTER存放在C变量的存储单元中。 (4)将D字节变量的100个单元设置为0。 (5)将D的偏移地址存放在E变量中。 2.设数据段定义如下: DATA SEGMENT BUF1 DB 2,3 BUF2 DW 4,5,6

BUF3 DB 2,100 DUP(0) BUF4 DB ‘ABCDE’ BUF5 DW BUF3 BUF6 EQU $-BUF3 DATA ENDS

请回答 :(1)该数据段占用的内存有多少字节? (2)BUF5单元中的值是多少? (3)BUF6的值是多少?

(4)执行“MOV AL,BUF4+2”指令后,AL= 。

(5)执行“MOV AX,WORD PTR BUF1”指令后,AX= 。 3.设数据段定义如下:

DATA SEGMENT A DW 23,45 B DW ‘EF’ C = $+5

D DB 10 DUP(?) E EQU $-D F DW D DATA ENDS

请回答:(1)该数据段占用的内存有多少字节? (2)C的值为多少? (3)E的值为多少?

(4)执行“MOV AX,F”指令后,AX= 。

(5)执行“MOV AL,BYTE PTR B”指令后,AL= 。 4.设数据段定义如下: DATA SEGMENT BUF1 DB 36H,3,2 BUF2 DW 1364H,253H BUF3 DB 30 DUP(‘ABC’) BUF4 DW $—BUF3

BUF5 DB 100 DUP(0) DATA ENDS

请回答 :(1)执行“MOV AX,WORD PTR BUF1”后,AX= 。 (2)执行“LEA BX,BUF3”后,BX= 。 (3)执行“MOV CX,BUF4”后,CX= 。 (4)执行“MOV AL,BUF3+2”后,AL= 。 (5)执行“MOV AX,BUF2+1”后,AH= 。 5.设数据段定义如下: DATA SEGMENT

A1 DB 10 DUP(‘ ’) A2 DW 1234H,5678H,341H A3 DW $—A2 A4 DW A2