汇编语言考试复习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语⾔考试复习题及答案
⼀、单项选择题(从下列每题的四个选择中选择⼀个正确的,填⼊答题纸的相应位置。
每⼩题
2分,共30分)
1.下列指令有语法错误的是__________。
A) PUSH AL B) ADDC AX,50H
C) MOV [SI],[DI] D) JMP WORD PTR[BX+5]
见书:35页,PUSH
2.执⾏下列程序段后,(AX)= ________。
TAB DW 1,2,3,4,5,6
ENTRY EQU 3
MOV BX, OFFSET TAB
ADD BX,ENTRY
MOV AX,[BX]
A) 0003H B) 0300H C) 0400H D) 0004H
3.NC 指令不影响 _________标志。
A) OF B) CF C) ZF D) SF
4.执⾏下列指令后:
STR1 DW ‘AB’
STR2 DB 16 DUP(?)
CNT EQU $ -STR1
MOV CX,CNT
MOV AX,STR1
HLT
寄存器CL的值是________,寄存器AX的值是________。
① A) 10H B) 12H C) 0EH D) 0FH
② A) 00ABH B) 00BAH C) 4142H D) 4241H
5.汇编语⾔源程序经汇编后不能直接⽣成⽂件。
A).OBJ B).LST C).EXE D).CRF
6.8086 CPU在基址加变址的寻址⽅式中,已知BX=2000H,SI=1234H,则指令“MOV AX,[BX+SI+2]”的源操作在中。
(A)数据段中偏移量为3236H的字节
(B)数据段中偏移量为3234H的字节
(C)附加段中偏移量为3236H的字节
(D)附加段中偏移量为3234H的字节
(A)19,20 (B)20,⽆右孩⼦
(C)⽆左孩⼦,20 (D)⽆左孩⼦,⽆右孩⼦
7.执⾏下⾯的程序段后,DAT1单元的值是。
DAT1 DB 12H,34H
DAT2 DB 56H,78H
MOV AX,WORD PTR DAT1
CMP AX,WORD PTR DAT2
JA DONE
MOV BX,WORD PTR DAT2
MOV WORD PTR DAT2,AX
MOV WORD PTR DAT1,BX
DONE:HLT
A)12H B)34H C)56H D)78H
8.下列指令中,正确的⼀条是。
A) MOV BYTE PTR [BX],1000
B) MOV AX,[SI][DI]
C) LEA BX,4[BX]
D) MOV AX,ARRAY1+ARRAY2
9.执⾏下列指令后:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
HLT
寄存器AH的值是。
A) 92H B) 8CH
C) 8DH D) 00H
10.设(SP)=0100H,(SS)=2000H,执⾏PUSH BP指令后,栈顶的物理地址是。
A) 200FEH B) 0102H
C)20102H D) 00FEH
11.对于下列程序段:
AGAIN:MOV AL,[SI]
MOV ES:[DI],AL
INC SI
INC DI
LOOP AGAIN
也可⽤指令完成同样的功能。
A) REP MOVSB B)REP LODSB
C) REP STOSB D) REPE SCASB
12.下列指令中,不影响标志位的指令是。
A) ROR AL,1 B) JNC Label
C) INT n D) SUB AX,BX
13.下列指令中,正确的⼀条是。
A) MOV AH,BX B) MUL AX,BX
C) MOV SP,SS:DATA-WORD[BX][SI]
D) LEA DS,35[DI]
14.假设V1和V2是⽤DW定义的变量,下列指令中正确的是。
A) MOV V1,V2 B) MOV V1,20H
C) MOV 2000H,V2 D) MOV AL,V1
⼆、填空题(将正确答案填⼊答题纸相应的地⽅。
每题2分,共20分)
1.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执⾏指令push ax后,存放数据21H的物理地址是_________。
2.假定(AX)=96H,(BX)=65H,依次执⾏ADD AX,BX和 DAA指令后,(AL)=______。
3.若定义 DATA DW 1234H ,执⾏MOV BL,BYTE PTR DATA指令后,(BL)=______。
4.若定义 DATA DB 0A5H,5BH,在指令MOV BX,___________DATA中填充,使指令正确执⾏。
5.在 MOV WORD PTR[0074H],55BBH指令的机器代码中,最后⼀个字节是________。
6.写出将寄存器AX 的内容求反的正确指令是___________________。
7.设(AX)=2001H,执⾏CMP AX,AX 后 (AX)=_________________。
8.寄存器间接寻址⽅式中,操作数在__________中。
9.下⾯两个语句的区别在于不能多次赋值,
X1 EQU 1000H
X2=1000H
三、程序分析题(每题5分,共20分)
1.执⾏下列程序后,指出相应寄存器的当前值。
MOV SP,2000H
MOV AX,0F0H
MOV SI,1234H
MOV DX,5678H
PUSH SI
POP DI
SHR AX,1
TEST AX,DX
PUSH DX
HLT
SP=_________; DL内容所在存储器的偏移地址为_________; AX=_________;DX=__________;
标志位ZF为_________。
2.执⾏下列程序段后,给出指定寄存器的内容。
MOV AL,45H
MOV BH,AL
AND BH,0FH
MOV CL,4
SHR AL,CL
MOV BL,AL
BH=__________; BL=________
3.执⾏下列程序段后,给出指定寄存器的内容。
MOV AX,0
MOV BX,1
MOV CX,100
A: ADD AX,BX
INC BX
LOOP A
HLT
执⾏后的结果为(BX)=______;
(AX)=______。
该程序段的功能是________________________。
4.执⾏下列指令后:
STR1 DW ‘AB’
STR2 DB 16DUP(?)
CNT EQU $-STR1
MOV CX,CNT
MOV AX,STR1
HLT
1、寄存器CL的值是__________;
2、寄存器AX的值是___________;
3、如将STR1 DW ‘AB’ 改为 STR1 DB ‘AB’
⽤“MOV AX,WORD PTR STR1” 代替“MOV AX,STR1”后,
寄存器AX的值是______________。
5、执⾏下列指令后:
MOV AX,1234H
MOV CL,4
ROL AX,CL
DEC AX
MOV CX,4
MUL CX
HLT
寄存器AH的值是___________;
寄存器AL的值是___________。
四、程序设计题(每题15分,共30分)
1.编程从键盘输⼊⼀字符串存放在IN-BUF 缓冲区中,然后在下⼀⾏以相反顺序显⽰出来。
2.编写将压缩BCD码转化为对应的两个ASCII码的⼦程序。
模拟试卷答案
(答案不⼀定正确)
1、选择题
1. A
A选项,请先查阅书56页,PUSH指令的⽤法,⼀次只能压⼊⼀个
字(16位)。
B选项,ADC指令(书56页),符合语法要求 (AX) =
(AX) + 50H + CF,C选项,书51页图3-16,[SI] 即 DS:[SI] 指⽰的是内存的存储空间,[DI] 即 DS:[DI] 指⽰的是该物理地址指向的空间存
放的数值,该操作即“存储单元⽴即数”,有关该寻址⽅式见书
P42页下⽅“4.寄存器间接寻址⽅式”。
D.见书92页“(1) PTR”此处
WORD PTR是为了明确[BX+5]存储单元的属性。
2. B
说明:EQU伪指令类似于C语⾔的#define宏,在编译前被转化,见
书96页。
由图可知此题应为 0300H
3. B
INC指令见书56页最下⽅。
4. B C
STR1 DW ‘AB’ 见书98页下⽅字符串表达式
STR2 DB 16 DUP(?) DUP重复指令见书99页
CNT EQU $-STR1 EQU见书96页,$见书104页,EQU不影响$值
MOV CX, CNT
MOV AX, STR1
HLT ⼀般⽤来表⽰程序结束,见书80页
由“STR1 DW ‘AB’”和“STR2 DB 16 DUP(?)”可以写出如右图的存储⽰意。
注意的是代码编译时变成。
STR1 DW ‘AB’
STR2 DB 16 DUP(?)
MOV CX, $-STR1 这⾥的$要在前两句的基础上增加1,表⽰当前,$=0012H。
MOV AX, STR1
⼜因为STR1的地址为0000H,所以(CL)=0012H。
根据书第98页到第99页图(b) 可知应选4142H,选C 5. C
见书86页由图可知,经过汇编后不能直接⽣成EXE⽂件,EXE⽂件必须由LINK.EXE连接⽣成。
6. A
见书43页,[BX+SI+2]的默认段前缀为DS,偏移量应该是BX + SI + 2 = 3236H
7. C
DAT1 DB 12H,34H
DAT2 DB 56H,78H
MOV AX,WORD PTR DAT1 (AX) = 3412H
CMP AX,WORD PTR DAT2 (AX) < 7856H
JA DONE 由于上⾯略过这句
MOV BX,WORD PTR DAT2 (BX) = 7856H
MOV WORD PTR DAT2,AX
MOV WORD PTR DAT1,BX DAT1存放56H
DONE:HLT
8. C
A选项,MOV不能将⽴即数存⼊内存中,B缺少基地址寄存器。
9. C
MOV AX,1234H (AX) = 0001 0010 0011 0100B
MOV CL,4
ROL AX,CL (AX) = 2341H 书69页
DEC AX (AX) = 2340H
MOV CX,4 (CX) = 4
MUL CX 书59页 (AX) = 8D00H
∴(AH)=8DH
HLT
10. A
见书35页,由于PUSH压⼊的是⼀个字,因此SP⾃减2,∵(SP)=0100H,(SP)=(SP)-2∴(SP)=00FEH。
因为(SS)*16D+ (SP)=20000H+00FEH=200FEH。
11. A
12. B
ROR见书69,影响CF,SUB见书58,AF、CF、OF、PF、SF和ZF,INT改变中断标志位,JNC仅判断CF标志位。
13. C
A选项类型不匹配,B语法错误,D见书53页
14. B
A选项不能从内存到内存,C选项不能存⼊⽴即数,D类型不匹
配。
2、填空题
[1] 200FFH [2] 0101H [3] 12H [4] WORD PTR [5] [6] NOT AX [7]
2001H [8] 存储器(书42页)[9] X1 X2
三、程序分析题
1. SP=1FFEH DL偏移地址=1FFFH AX=78H DX=5678H ZF=0
2. BH=05H BL=04H
3. (BX)=101 (AX)=0+1+2+…+100 功能为从0累加到100
4. (CL)=0011H (AX)=4142H (AX)=4241H
5. (AH)=8DH (AL)=00H
三、程序设计题
(参考课堂笔记)
1、6种常⽤的寻址⽅式:寄存器寻址⽅式、⽴即数寻址⽅式、直接寻址⽅式、寄存器间接寻址⽅式、寄存器相对寻址⽅式、基址变址寻址⽅式。
2、指令
(1) 传送类:
数据传送指令MOV
交换指令XCHG
装⼊有效地址指令LEA
注意,这三条指令对状态标志位⽆影响。
(2) 算术运算类:
加法指令ADD 带进位加法指令ADC 加1指令INC 减法指令SUB 带借位减法指令SBB 减1指令DEC
求负数补码指令NEG ⽐较指令CMP
⽆符号数乘法指令MUL(/IMUL)
⽆符号数除法指令DIV
(3) 位操作类:
逻辑与指令AND、逻辑或指令OR、逻辑异或指令XOR、逻辑⾮指令NOT、测试指令TEST;算术左移SAL、算术右移SAR、逻辑左移SHL、逻辑右移SHR、循环左移ROL、循环右移ROR、带进位循环左移RCL、带进位循环右移RCR等。
注意,要掌握逻辑运算指令和测试指令对状态标志位的影响。
(4) 标志位操作指令:
清除进位标志CLC
3、汇编语⾔中的常⽤运算符
(1) 算术运算符:+、-、〔〕(下标运算)
(2) 数值返回运算符:SEG(段起始地址)、OFFSET(偏移地址)、TYPE(类型)、SIZE(字节数)、LENGTH(元素个数)。
(3) 属性运算符:PTR(WORD PTR[BX],即强制类型转换)
4、常⽤伪指令
(1) 符号定义伪指令:等值伪指令EQU、等号伪指令"="。
(2) 数据定义伪指令:DB、DW、DD
注意掌握如何使⽤数据定义伪指令来定义变量,以及为变量赋初值的表达式的⼏种形式:数值表达式、?表达式、字符串表达式、带DUP表达式。
(3) 段结构伪指令
要求掌握:段定义伪指令SEGMENT/ENDS、段寻址伪指令ASSUME、END伪指令在程序中的使⽤;汇编语⾔源程序的分段结构和段寄存器的装⼊。
(4) 定位伪指令ORG与$:在数据段中的使⽤。
CCCBB
DAA
PUSH 指令相对的类型是【字】
1、下列符合汇编语⾔语法要求的语句是:
C.TEST AL,10H,OR 45H
2、若执⾏LOOP AGAIN指令前,CX的值为0,则循环体重复执⾏的次数为(65536(即16^4))
3、已经指令IRET执⾏前,SP=20H,该指令执⾏后,SP的值应为
(1AH)
4、当执⾏完下列指令序列后,标志位OF和CF的值分别为(0,1)
MOV AH,65H
SUB AH,73H
5、已知AX=0305H,则ADD执⾏后,AX的值为(0023H)
ADD:把AX中的⾮压缩BCD数调整为⼆进制数
即:AL<-(AH)*10+(AL) ;(AH)<-00
此题:03*10+05=35D=0023H
6、下列各组语句符合汇编语⾔语法要求的是()
D.DATA DW 'AB'
MOV AL,BYTE PTR DATA+2
7、若AL的第7位状态与BL的第7位状态相同(只有异或符合),则转移到标号OK去执⾏,能实现此功能的程序段是()
A.XOR AL,BL
8、在两个8259A级联的中断系统在中,从8259A链接在主8259A的IR5上,则主8259A和从8259A的ICW3应分别设置为()
A.20H,05H
选择题
1.下列指令正确的是()
D. mov DS, AX
2.设 AH=79H, 当执⾏指令 ADD AH,98H后,标志位CF 和OF的值分别为()
C 1, 0(OF是看加数与和的符号是否相同,是0,否1)
3.下列指令正确的是(A)
A.CALL FAR PTR AX
B. CALL FAR PTR [AX]
B.CALL FAR PTR [BX] D. CALL FAR PTR [DX]
4.JMP BX 的指令寻址⽅式是()
A. 寄存器寻址
5.POPF 的寻址⽅式是()
A. SP 间接寻址
B. 堆栈寻址
C. 寄存器寻址
D. 寄存器间接寻址
6.在 DEBUG 下, u命令的作⽤是()
A. 反汇编命令
B. 汇编命令
C. 查看数据命令
D. 写⼊数据命令
7.8086内存最⼤寻址空间为()
A. 1 MB
B. 64MB
C.128MB
D.256MB
8.伪指令OFFSET 表达的含义是()
A. 端地址值
B.偏移地址值
C. 物理地址值
D.操作数
9.若 X ,Y 为⽆符号数当 X>Y 时转移的条件转移指()
B. JA
C.JB
D.JC
10.设有数据定义 X2 DW 10DUP(0,1,2), 则有指令
[ ]
A. MOV AX, 10
B. MOV AX, 20
C. MOV AX, 30
D. MOV AX, 40
⼆. 判断下列的指令是正确还是错误,错误的说明原因
1.MOV 1000H, AX
2.MUL 34H
3.SAR AX5
4.MOV CS,DS
5.MOV [BX],[SI]
三. 简答题
1.设有数据段定义如下, 请画出内存结构图
Datr segment
Array dw 3,$+2,5,$+6,260
Datr ends
2.简述汇编语⾔上机过程
四.
1.编写⼈机对话程序要求程序执⾏后在显⽰器上输出what is your name?回车换⾏后再输出你的名字后结束。
2.编写程序,找出⼀个字母数组中的最⼩数,存到min单元。
3.设ax和bx 中存放的是⽆符号数,计算|ax-bx|,结果送数据段RESULT字变量中。
问题补充:正确率⾼的话,我再追加10分
提问者: wxfily0607 - 经理四级最佳答案
⼀
1.D
2.C
3.A
4.D
5.D
6._
7.A
8.B
9.B 10._
⼆
1. 错误⽴即数1000h 不能作为⽬的操作数
2. 正确
3. 错误算术右移⼀位sar ax,1 多位要使⽤cx 即把要移动的位数寄存在cx中
4. 错误不允许段寄存器之间直接赋值
5. 错误不允许主存间直接交换数据。