汇编考试题及答案
ti5冠军-入党转正报告
汇编1
一、单项选择题(每小题1分,共10分)
1、十进制数269变换为十六进制数是(
C)。
(A)10B (B)10C (C)10D (D)10E
2、指令mov 100[si][bp],ax目标操作数的隐含段为(B )。
(A)数据段 (B)堆栈段 (C)代码段 (D)附加段
3、以下语句汇编后,CENTH的值是(C )
buf1 dw 8,19,buf2 db
6,'abc$$',10 dup('5'),CENTH equ buf2—buf1
A.14 B.8 C.4 D.17
4、若栈顶物理地址为20100H,当执行完指令PUSH
AX后,栈顶的物理地址为(D)。
(A)20102H (B)20101H
(C)200FFH (D)200FEH
5、执行下列指令后,正确的结果是(
B)。
MOV AL, 100。MOV BL, -2
(A)AL=100H,BL=02H (B)AL=64H,BL=0FEH
(C)AL=64H,BL=82H (D)AL=100H,BL=0FEH
6、假定AX的内容为-32768,在执行了指令NEG AH后,标志位(SF,OF)为(D )。
(A)0,0 (B)0,1 (C)1,0 (D)1,1
7、设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL
BL”分别执行后OF,CF的值为(B)。
(A)OF=1,CF=0 (B)OF=1,CF=1
(C)OF=0,CF=0 (D)OF=0,CF=1
8、当A≥B时转移的条件转移指令为(A,B为带符号数)(D )。
(A)JA
(B)JAE (C)JG (D)JGE
9、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(A )。
(A)MOV
AL,00H (B)AND AL,00H (C)XOR AL,AL (D)SUB AL,AL
10、已知CALL BX执行前SP=100H,执行后SP的内容为( D)。
(A)100H (B)102H (C)98H (D)0FEH
二、填空题(每空1分,共10分)
1、(00101011)B+(13)D+(1B)H=(123 )Q
2、IBM
PC机内存容量最大为(1M )B,要寻找这样大的空间,需要( )根地址线。
3、有一个由20个字组成的存储区,其起始处段地址为4701H,偏移地址为2
012H。试写出该存储区
首单元和末单元的物理地址分别为( 49022H
)和( 49048H )。
4、已知AL,
BL中数据为带符号数,若求AL∕BL的商,应使用指令序列为:(CBW ) 和( IDIV
BL )。
5、调用程序与子程序之间的参数传递方法有三种,即(
堆栈法 )、( 寄存器法
)和(存储单元 )。
三、指出下列指令的错误并改正(每小题1分,共9分)
1、MUL 20H
立即数不能作为MUL指令的操作数。改正:MUL AL
2、RCR AX , 3 移位次数大于1的时候不允许使用立即数。改正:RCR AX,1
3、CMP [2000H] , LAB 两个操作数不允许同时为存储器操作数。改正:CMP
[2000H],AL
4、LDS DWORD PTR BUFFER
缺少目的操作数。改正:LDS BX,DWORD PTR BUFFER
5、CALL
AL 子程序调用指令的操作数必须是16位或 32为。改正:CALL AX
6、MOV AL,300 无效的操作数。改正:MOV AL,30
7、MOV ???AX ,DI+BX 寻址方式书写不正确。改正:MOV
AX,[DI+BX]
8、MOV [SP] , BX
目的寻址寄存器书写不正确。改正:MOV [BP],BX
9、IN AX , 1234H
端口号大于255的时候不能用立即数。改正IN AX,12H
四、简答题(每小题4分,共16分)
1、8086有哪4种逻辑段?各种逻辑段分别是什么用途?
代码段:用来存放程序的指令序列。 数据段:存放当前运行程序所用的数据。
堆栈段:确定堆栈所在的主存区域。 附加段:是附件的数据段,也可用于数据的存放。
2、请分别用一条汇编语言指令完成如下功能:
(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器。 ADD DX,BX
(2)用寄存器BX和SI的基址变址寻址方式把存储器的1字节与AL寄存器的内容相加,并把结果
送
到AL中。 ADD AL,[BX+SI]
(3)用BX和位移量为0B2H的寄存器相
对寻址方式把存储器中的一个字和CX寄存器的内容相加,
并把结果送回存储器中。 ADD
[BX+0B2H],CX。
(4)用位移量为0520H的直接寻址方式把存储器中的一个字与
数3412H相加,并把结果送回该存储
器中。 ADD
[0520H],3412H。
3、变量和标号有什么属性?
(1) 段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS寄存
器
中。段属性值可以用SEG算符求得。
(2) 偏移属性:标号的偏移地址是从段起始地址到
定义标号的位置之间的字节数。标号偏移量属性值可
由OFFSET算符求得。
(3) 类型属性:类型属性用来指出该标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE<
br>算符求得。
4、什么是子程序的嵌套、递归和重入?
子程序的嵌套:子程序内包含有子程序的调用就是子程序嵌套。
递归:当子程序直接或间接地嵌套调用自身时称为递归调用。
重入:是指子程序被中断后又被
中断服务程序所调用,子程序的重入不同于子程序的递归。重入是被动
地进入,而递归是主动地进入。
五、程序分析题(每小题5分,共20分)
1、下列程序完成的是什么功能?
求AX的绝对值
cmp ax,0, jns nonneg, neg
ax,nonneg:
2、假设X和X+2单元的内容为双字数据P,Y和
Y+2单元的内容为双字数据Q(X单元与Y单元为低
位字),说明下列程序段完成什么工作?
如果2P小于等于Q,则AX=2,否则AX=1
MOV DX, X+2 MOV AX,
X ADD AX, X
ADC DX, X+2 CMP DX, Y+2
JL L2
JG L1 CMP AX, Y JBE L2
L1:MOV AX, 1 HLT;停止工作
L2:MOV AX, 2
HLT
3、下述程序段运行后,S9开始的10个字节存储单元内容是什么?
1,0,3,2,5,4,7,6,9,8
DATA SEGMENT S9
DB 0,1,2,3,4
DB 5,6,7,8,9
DATA ENDS
┆
LEA SI,S9 LEA DI,S9+1 MOV CX,5
LOP: MOV AL,[SI]
XCHG AL,[DI] MOV
[SI],AL
ADD SI,2 ADD DI,2 DEC CX
JNZ LOP
4、分析下面的程序段完成什么功能?
在以DATA为首地址的100个字的无符号的数据中,求出
最小偶数并存入AX寄存器中。
MOV AX,0FFFFH
MOV SI,0
MOV CX,100
AGAIN: MOV BX,DATA[SI]
TEST BX,1
JNZ NEXT
CMP AX,BX
JB NEXT
MOV AX,BX
NEXT: ADD SI,2
LOOP AGAIN
六、 程序填空题(每空只能填一条指令!每空2分,共10分)
下列程序段是把string字符串中所有大写字母改为小写,该字符串以0结尾,请补全程序。
(1)LEA BX,STRING
again: mov al,[bx]
(2)CMP AL,0
jz done
cmp al,'A'
jb next
(3)CMP
AL,'Z'
ja next
(4) ADD
AL,20H
mov [bx],al
next: (5)INC BX
jmp again
done: nop
七、编制程序题(第一题10分,第二题15分,共25分)
1、查表法,实现一位16进制数转换为ASCII码显示
.MODEL SMALL
.STACK
.DATA
ASCII DB
30H,31H,32H,33H,34H,35H,36H,37H,38H,39H 0-9ASCII
DB 41H,42H,43H,44H,45H,46H
;A-F的ASCII
HEX DB 0BH
;任意定义了一个待转换的一位16进制数
.CODE
.STARTUP
LEA
BX,ASCII
MOV AL,HEX
XLAT
MOV DL,AL
MOV AH,2
INT 21H
.EXIT
END
2、
设有一段英文,其字符变量名为ENG,试编写一个程序,查对单词READ在该文中出现次数并存放在
BX寄存器中。
MODEL SMALL
.STACK
.DATA
ENG DB 'SNNREADRAREADUNSUM' 任意定义的一串字符
CNTENG EQU $$-ENG
KEYWORD DB 'READ'
CNTKEY EQU $$-KEYWORD
.CODE
.STARTUP
XOR BX,BX
LEA
SI,ENG
MOV DX,CNTENG
SUB DX,CNTKEY
INC DX
AGAIN:
LEA DI,KEYWORD
MOV CX,CNTKEY
COMPARE:
MOV AL,[SI]
MOV AH,[DI]
INC SI
INC
DI
CMP AL,AH
LOOPZ
COMPARE
JNZ NO_READ
INC
BX
NO_READ:
DEC DX
JNZ AGAIN
.EXIT
END