第三章8086汇编语言程序格式.docx
《第三章8086汇编语言程序格式.docx》由会员分享,可在线阅读,更多相关《第三章8086汇编语言程序格式.docx(22页珍藏版)》请在冰豆网上搜索。
![第三章8086汇编语言程序格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/c982743b-39f7-4557-9a1f-80d1c66433fb/c982743b-39f7-4557-9a1f-80d1c66433fb1.gif)
第三章8086汇编语言程序格式
第三章8086汇编语言程序格式
练习题
3.4.1单项选择题
1.下列选项中不能作为名字项的是()。
A.FHB.A3C.3BD.FADC
2.下列指令不正确的是()。
A.MOVAL,123B.MOVAL,123Q
C.MOVAL,123DD.MOVAL,123H
3.下列指令不正确的是()。
A.MOVBL,OFFSETAB.LEABX,A
C.MOVBX,OFFSETAD.MOVBX,A
4•若定义“BUFDB1,2,3,4”,执行MOVAL,TYPEBUF后AL=()。
A.0B.1C.2D.3
5.若定义“AEQU100”,执行“MOVAX,A”后,AX=()。
A.A的偏移地址B.A单元中的内容
C.100D.A的段地址
6.若定义“BDW1,2,10DUP(0)”,则该伪指令分配()字节单元。
A.10B.20C.22D.24
7.若定义“CDD2,4”,则该伪指令分配()个字节单元。
A.2B.4C.6D.8
8、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。
A、DEBUGB、LINKC、MASMD、EDIT
9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()
文件。
A..LSTB..EXEC..MAPD..ASM
10.LINK命令执行后可以生成一个以()为扩展名的文件。
A.ASMB.EXEC.OBJD.COM
11.一个段最大可定义()字节。
A.1MB.64KC.32KD.16K
12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。
A.BYTEB.WORDC.PARAD.PAGE
13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。
A.相同B.长C.短D.不定
14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。
A.相同B.快C.慢D.不定
15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响()的设定。
A•源程序B.目标程序C.汇编程序D•连接程序
16.设A和B为字变量,C为标号,下列指令中不正确的是()
A.MOVAX,AB.MOVAX,B
C.JNEAD.JMPC
17.代码段中的语句()表示该段结束。
A.ASSUMEB.CODEENDS
C.START:
MOVAX,DATAD.ENDSTART
18.过程定义语句以“过程名PROC”开始,以过程名()结束。
A.ENDSB.ENDPC.ENDMD.END
19.一个段可以放在内存的任何地方,但起始地址应该从一个能被()整除的单元地址开始
A.16B.32C.64D.128
20.在数据定义语句中,下列描述不正确的是()
A•存放存储单元的地址可以用字节表示
B•存放存储单元的地址可以用字表示
C.存放存储单元的地址可以用双字表示
D•存放存储单元的地址可以用四字表示
3.4.2多项选择题
1.在8086汇编语言中,语句的种类有()。
A•指令性语句B•指示性语句C.汇编语句D•说明语句
2.在下列的选项中,不能作为名字的有()
A.AXB.3MAC.ABCDD.MOV
3.在下列的选项中,作为变量的类型有()。
A•字节B•字C•双字D•近程
4.在下列的选项中,作为标号的类型有()。
A.DBB.DDC.NEARD.FAR
5•在运算符OFFSET后可以是()。
A•标号B•变量C表达式D•数字
6•在指令“LEABX,X”中的X可以是()。
A•标号B•变量C表达式D•数字
7.不能分配内存单元的伪指令语句有()。
A•EQUB•DWC.=D•DD
8.定义一个段的伪指令语句有()。
A.NAMESEGMENT
C.NAMEENDP
9.定义一个过程的伪指令语句有(
A.NAMESEGMENT
1•汇编语言的语句有指令语句和,宏指令是的另一种形式。
2.标号的三个属性是段地址、和类型。
3•变量的三个属性是段地址、和类型。
4•标号的类型有和。
5•变量的类型有、、、四字(八字节)和十字节。
6.等价语句不能重复定义、等号语句重复定义。
7•等价语句和等号语句内存单元。
8.语句“MOVBX,OFFSETA”可用一条指令代替。
9•若定义“ADW1234H”,指令“MOVAL,BYTEPTRA”执行后,AL=—。
10.若定义“BDW1,2,30DUP(5)”,则B分配的内存单元数是字节。
11.若定义CDW‘AB'则“MOVAL,BYTEPTRC”执行后,AL=。
12•在程序的操作数项中使用的段名、标号名、变量名和符号名都必须在源程序中先,否则
汇编程序进行汇编时就会。
13.使用伪指令和定义一个段。
14•使用伪指令和定义一个过程。
利用过程定义语句可以把程序分成小段,以便
于、、调试和修改。
15.伪指令表示整个程序结束。
16.宏展开就是用宏定义取代源程序中的宏指令。
若实元个数大于变元个数,则多余的实元—。
若
实元个数少于变元个数,则多余的变元用代替。
17•汇编语言源程序经产生目标文件,它直接在机器上运行,还必须经过后形成可
执行文件。
18.在数据段中使用字符串时,该字符必须用括起来。
当定义含有多个字符的字符串时,只能
使用伪指令。
19.用汇编语言编写的程序称为,其扩展名为。
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.设数据段定义如下:
DATASEGMENT
BUF1
DB
2,3
BUF2
DW
4,5,6
BUF3
DB
2,100DUP(0)
BUF4
DB
‘ABCDE'
BUF5
DW
BUF3
BUF6
EQU
$—BUF3
请回答:
(1)执行“MOV
AX,
(2)执行“LEA
BX,
(3)执行“MOV
CX,
(4)执行“MOV
AL,
(5)执行“MOV
AX,
WORDPTRBUF1”后,AX=
BUF3”后,BX=—
BUF4”后,CX=_
BUF3+2”后,AL=
BUF2+1”后,AH=
DATAENDS
请回答:
(1)该数据段占用的内存有多少字节?
(2)BUF5单元中的值是多少?
(3)BUF6的值是多少?
(4)执行“MOVAL,BUF4+2”指令后,AL=_。
(5)执行“MOVAX,WORDPTRBUF1”指令后,AX=
3•设数据段定义如下:
DATA
A
B
C
D
E
F
DATA
请回答:
SEGMENT
DW23,45
DW‘EF'
=$+5
DB10DUP(?
)
EQU$—D
DWD
ENDS
(1)该数据段占用的内存有多少字节?
(2)C的值为多少?
(3)E的值为多少?
(4)执行“MOVAX,F”指令后,AX=。
(5)执行“MOVAL,BYTEPTRB”指令后,AL=
4•设数据段定义如下:
DATA
SEGMENT
BUF1
DB
36H,3,
2
BUF2
DW
1364H,
253H
BUF3
DB
30DUP
('ABC')
BUF4
DW
$—BUF3
BUF5
DB
100DUP(0)
DATA
ENDS
DATA
SEGMENT
A1
DB
10DUP('')
A2
DW
1234H,5678H,341H
A3
DW
$—A2
A4
DW
A2
A5
DB
7,3,2
DATA
ENDS
5•设数据段定义如下:
(5)执行完“MOVAL
(6)执行完“MOVAL
(7)执行完“MOVBX
(8)执行完“MOVAL
7•设数据段定义如下:
DATASEGMENT
ADW1,2,3
BDB‘ABCDEF'
CDW‘AB'
DDB12H,34H,56H
E=$+5
DATAENDS
请回答:
(1)用一条指令将B字符串中的字符‘E'送AL。
(2)用一条指令将D变量中的第2个、第3个字节的内容送AX。
(3)用一条指令将A变量中的第3个字节送AL。
(4)“MOVAX,C”执行后,AX=。
(5)“MOVAL,E”执行后,AL=。
8•按下列要求写出数据段DATA的相应内容。
(1)TAB是0〜9的ASCII码表。
(2)STR是字符串变量,字符串为COMPUTER。
(3)BUF是100个空格的缓冲区。
(4)COUNT是计算BUF缓冲区中字节数的常量变量。
(5)AD是存放TAB的偏移地址变量。
(6)D是字节变量,数值为15H,2,3
9•按下列要求写出数据段DSEG的相应内容。
(1)STR是存放字符ABCDE的字符串变量。
(2)D是存放十进制BCD数据372,2673,6852的字变量。
(3)BUF是存放10个0的字节缓冲区。
(4)E是存放BUF偏移地址和段地址的双字变量。
(5)F是常量,其值为5。
10•简述宏指令与子程序的主要区别。
11•在操作系统状态下,执行MASM程序对某一汇编语言源程序进行汇编后,除产生目标文件外,
通过对答方式还可以产生对应源程序的另外两个文件。
请指出:
(1)这两个文件的扩展名是什么?
(2)这两个文件的功能是什么?
12•简述汇编程序对宏调用作宏展开的过程。
13•设数据段定义如下:
DATASEGMENT
A
DW
1,2
B
DB
3,4
C
DB
‘ABCD'
D
=
$—C
E
DB
3DUP
DATAENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)变量A、B、C、E的偏移地址各是多少?
(3)变量D的值是多少?
14•设数据段定义如下:
DATASEGMENT
BUF1
DW
123H
BUF2
DB
‘SIMPLE'
BUF3
DW
$+4
BUF4
EQU
$—BUF1
DATAENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)BUF1、BUF2、BUF3的偏移地址各是多少?
(3)BUF4的值是多少?
(4)“MOVAL,BUF2+5”执行后,AL=
15•设数据段定义如下:
DATA
SEGMENT
ORG
=4
A
EQU
100
B
DB
'ABC',2
C
DW
101B
D
EQU
B+4
DATA
ENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)B、C的偏移地址各是多少?
(3)“MOVAX,D”执行后,AX=。
五•判断改错题
1•设数据段定义如下,判断各语句是否正确,如有错误则改正
DATA
SEGMENT
A
DB
123H
B
DW
23,45678H
C
DW
‘ABCD'
D
DB
100DUP('ABC')
E
DB
($—D)/3
DATA
END
2•设数据段定义如下:
DATA
SEGMENT
BUF1
DB
2,3
BUF2
DW
3
BUF3
DD
5
BUF4
EQU
$—BUF1
BUF5
DB
‘ABCD'
BUF6
DW
BUF5
DATAENDS请判断下列指令是否正确,如果有错请改正。
1)
MOV
AX,BUF1
2)
MOV
AL,BUF5
3)
MOV
AX,BUF4
4)
LEA
BL,BUF2
5)
MOV
AX,BUF3
6)
MOV
[BX],TYPE
BUF3
7)
MOV
[BX],WORD
PTRBUF3
8)
MOV
BUF5,AL
9)
MOV
BUF6,BUF2
10)
MOV
BX,BUF6
3.判断下列伪指令是否正确,如果有错请改正。
(1)DATASEG
I
I
I
ENDS
(2)CODESEGMENT
I
I
I
CODEEND
(3)MASEGMENT
I
I
I
ENDM
(4)STACKSEGMENT‘STACK'(5)ASEGMENT
BDW1
CDB123H
AENDS
(6)MYNAMESEGMENTPARA
I
I
I
MYNAMEENDS六.程序分析题1.分析下列程序,说明程序的功能。
DATASEGMENT
A
DB
DB
18H,34H,05H,
0AH,0CH,11H,
06H,09H
12H,
14H
B
DB
3,4
C
DB
2DUP
(0)
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATASTART:
MOVAX,DATA
MOV
DS,AX
LEA
BX,A
MOV
CX,2
MOV
SI,OFFSETB
LEA
DI,C
L:
MOV
AL,[SI]
XLAT
MOV
[DI],AL
INC
SI
INC
DI
LOOP
L
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
2.分析下列程序,说明程序的功能
DATA
SEGMENT
TAB
DB
30H,
31H,
32H,
33H,34H,35H
DB
36H,
37H,
38H,
39H
STR
DB
3,2,
7,6,
8
COUNT
EQU
$—STR
BUF
DB
10DUP(0)
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOV
DS,AX
LEA
BX,TAB
LEA
DI,BUF
MOV
CX,COUNT
LEA
SI,STR
L:
MOV
AL,[SI]
XLAT
MOV
[DI],AL
INC
SI
INC
DI
LOOP
L
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
3.分析下列程序,说明程序的功能DATASEGMENT
A
DB
12,34,56H,0
B
DB
53H,62,31H,0
C
DB
4DUP(0)
DATA
ENDS
CODE
SEGMENT
ASSUME
CS:
CODE,DS:
DATA
START
:
MOV
AX,DATA
MOV
DS,AX
LEA
SI,A
LEA
DI,B
LEA
BX,C
MOV
CX,4
CLC
L:
MOV
AL,[SI]
ADC
AL,[DI]
MOV
[BX],AL
INC
SI
INC
DI
INC
BX
LOOP
L
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
4.分析下列程序,说明程序的功能
?
?
?
?
2DUP(0)
DATASEGMENT
ADW
BDW
CDW
DDW
EDW
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,
DS:
DATA
START:
MOV
MOV
MOV
MOV
ADD
ADC
ADD
ADC
MOV
DIV
AX,DATADS,AXAX,ADX,0AX,BDX,0AX,CDX,0CX,DCX
MOVE,AX
MOVE+2,DX
MOV
AH,4CH
INT
21H
CODEENDS
END
START
5.分析下列程序,说明程序的功能
DATA
SEGMENT
A
DB
36H
B
DB
0DH,0AH,‘NUM='
C
DB
4DUP(0)
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOV
DS,AX
MOV
AL,A
LEA
BX,C
MOV
CL,4
SHR
AL,CL
AND
AL,0FH
CMP
AL,9
JNA
N
ADD
AL,7
N:
ADD
AL,30H
MOV
[BX],AL
INC
BX
MOV
AL,A
AND
AL,0FH
CMP
AL,9
JNA
M
ADD
AL,7
M:
ADD
AL,30H
MOV
[BX],AL
INC
BX
MOV
BYTEPTR[BX],
‘H'
INC
BX
MOV
BYTEPTR[BX],
‘$'
LEA
DX,B
MOV
AH,9
INT
21H
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
6.分析下列程序
DATASGEMENT
ADW
123H,456H,789H
BDB12H,34H,56H,78H
CDB10DUP(2,3)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOV
DS,AX
LEA
SI,A
LEA
DI,C
MOV
CX,10
L:
MOV
AL,[SI]
MOV
[DI],AL
INC
SI
INC
DI
LOOP
L
MOV
AH,4CH
INT
21H
CODEENDS
END
START
请回答:
C的前5个字节单元中的内容依次是什么?
分析下列程序
DATASEGMENT
ADB83H,
62H,56H,0FAH,67H
BDB0DATAENDSCODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOV
DS,
AX
LEA
BX,
A
MOV
CX,
5
L
:
MOV
AL,[BX]
CMP
AL,
100
JAE
M
INC
BYTE
PTRB
M
:
INC
BX
LOOP
L
MOV
AH,
4CH
INT
21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
(2)程序运行后,B中的内容是多少?
8.分析下列程序。
DATASEGMENT
ADB23H
BDB67H
CDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATASTART:
MOVAX,DATA
MOVDS,AX
MOVAL,A
CMPAL,B
JGELXCHGAL,BMOVA,AL
L:
MOVC,ALMOVAH,4CHINT21H
CODEENDS
ENDSTART请回答:
(1)该程序完成什么功能?
(2)程序执行后,A、B、C变量中的值各为多少?
9.宏定义语句如下:
MMACROX,Y,Z
MOVDX,X
MOVAH,Y
INTZ
ENDM
宏调用语句如下:
MBUF1,9,21H
MBUF2,9,21H
请写出上述两条宏调用的宏展开语句。
10.宏定义语句如下:
WMACROX,Y,ZLOCALLLEABX,X
MOVCX,Y
MOVAX,0
L:
ADDAL,[BX]
ADCAH,0
INCBXLOOPLMOVZ,AX
ENDM
请回答:
执行“WBUF
100,C”指令后宏调用的程序功能是什么?