8086汇编语⾔程序格式习题及答案
第4章汇编语⾔程序格式习题
练习题
1 单项选择题
1.下列选项中不能作为名字项的是(C)。
A.FH B.A3 C.3B D.FADC
2.下列指令不正确的是()。
A.MOV AL,123 B.MOV AL,123Q
C.MOV AL,123D D.MOV AL,123H
3.下列指令不正确的是()。
A.MOV BL,OFFSET A (偏移量16位)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=()。
A.0 B.1C.2 D.3
5.若定义“A EQU 100”,执⾏“MOV AX,A”后,AX=()。
A.A的偏移地址B.A单元中的内容
C.100 D.A的段地址
6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。
A.10 B.20 C.22 D.24
7.若定义“C DD 2,4”,则该伪指令分配()个字节单元。
A.2 B.4 C.6 D.8
8、伪指令是()规定的汇编说明符,它在源程序汇编时进⾏说明。
A、DEBUG
B、LINK
C、MASM(汇编程序)
D、EDIT
9.在上机操作过程中,MASM命令执⾏后,除了⽣成⼀个⽬标⽂件外,根据选择还可以⽣成⼀个()⽂件。A..LST B..EXE C..MAP D..ASM
10.LINK命令执⾏后可以⽣成⼀个以()为扩展名的⽂件。
A.ASM B.EXE C.OBJ D.COM
11.⼀个段最⼤可定义()字节。
A.1M B.64K C.32K D.16K
12.若要求⼀个段的起始位置能被256整除的单元开始,在定位⽅式选项中应选()。
A.BYTE B.WORD C.PARA D.PAGE(页)
13.宏指令与⼦程序相⽐,在多次调⽤时,宏指令调⽤的⽬标程序长度⽐⼦程序调⽤的()。
A.相同B.长C.短D.不定
14.宏指令与⼦程序相⽐,⼦程序调⽤的执⾏速度⽐宏指令的()。
A.相同B.快C.慢(恢复断点、保护现场、恢复现场)D.不定
15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。A.源程序B.⽬标程序C.汇编程序D.连接程序
16.设A和B为字变量,C为标号,下列指令中不正确的是()。
A.MOV AX,A(变量)B.MOV AX,B
C.JNE A D.JMP C
17.代码段中的语句()表⽰该段结束。
A.ASSUME B.CODE ENDS
C.START:MOV AX,DATA D.END START
18.过程定义语句以“过程名PROC”开始,以过程名()结束。
A.ENDS B.ENDP C.ENDM D.END
19.⼀个段可以放在内存的任何地⽅,但起始地址应该从⼀个能被()整除的单元地址开始。A.16 B.32 C.64 D.128
20.在数据定义语句中,下列描述不正确的是()。
A.存放存储单元的地址可以⽤字节表⽰
B.存放存储单元的地址可以⽤字表⽰
C.存放存储单元的地址可以⽤双字表⽰
D.存放存储单元的地址可以⽤四字表⽰
2 多项选择题
1.在8086汇编语⾔中,语句的种类有()。
A.指令性语句B.指⽰性语句C.汇编语句D.说明语句
2.在下列的选项中,不能作为名字的有()。
A.AX B.3MA C.ABCD D.MOV
3.在下列的选项中,作为变量的类型有()。
A.字节B.字C.双字D.近程
4.在下列的选项中,作为标号的类型有()。
A.DB B.DD C.NEAR D.FAR
5.在运算符OFFSET后可以是()。
A.标号B.变量C.表达式D.数字
6.在指令“LEA BX,X”中的X可以是()。
A.标号B.变量C.表达式D.数字
7.不能分配内存单元的伪指令语句有()。
A.EQU B.DW C.= D.DD
8.定义⼀个段的伪指令语句有()。
A.NAME SEGMENT B.NAME PROC
C.NAME ENDP D.NAME ENDS
9.定义⼀个过程的伪指令语句有()。
A.NAME SEGMENT B.NAME PROC
C.NAME ENDP D.NAME ENDS
10.宏指令与⼦程序的主要区别在于()。
A.完成的功能完全不同B.⽬标程序的长度不同
C.执⾏程序的速度不同D.汇编时处理的⽅式不同
3 填空题
1.汇编语⾔的语句有指令语句和指⽰性语句,宏指令是指令语句的另⼀种形式。
2.标号的三个属性是段地址、偏移地址和类型。
3.变量的三个属性是段地址、偏移地址和类型。偏移地址
4.标号的类型有NEAR 和FAR 。
5.变量的类型有字节、字、双字、四字(⼋字节)和⼗字节。
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= 。
12.在程序的操作数项中使⽤的段名、标号名、变量名和符号名都必须在源程序中先
定义,否则汇编程序进⾏汇编时就会报错。
13.使⽤伪指令和定义⼀个段。
14.使⽤伪指令和定义⼀个过程。利⽤过程定义语句可以把程序分成⼩段,以便于、、调试和修改。
15.伪指令表⽰整个程序结束。
16.宏展开就是⽤宏定义取代源程序中的宏指令。若实元个数⼤于变元个数,则多余的实元。若实元个数少于变元个数,则多余的变元⽤代替。
17.汇编语⾔源程序经产⽣⽬标⽂件,它直接在机器上运⾏,还必须经
过后形成可执⾏⽂件。
18.在数据段中使⽤字符串时,该字符必须⽤括起来。当定义含有多个字符的字符串时,只能使⽤伪指令。
19.⽤汇编语⾔编写的程序称为,其扩展名为。
20.在源程序中只要对某⼀独⽴功能的程序段进⾏⼀次宏定义,就可以次调⽤它。
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
A5 DB 7,3,2
DATA ENDS
请回答:(1)⽤⼀条指令将A2的偏移地址送BX。
(2)将A1的第6个字节送字符…A?的ASCII码
(3)将A2的第3个字节的内容送AL。
(4)将A2的第3个单元开始的字内容送AX。
(5)⽤⼀条伪指令求出A1和A2所占字节数(设伪指令的变量为C)。6.设数据段定义如下:DATA SEGMENT
A DW 2,3
B DB 100 DUP(0)
C D
D 12345678H
D DB $—B
E DW B
DATA ENDS
请回答:(1)⽤⼀条指令将C的第2个字节的内容取出并送AL。
(2)执⾏完“MOV AL,LENGTH B”后,AL= 。
(3)执⾏完“MOV AL,TYPE C”后,AL= 。
(4)执⾏完“MOV AL,LENGTH A”后,AL= 。