汇编语言 第三章 8086汇编语言程序格式.docx
- 文档编号:27506773
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:31
- 大小:27.76KB
汇编语言 第三章 8086汇编语言程序格式.docx
《汇编语言 第三章 8086汇编语言程序格式.docx》由会员分享,可在线阅读,更多相关《汇编语言 第三章 8086汇编语言程序格式.docx(31页珍藏版)》请在冰豆网上搜索。
汇编语言第三章8086汇编语言程序格式
第三章8086汇编语言程序格式
返回目录
练习题
3.4.1单项选择题
1.下列选项中不能作为名字项的是()。
A.FHB.A3C.3BD.FADC
2.下列指令不正确的是()。
A.MOVAL,123B.MOVAL,123Q
C.MOVAL,123DD.MOVAL,123H
AX是16位寄存器,ah和al都是8位寄存器
ah是AX的高8位,al是AX的低8位
ah=01hal=23h
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的段地址
等价语句的一般使用格式如下:
符号名EQU表达式
作用是左边的符号名代表右边的表达式。
6.若定义“BDW1,2,10DUP(0)”,则该伪指令分配()字节单元。
2+2+10*2=24
A.10B.20C.22D.24
7.若定义“CDD2,4”,则该伪指令分配()个字节单元。
4+4=8
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整除的单元开始,在定位方式选项中应选(D)。
A.BYTEB.WORDC.PARAD.PAGE
13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的(长)。
A.相同B.长C.短D.不定
14.宏指令与子程序相比,子程序调用的执行速度比宏指令的(慢)。
A.相同B.快C.慢D.不定
15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响(A)的设定。
A.源程序B.目标程序C.汇编程序D.连接程序
16.设A和B为字变量,C为标号,下列指令中不正确的是()。
A.MOVAX,AB.MOVAX,B
C.JNEA条件转移指令,格式为JNE标号D.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)。
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可以是(ABC)。
A.标号B.变量C.表达式D.数字
7.不能分配内存单元的伪指令语句有(AC)。
A.EQUB.DWC.=D.DD
8.定义一个段的伪指令语句有(AD)。
A.NAMESEGMENTB.NAMEPROC
C.NAMEENDPD.NAMEENDS
B和C是定义过程的
9.定义一个过程的伪指令语句有()。
A.NAMESEGMENTB.NAMEPROC
C.NAMEENDPD.NAMEENDS
10.宏指令与子程序的主要区别在于(BCD)。
A.完成的功能完全不同B.目标程序的长度不同
C.执行程序的速度不同D.汇编时处理的方式不同
3.4.3填空题
1.汇编语言的语句有指令语句和伪指令,宏指令是指令语句的另一种形式。
2.标号的三个属性是段地址、偏移地址和类型。
3.变量的三个属性是段地址、偏移地址和类型。
4.标号的类型有近程(near)和远程(far)。
5.变量的类型有byte、word、dword、四字(八字节)和十字节。
6.等价(equ)语句不能重复定义、等号(=)语句可以重复定义。
7.等价语句和等号语句不分配内存单元。
8.语句“MOVBX,OFFSETA”可用LEABX,A一条指令代替。
9.若定义“ADW1234H”,指令“MOVAL,BYTEPTRA”执行后,AL=34H。
MOV[BX],WORDPTR10H;立即数对内存单元赋值,两个类型都不明确
MOVBL,BYTEPTRNUM;将内存字型数据取前一个字节数据
MOVBL,BYTEPTRNUM+1;将内存字型数据取后一个字节数据
ptr应该就是pointer,说明地址指针类型。
当两个操作数类型均不明确时,必须用byteptr(字节属性)或Wordptr(字属性)将一个存储器操作数定义为字节或字类型。
10.若定义“BDW1,2,30DUP(5)”,则B分配的内存单元数是64字节。
2+2+30*2=64
11.若定义CDW‘AB’,则“MOVAL,BYTEPTRC”执行后,AL=42H。
42H=66DB的ASCII码值为66
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的存储单元中。
ADB12H,34H,56H,78H
(2)将12、1638H、0E52H存放在字变量B的存储单元中。
BDW12,1638H,0E52H
(3)将字符串COMPUTER存放在C变量的存储单元中。
CDB'COMPUTER'
(4)将D字节变量的100个单元设置为0。
DDB100DUP(0)
(5)将D的偏移地址存放在E变量中。
EDWD
2.设数据段定义如下:
DATASEGMENT
BUF1DB2,3
BUF2DW4,5,6
BUF3DB2,100DUP(0)
BUF4DB‘ABCDE’
BUF5DWBUF3
BUF6EQU$-BUF3
DATAENDS
请回答:
(1)该数据段占用的内存有多少字节?
1+1+2+2+2+1+100+5=114
(2)BUF5单元中的值是多少?
0008H(1+1+2+2+2)
(3)BUF6的值是多少?
108(“$”是汇编语言中的一个预定义符号,等价于当前正汇编到的段的当前偏移值。
指令“jmp$+3”中的“$”表示当前这条指令在代码段中的偏移量。
指令“jmp$+3”表示要向前跳转到距离这条指令3个字节的地方。
若是“jmp$-3”,则表示要向后跳转到距离这条指令3个字节的地方。
“$”可用于表达式,并且可以用于表达式的任意位置。
)
(4)执行“MOVAL,BUF4+2”指令后,AL=43H(C的ASCII码)。
(5)执行“MOVAX,WORDPTRBUF1”指令后,AX=0302H。
3.设数据段定义如下:
DATASEGMENT
ADW23,45
BDW‘EF’
C=$+5
DDB10DUP(?
)
EEQU$-D
FDWD
DATAENDS
请回答:
(1)该数据段占用的内存有多少字节?
2+2+2+10
(2)C的值为多少?
11
(3)E的值为多少?
10
(4)执行“MOVAX,F”指令后,AX=0006H(2+2+2)
(5)执行“MOVAL,BYTEPTRB”指令后,AL=46H(F的ASCII码)。
4.设数据段定义如下:
DATASEGMENT
BUF1DB36H,3,2
BUF2DW1364H,253H
BUF3DB30DUP(‘ABC’)
BUF4DW$—BUF3
BUF5DB100DUP(0)
DATAENDS
请回答:
(1)执行“MOVAX,WORDPTRBUF1”后,AX=。
(2)执行“LEABX,BUF3”后,BX=。
(3)执行“MOVCX,BUF4”后,CX=。
(4)执行“MOVAL,BUF3+2”后,AL=。
(5)执行“MOVAX,BUF2+1”后,AH=。
5.设数据段定义如下:
DATASEGMENT
A1DB10DUP(‘’)
A2DW1234H,5678H,341H
A3DW$—A2
A4DWA2
A5DB7,3,2
DATAENDS
请回答:
(1)用一条指令将A2的偏移地址送BX。
(2)将A1的第6个字节送字符‘A’的ASCII码
(3)将A2的第3个字节的内容送AL。
(4)将A2的第3个单元开始的字内容送AX。
(5)用一条伪指令求出A1和A2所占字节数(设伪指令的变量为C)。
6.设数据段定义如下:
DATASEGMENT
ADW2,3
BDB100DUP(0)
CDD12345678H
DDB$—B
EDWB
DATAENDS
请回答:
(1)用一条指令将C的第2个字节的内容取出并送AL。
(2)执行完“MOVAL,LENGTHB”后,AL=。
(3)执行完“MOVAL,TYPEC”后,AL=。
(4)执行完“MOVAL,LENGTHA”后,AL=。
(5)执行完“MOVAL,SIZEB”后,AL=。
(6)执行完“MOVAL,D”后,AL=。
(7)执行完“MOVBX,E”后,BX=。
(8)执行完“MOVAL,A+2”后,AL=。
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
ADW1,2
BDB3,4
CDB‘ABCD’
D=$—C
EDB3DUP(0)
DATAENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)变量A、B、C、E的偏移地址各是多少?
(3)变量D的值是多少?
14.设数据段定义如下:
DATASEGMENT
BUF1DW123H
BUF2DB‘SIMPLE’
BUF3DW$+4
BUF4EQU$—BUF1
DATAENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)BUF1、BUF2、BUF3的偏移地址各是多少?
(3)BUF4的值是多少?
(4)“MOVAL,BUF2+5”执行后,AL=。
15.设数据段定义如下:
DATASEGMENT
ORG=4
AEQU100
BDB‘ABC’,2
CDW101B
DEQUB+4
DATAENDS
请回答:
(1)画出该数据段在内存中的分配示意图。
(2)B、C的偏移地址各是多少?
(3)“MOVAX,D”执行后,AX=。
FDB3DUP(1,2,DUP(0));9个数顺序为:
1,0,0,1,0,0,1,0,0
GDW′AB′,′CD′;按BADC的ASCII顺序存放,即42H,41H,44H,43H
&0FABH;&续行标志,FABH一个字
LDB5DUP(′Hello′,0DH,0AH);分配35个字节值为Hello〈CR〉〈CF〉重复5次
分析过程~~~~谢谢
课件上写的分配35个字节值为Hello〈CR〉〈CF〉重复5次呢
〈CR〉〈CF〉是什么意思啊?
麻烦了
db是定义字节型的数据,dw定义字类型数据,dd定义双字类型的数据。
dup是重复子句,dup前面的数字是重复的次数,后面的是重复的内容。
先看一个简单例子:
datadb3dup(1,2)
是说定义一串字节数据,1、2重复3次,也就是1、2、1、2、1、2。
再看第一句FDB3DUP(1,2DUP(0))(这里应该是你写错了,多加了一个顿号)
是说定义一串字节型的数据,是1、2dup(0)重复3次;而这里的2dup(0)是说0重复两次。
所以也就是1、0、0重复三次。
即1、0、0、1、0、0、1、0、0。
GDW'AB','CD'
定义两个字数据,分别是'AB'和'CD'。
把'AB'看成一个字,那么A是高字节,B是低字节。
存放时,高字节在高地址,低字节在低地址。
所以就是42H、41H、44H、43H(字符存放时存的是ASCII码)。
LDB5DUP('Hello',0DH,0AH)
这个跟前面的类似,只不过0dh和0ah是回车换行得ASCII码,查查ASCII码就知道了。
2题放的时候顺序是先低后高吗
这个问题其实上面已经提到过了,“AB”是看成一个整体的,“A”就是高字节,高字节放在连续两个字节单元的高地址单元,所以由低到高是42H、41H、44H、43H
3题怎么分析啊?
L是括号里的内容重复5次,括号里是“hello”,0DH,0AH。
hello占用5个字节,加上0DH和0AH不就是7个字节吗?
重复5次,5*7=35个字节啊。
五.判断改错题
1.设数据段定义如下,判断各语句是否正确,如有错误则改正。
DATASEGMENT
ADB123H
BDW23,45678H
CDW‘ABCD’
DDB100DUP(‘ABC’)
EDB($—D)/3
DATAEND
2.设数据段定义如下:
DATASEGMENT
BUF1DB2,3
BUF2DW3
BUF3DD5
BUF4EQU$—BUF1
BUF5DB‘ABCD’
BUF6DWBUF5
DATAENDS
请判断下列指令是否正确,如果有错请改正。
(1)MOVAX,BUF1
(2)MOVAL,BUF5
(3)MOVAX,BUF4
(4)LEABL,BUF2
(5)MOVAX,BUF3
(6)MOV[BX],TYPEBUF3
(7)MOV[BX],WORDPTRBUF3
(8)MOVBUF5,AL
(9)MOVBUF6,BUF2
(10)MOVBX,BUF6
3.判断下列伪指令是否正确,如果有错请改正。
(1)DATASEG
┇
ENDS
(2)CODESEGMENT
┇
CODEEND
(3)MASEGMENT
┇
ENDM
(4)STACKSEGMENT‘STACK’
(5)ASEGMENT
BDW1
CDB123H
AENDS
(6)MYNAMESEGMENTPARA
┇
MYNAMEENDS
六.程序分析题
1.分析下列程序,说明程序的功能。
DATASEGMENT
ADB18H,34H,05H,06H,09H
DB0AH,0CH,11H,12H,14H
BDB3,4
CDB2DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,A
MOVCX,2
MOVSI,OFFSETB
LEADI,C
L:
MOVAL,[SI]
XLAT
MOV[DI],AL
INCSI
INCDI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.分析下列程序,说明程序的功能。
DATASEGMENT
TABDB30H,31H,32H,33H,34H,35H
DB36H,37H,38H,39H
STRDB3,2,7,6,8
COUNTEQU$—STR
BUFDB10DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,TAB
LEADI,BUF
MOVCX,COUNT
LEASI,STR
L:
MOVAL,[SI]
XLAT
MOV[DI],AL
INCSI
INCDI
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3.分析下列程序,说明程序的功能。
DATASEGMENT
ADB12,34,56H,0
BDB53H,62,31H,0
CDB4DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,A
LEADI,B
LEABX,C
MOVCX,4
CLC
L:
MOVAL,[SI]
ADCAL,[DI]
MOV[BX],AL
INCSI
INCDI
INCBX
LOOPL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.分析下列程序,说明程序的功能。
DATASEGMENT
ADW?
BDW?
CDW?
DDW?
EDW2DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,A
MOVDX,0
ADDAX,B
ADCDX,0
ADDAX,C
ADCDX,0
MOVCX,D
DIVCX
MOVE,AX
MOVE+2,DX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.分析下列程序,说明程序的功能。
DATASEGMENT
ADB36H
BDB0DH,0AH,‘NUM=’
CDB4DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,A
LEABX,C
MOVCL,4
SHRAL,CL
ANDAL,0FH
CMPAL,9
JNAN
ADDAL,7
N:
ADDAL,30H
MOV[BX],AL
INCBX
MOVAL,A
ANDAL,0FH
CMPAL,9
JNAM
ADDAL,7
M:
ADDAL,30H
MOV[BX],AL
INCBX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 第三章 8086汇编语言程序格式 第三 8086 程序 格式