习题
一、选择题
1.下列描述正确的是_______。
A.汇编语言源程序可直接运行
B.汇编语言属于低级语言
C.汇编程序是用汇编语言编写的程序,运行速度高,阅读方便,属于面向用户的程序语言。
D.汇编语言可以移植
答案:B
2. 分析下面的程序,变量VAR2的偏移地址是______。
DATA SEGMENT
brightstar ORG 2
VAR1 DB 2,3,4
ORG $+3
VAR2 DW 1234H
DATA ENDS
A.02H B.04H C.05H D.08H
答案:D
3.为了使MOV AX, VAR指令执行后,AX寄存器中的内容为4142H,下面哪一种数据定义会产生不正确的结果?
A.VAR DW 4142H B.VAR DW 16706 C.VAR DB 42H, 41H D.VAR DW ‘AB’
答案:C
4.下列伪指令中______是正确的。
tick是什么意思A.ERR1:DW 99 B.ERR2 DB 25*60 C.COUNT EQU 20 D.ONE DB ONE
答案:C
风之谷插曲5.执行下列指令后,寄存器CL的值是_______。
STR1 DW ‘AB’
STR2 DB 16 DUP(?)
CNT EQU $-STR1
MOV CX, CNT
MOV AX, STR1
HLT
A.10H B.12H C.0EH D.0FH
答案:B
二、填空题
1.汇编语言的调试过程如下:建立以______为扩展名的源文件;生成以______为扩展名的目标文件;生成以______为扩展名的可执行文件;使用DEBUG调试程序,调试可执行目标程序。
答案:.asm .obj .exe
2.执行下列指令后,(AX)=______,(BL)=_______。
A DW ‘EF’
B DB ‘ABCDEF’
MOV AX, A
MOV BL, B[3]
HLT
答案:4546H 44H
3.执行下面程序段后,AL中的内容是______。
BUF DW 1234H, 5678H, 0001H
MOV BX, OFFSET BUF
MOV AL, 2
XLAT
答案:78H
4.若符号定义语句如下,则L=_______。
BUF1 DB 1, 2, ‘12’
BUF2 DB 0
L EQU BUF2-BUF1
答案:4online是什么意思
5.执行下列程序段后,BX寄存器间址单元的内容是______。
ORG 1FFFH
DB 4FH, 50H, 51H
MOV BX, 1FFFH
INC [BX]
INC BX
DEC [BX]
答案:4FH
6.对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:
TABLE1 DB ?
TABLE2 DW 20 DUP(?)
TABLE3 DB ‘ABCD’
......
MOV AX, TYPE TABLE1; (AX)=___
MOV BX, TYPE TABLE2; (BX)=____
MOV CX, LENGTH TABLE2; (CX)=_____
MOV DX, SIZE TABLE2 ; (DX)=_____
MOV SI, LENGTH TABLE3; (SI)=_______
答案:1 2 20 40 1
7.下面是多字节加法程序,第一个数是8A0BH,第二个数是D705H。请填写出正确结果。
DATA SEGNEBT
FIRST DB _____, _____, 0H
SECOND DB _____,______
DATA ENDS
CODE SEGMENT
dame ASSUME CS:CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV CX, _____
MOV SI, 0
_________
NEXT: MOV AL, SECOND[SI]
ADC FIRST[SI], AL
INC SI
LOOP NEXT
MOV AL, 0
ADC AL, ______
MOV FIRST[SI], AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
答案:0BH 8AH 05H D7H 2 CLC 0
8.下面程序的功能是求有符号数中绝对值最小的数,并将最小绝对值存放在DAT2字节中,填空使程序正确实现此功能。程序执行后,DAT2单元中的内容是______。
DATA SEGMENT
DAT1 DB 65H, 88H, 20H, 0F6H
N EQU $-DAT1
DAT2 DB ?
DATA ENDS
CODE SEGMENT
_________________
START: MOV AX, DATA
__________
LEA SI, DAT1
MOV CX, N-1
MOV AL, [SI]
TEST AL, 80H
JZ LP0
NEG AL
LP0: MOV DAT2, AL
LP1: _________
MOV BL, [SI]
妇女节的英文 TEST BL, 80H
JZ LP2
NEG BL
LP2: ________
JB LP3
MOV DAT2, BL
MOV AL, BL
LP3: ________
MOV AH, 4CH
INT 21H
CODE ENDS
END START
答案:
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 ;SP=______
POP CX
POP AX
POP BX
NOP ;SP=______
my favorite sports RET
MYSUB ENDP
答案:3000H 0034H 4567H 2FF8H 2FFEH
10.完善程序。BUFFER单元开始放置一个数据块,BUFFER单元存放预计数据块的长度为20H,BUFFER+1单元存放的是实际从键盘输入的字符串的长度,从BUFFER+2开始存放的是从键盘接收的字符,请将这些从键盘接收的字符再在屏幕上显示出来。
MOV DX, OFFSET BUFFER
MOV AH, _______
INT 21H ;读入字符串
jvrLEA DX, ______
MOV AL, ______ ;实际读入的字符串的字符个数
MOV AH, 0
ADD BX, AX
MOV AL, ____
MOV [BX+1], AL
MOV AH, _____
INC DX ;确定显示字符串的首址
INT 21H
MOV AH, _____ ;系统返回DOS
INT 21H
答案: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
……
whateverwillbe
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必须先定义
(4)EQU不能重复定义,在下一次定义前必须用PURGE撤消
(5)转移指令必须转移到指令上,不允许转移到数据变量上。
3.一数据段如下:
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255
QA1=QA GT 3000
QA2=0FFFH
QA3 EQU QA2 XOR 255
QA4=88 MOD 5
QA5=88H SHR 2
QA6 EQU QA3/16+15
ORG 1060H
郑州留学
G1 DB 32, QA, 98/2, NOT 25
G2 DW 0FF6H, OFFSET G2
G3 DW 3DUP(5)
G4 DW SEG G1
SA EQU LENGTH G3
SB EQU SIZE G3
SC=TYPE G3
ORG 1200H
F1 EQU THIS WORD
F2 DB 11H, 22H, 33H, 44H
FF DD 12345H
DATA ENDS
(1)写出每个符号所对应的值
(2)画出内存分配图
(3)执行下列指令后,对应的寄存器的值为多少
MOV AX, WORE PTR FF
AND AX, 0FFH
MOV BX, WORD PTR G1
MOV BX, 255 AND 0FH
ADD AX, OFFSET F2
MOV BX, F1
答案:
(1)
DATA SEGMENT PARA 'DATA' AT 46H
QA EQU 255 ;QA=255
QA1=QA GT 3000 ;255大于3000,命题假,QA1=0
QA2=0FFFH ;QA2=0FFFH
QA3 EQU QA2 XOR 255 ;QA3=0FFFH⊕0FFH=0F00H
QA4=88 MOD 5 ;QA4=3