习题
一、选择题
1.下列描述正确的是_______。 A.汇编语言源程序可直接运行 B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。 D.汇编语言可以移植 答案:B
2. 分析下面的程序,变量VAR2的偏移地址是______。 DATA SEGMENT ORG 2 VAR1 DB 2,3,4 ORG $+3 VAR2 DW 1234H DATA ENDS A.02H 答案:D
3.为了使MOV AX, VAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果? A.VAR DW 4142H 答案:C
4.下列伪指令中______是正确的。 A.ERR1:DW 99 答案:C
5.执行下列指令后,寄存器CL的值是_______。 STR1 STR2 CNT
DW DB
‘AB’ 16 DUP(?)
$-STR1 CX, CNT AX, STR1
C.0EH
D.0FH
B.ERR2 DB 25*60
C.COUNT EQU 20
D.ONE DB ONE
B.VAR DW 16706
C.VAR DB 42H, 41H
D.VAR DW ‘AB’
B.04H
C.05H
D.08H
EQU MOV MOV HLT B.12H
A.10H 答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm .obj .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
A B
DW DB
‘EF’ ‘ABCDEF’
MOV MOV HLT
AX, A BL, B[3]
44H
1234H, 5678H, 0001H
答案:4546H BUF MOV MOV XLAT 答案:78H
DW AL, 2
3.执行下面程序段后,AL中的内容是______。
BX, OFFSET BUF
4.若符号定义语句如下,则L=_______。 BUF1 BUF2 L
答案:4
5.执行下列程序段后,BX寄存器间址单元的内容是______。 ORG MOV INC INC DEC
1FFFH BX, 1FFFH [BX] BX [BX]
DB 4FH, 50H, 51H
DB 1, 2, ‘12’ DB 0 EQU
BUF2-BUF1
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容: TABLE1 TABLE2 TABLE3 ......
MOV MOV MOV MOV MOV
AX, BX, CX, DX, SI,
TYPE TABLE1; TYPE SIZE
TABLE2; TABLE2 ;
(AX)=___ (BX)=____ (DX)=_____
DB ?
DW 20 DUP(?) DB ‘ABCD’
LENGTH TABLE2; (CX)=_____ LENGTH TABLE3; (SI)=_______
答案:1 2 20 40 1
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。请填写出正确结果。 DATA FIRST DATA CODE
SEGNEBT
DB _____, _____, 0H
DB _____,______ ENDS SEGMENT
SECOND
ASSUME MOV MOV MOV
CS:CODE, DS: DATA
START: MOV AX, DATA
DS, AX CX, _____ SI, 0
_________
AL, SECOND[SI]
FIRST[SI], SI NEXT AL, 0 AL, ______ FIRST[SI], AH, 4CH 21H START 05H
D7H
2
CLC
0
AL AL
ADC INC LOOP MOV ADC MOV MOV INT END
NEXT: MOV
CODE ENDS
答案:0BH 8AH
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DAT2字节中,填空使程序正确实现此功能。程序执行后,DAT2单元中的内容是______。 DATA SEGMENT DAT1 N
DAT2 DATA CODE
DB 65H, 88H, 20H, 0F6H EQU $-DAT1 DB ? ENDS SEGMENT
_________________
__________ LEA SI, DAT1 MOV CX, N-1 MOV AL, [SI] TEST AL, 80H JZ LP0 NEG AL MOV DAT2, AL _________ MOV BL, [SI] TEST BL, 80H JZ LP2 NEG BL ________
START: MOV AX, DATA
LP0: LP1:
LP2:
JB LP3 MOV DAT2, BL MOV AL, BL ________ MOV AH, 4CH INT 21H END
START
LP3:
CODE ENDS 答案:
ASSUME DS:DATA, SS:STACK, CS:CODE MOV DS, AX INC SI CMP DAT2, BL LOOP LP1
DAT2单元中的内容:0AH
9.填空说明在下列程序段执行过程中相应寄存器中的值。假设程序执行前DS=3000H,SS=2000H,SP=3000H,AX=4567H,BX=1234H,CX=6789H。 AND BX, 00FFH CALL MYSUB NOP
;SP=________ ;AX=_______ ;BX=_______
HLT
MYSUB PROC
PUSH AX PUSH BX PUSH CX SUB AX, BX POP CX POP AX POP BX NOP RET
;SP=______ ;SP=______
MYSUB ENDP
答案:3000H 0034H 4567H 2FF8H 2FFEH
10.完善程序。BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。 MOV DX, OFFSET BUFFER MOV AH, _______ INT 21H
;读入字符串
LEA DX, ______
MOV AL, ______ MOV AH, 0 ADD BX, AX MOV AL, ____ MOV [BX+1], AL MOV AH, _____ INC DX INT 21H MOV AH, _____ INT 21H
;实际读入的字符串的字符个数
;确定显示字符串的首址 ;系统返回DOS
答案:0AH BUFFER+1 [BX] '$'或24H 9 4CH
三、问答题
1.变量和标号有哪些属性?它们的区别是什么?
答案:变量、标号还有常量是汇编语言中使用的操作数,是3种基本的数据项。变量和标号都有段属性、偏移属性和类型属性3种属性,但含义不同。
变量通常指存放在存储单元中的值,在程序的运行中是可以修改的。所有的变量都具有3个属性。
(1)段属性:指变量所在段的段基址,此值必须在一个段寄存器中。 (2)偏移属性:指变量所在地址与所在段的段首地址之间的地址偏移字节数。 (3)类型属性:指变量中每个元素所包含的字节数。
标号是可执行指令语句的地址的符号表示,它可作为转移指令和调用指令CALL的目标操作数,以确定程序转向的目标地址,它也具有3个属性:
(1)段属性:指标号所在段的段基址。标号的段是它所出现的那个代码段,由CS指示。 (2)偏移属性:指标号所在地址与所在段的段首地址之间的地址偏移字节数。
(3)类型属性:标号的类型属性指在转移指令中标号可转移的距离,也称距离属性。NEAR和FAR
2.指出下列伪指令语句中的错误: (1) DATA DB 395 (2)PRGM SEG ……
PRGM ENDS (3)ALPHA EQU BETA (4) COUNT EQU 100 COUNT EQU 65 (5) GOON DW 10DUP(?) ……
JMP GOON 答案:
(1)字节变量,范围在0~255 (2)定义段的伪指令为SEGMENT (3)BETA必须先定义