第4章 8086汇编语言程序格式习题

更新时间:2024-05-08 05:22:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第4章 汇编语言程序格式 习题

练习题 1 单项选择题

1.下列选项中不能作为名字项的是( )。 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 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.1 C.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.标号的类型有 和 。

5.变量的类型有 、 、 、四字(八字节)和十字节。 6.等价语句不能重复定义、等号语句 重复定义。 7.等价语句和等号语句 内存单元。

8.语句“MOV BX,OFFSET A”可用 一条指令代替。

9.若定义“A DW 1234H”,指令“MOV AL,BYTE PTR A”执行后,AL= 。

10.若定义“B DW 1,2,30 DUP(5)”,则B分配的内存单元数是 字节。 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 DD 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= 。 (5)执行完“MOV AL,SIZE B”后,AL= 。 (6)执行完“MOV AL,D”后,AL= 。 (7)执行完“MOV BX,E”后,BX= 。 (8)执行完“MOV AL,A+2”后,AL= 。 7.设数据段定义如下: DATA SEGMENT A DW 1,2,3 B DB ?ABCDEF? C DW ?AB?

D DB 12H,34H,56H E = $+5 DATA ENDS

请回答:(1)用一条指令将B字符串中的字符?E?送AL。

(2)用一条指令将D变量中的第2个、第3个字节的内容送AX。 (3)用一条指令将A变量中的第3个字节送AL。 (4)“MOV AX,C”执行后,AX= 。 (5)“MOV AL,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.设数据段定义如下: DATA SEGMENT A DW 1,2 B DB 3,4 C DB ?ABCD? D = $—C E DB 3 DUP(0)

DATA ENDS

请回答:(1)画出该数据段在内存中的分配示意图。 (2)变量A、B、C、E的偏移地址各是多少? (3)变量D的值是多少? 14.设数据段定义如下: DATA SEGMENT BUF1 DW 123H BUF2 DB ?SIMPLE? BUF3 DW $+4 BUF4 EQU $—BUF1 DATA ENDS

请回答:(1)画出该数据段在内存中的分配示意图。 (2)BUF1、BUF2、BUF3的偏移地址各是多少? (3)BUF4的值是多少?

(4)“MOV AL,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)“MOV AX,D”执行后,AX= 。 五.判断改错题

1.设数据段定义如下,判断各语句是否正确,如有错误则改正。 DATA SEGMENT A DB 123H B DW 23,45678H C DW ?ABCD?

D DB 100 DUP(?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 DATA ENDS

请判断下列指令是否正确,如果有错请改正。 (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 PTR BUF3 (8) MOV BUF5,AL (9) MOV BUF6,BUF2 (10)MOV BX,BUF6

3.判断下列伪指令是否正确,如果有错请改正。 (1)DATA SEG ┇ ENDS

(2)CODE SEGMENT ┇ CODE END (3)MA SEGMENT ┇ ENDM

(4)STACK SEGMENT ?STACK? (5) A SEGMENT B DW 1 C DB 123H A ENDS

(6)MYNAME SEGMENT PARA ┇

MYNAME ENDS 六.程序分析题

1.分析下列程序,说明程序的功能。 DATA SEGMENT

A DB 18H,34H,05H,06H,09H DB 0AH,0CH,11H,12H,14H B DB 3,4 C DB 2 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,2

MOV SI,OFFSET B

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 10 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS: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.分析下列程序,说明程序的功能。 DATA SEGMENT

A DB 12,34,56H,0 B DB 53H,62,31H,0 C DB 4 DUP(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.分析下列程序,说明程序的功能。 DATA SEGMENT A DW ? B DW ? C DW ? D DW ?

E DW 2 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A MOV DX,0 ADD AX,B ADC DX,0 ADD AX,C ADC DX,0 MOV CX,D DIV CX MOV E,AX MOV E+2,DX MOV AH,4CH INT 21H CODE ENDS

END START

5.分析下列程序,说明程序的功能。 DATA SEGMENT A DB 36H

B DB 0DH,0AH,?NUM=? C DB 4 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS: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 BYTE PTR[BX],?H? INC BX

MOV BYTE PTR[BX],?$? LEA DX,B MOV AH, 9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 6.分析下列程序 DATA SGEMENT

A DW 123H,456H,789H B DB 12H,34H,56H,78H

本文来源:https://www.bwwdw.com/article/6pog.html

Top