汇编语言复习提纲.docx
《汇编语言复习提纲.docx》由会员分享,可在线阅读,更多相关《汇编语言复习提纲.docx(42页珍藏版)》请在冰点文库上搜索。
汇编语言复习提纲
2017汇编语言复习提纲
一、考试题型:
1、选择题(20分,每题1分)
2、填空题(20分,每空2分)
3、程序填空题(24分,每空3分)
4、程序分析题(16分,每题4分)
5、编程题(20分,3道题)
二、考试范围与考试形式:
教材第1~9章,笔试,闭卷
考试时间:
2017年6月9日(16周周五)上午8:
10-10:
10
三、考试要点:
第一章1、十进制、二进制、十六进制的相互转换;2、位、字节与字的概念;
3、ASCII码与BCD码的特点。
(常用数字、字母及回车换行空格符的ASCII码各是多少?
)
第二章1、8086CPU内部结构及总线宽度(地址总线宽度和数据总线宽度)
2、8086CPU有哪些寄存器,寄存器的位数、名称及作用;
标志寄存器各个位的名称。
3、内存单元的地址与内容;物理地址的形成与存储器分段结构,逻辑地址与物理地址的关系,段的划分条件及段的大小要求。
第三章1、常用的与数据有关的寻址方式,
包括寻址方式的名称、表示及物理地址的计算方法
2、常用汇编指令的格式和功能
数据传送类指令MOV、LEA、IN/OUT、PUSH/POP、CBW、CWD、XLAT、XCHG
算术运算类指令ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、IMUL、DIV、IDIV逻辑运算与移位AND、OR、XOR、TEST、SHL、SHR、ROR、ROL
转移指令JMP、JNZ/JZ、JG/JL、JBE/JAE、JS/JNS、JC/JNC
串操作指令REP、REPZ、MOVSB、CMPSB、STOSB、STD、CLD循环指令LOOP、LOOPNZ
子程序调用与返回CALL、RET
中断调用与返回INT、IRET
第四章1、常用伪指令的格式与用法
SEGMENT,ENDS、ASSUME、END、DB、DW、LABEL、DUPOFFSET、SEG、TYPE、LENGTH、SIZE、PTR、EQU、ORG、$
1
2、汇编语言的上机过程及各个过程中产生的文件后缀名;
源程序的基本结构
3、debug常用命令的功能及用法(R、D、E、A、U、T、G、P);要明白Debug中使用命令后显示各栏内容的含义。
第五章1、循环程序结构:
循环条件的控制,LOOP指令的用法
2、分支程序结构:
条件转移指令的用法,
分支顺序的安排,分支的汇合
第六章1、子程序定义:
PROC,ENDP
2、子程序的调用与返回
3、子程序参数传递
第七章1、宏定义:
MACRO,ENDM,宏调用与宏展开
2、LOCAL伪指令
第八章1、用IN/OUT直接读取CMOSRAM的内容
2、中断源与中断向量;中断向量表;如何改写中断向量第九章1、键盘的数据端口号、显示器显示的原理、
文本方式下要显示字符对应显存中几个字节的内容。
2、常用BIOS和DOS中断(INT10HINT21H)
INT21H:
输入字符的1号功能调用、显示字符的2号功能调用、
显示字符串的9号功能调用、输入字符串的0AH号功能调用INT10H:
光标定位的2号功能调用、实现清屏的功能调用
2
《汇编语言复习题1》
一、单选题
1.数字1的ASCII码值是()。
C
A.1B.30HC.31HD.20H
2.ASCII码字符使用()位进行编码。
B
A.3B.7C.8D.16
3.汇编语言源程序经过汇编后产生()文件。
B
A..ASMB..OBJC..EXED..DOC
4.汇编语言源程序是()文件。
B
A..EXEB..ASMC..OBJD..DOC
5.汇编语言源程序中定义段的伪指令是()。
A
A.SEGMENT..ENDSB.PROC..ENDPC.MACRO..ENDMD.SEGMENT..END
6.汇编语言源程序中定义过程的伪指令是()。
B
A.SEGMENT..ENDSB.PROC..ENDPC.MACRO..ENDMD.SEGMENT..END
7.8086CPU的地址总线宽度为()。
C
A.8B.16C.20D.32
8.8086CPU的数据总线宽度为()。
C
A.8B.10C.16D.20
9.下列哪个寄存器可拆分成2个8位寄存器()。
B
A.BPB.BXC.CSD.IP
10.8086CPU提供了()个16位寄存器。
C
A.8B.12C.14D.22
11.DEBUG调试程序时查看寄存器内容的命令是()。
D
A.DB.EC.UD.R
12.DEBUG调试程序时查看内存单元内容的命令是()。
D
A.RB.EC.UD.D
13.下列哪个寄存器用来指示当前栈顶的偏移地址()。
A
A.SPB.BXC.BPD.IP
14.下列地址信息与4015H:
000FH确定的内存地址不同的是()。
C
A.4013H:
002FHB.4010H:
005FHC.4000H:
005FHD.4015FH
15.下列哪个寄存器在编程时不能用来保存内存单元的偏移地址()。
B
A.DIB.CXC.BXD.SI
3
16.指令MOVAX,BX中源操作数的寻址方式是()。
B
A.直接寻址B.寄存器寻址C.寄存器间接寻址D.寄存器相对寻址
17.指令MOVAL,STRNG[SI]中源操作数的寻址方式是()。
D
A.直接寻址B.寄存器寻址C.寄存器间接寻址D.寄存器相对寻址18.在8086微机的输入输出指令中,可直接由指令指定的I/O端口号有()个。
C
A.16B.64C.256D.216
19.标志寄存器中下列哪个位是中断标志位()。
D
A.CF
B.OF
C.DF
D.IF
20.标志寄存器中下列哪个位是方向标志位
()。
C
A.CF
B.OF
C.DF
D.IF
21.设SP初值为4000H,执行指令“POPAX”后,SP的值是(
)。
A
A.4002H
B.3FFEH
C.3998H
D.4001H
22.设SP初值为4000H,执行指令“PUSHAX”后,SP的值是(
)。
A
A.3FFEHB.3FFFH
C.3998H
D.4002H
23.在内存分段管理中,
8086CPU能访问到的最小段空间是(
)。
A
A.16B
B.16KB
C.64KB
D.64B
24.在内存分段管理中,
8086CPU能访问到的最大段空间是(
)。
C
A.16B
B.16KB
C.64KB
D.64B
25.8086CPU允许有(
)
个中断源。
D
A.0
B.16
C.64D.256
26.Debug加载程序后查看寄存器内容如下,则该程序第一条指令的起始地
址是()。
Dds=0b2des=0b2dss=0b3dcs=0b3eip=0001
A.00001HB.0b2d1HC.0b3d1HD.0b3e1H
27.下列数据段中内容如下,则与符号COUNT等价的值是()。
DBUFDB2DUP(0,2DUP(1,2,3),3)
COUNTEQU$-BUF
A.3
B.5
C.12
D.16
28.movcx,0
s:
addax,bx
loops
以上指令序列执行后addax,bx指令被执行了(
)次。
A
A.65536
B.65535C.1
D.0
4
29.宏定义体内有标号,程序中要多次调用该宏,则宏定义体内必须使用
()。
C
A.MACROB.XALLC.LOCALD.INCLUDE
30.下列对于Intel8086cpu标志寄存器的说法正确的是()。
D
A.无符号数运算的进位情况由of位记录,有符号数运算的溢出情况由cf位记录。
B.cpu执行每一条指令都会改变标志寄存器的内容。
C.当前指令对flags的影响,不会为后续指令的执行提供依据。
D.并不是所有的条件转移指令都要参考标志寄存器中的相关标志位。
二、填空题
设(DS)=3000H,(ES)=4000H,(SS)=5000H,(BX)=1000H,(BP)=1001H,(SI)=0001H,(DI)=0002H,(31000H)=3412H,(31002H)=7856H,(41000H)=9ABCH,(41002H)=2EF0H,(51000H)=3456H,(51002H)=789AH,
说明下列各条指令执行完后AX寄存器的内容。
1、执行指令
MOV
AX,ES:
[BX]
后(AX)=9ABCH
。
2、执行指令
MOV
AX,[BX+SI]
后(AX)=5634H
。
3、执行指令
MOV
AX,[BP]
后(AX)=9A34H
。
4、写出与指令LEABX,BUFFER完全等效的指令:
MOVBX,OFFSETBUFFER。
5、回车符(Enter)与换行符的ASCII码分别是0DH、0AH。
6、机器执行下列指令序列后,正确的结果是(BL)=05H。
MOVBL,81H
ADDBL,BL
ADCBL,BL
7、下面的程序执行后,(ax)=6。
内存地址
机器码
汇编指令
1000:
0
b80000
movax,0
1000:
3
e8
0100
calls
1000:
6
40
incax
1000:
7
58
s:
popax
8、分配给中断类型号1CH在中断向量表中的物理地址为00070H。
9、定时器中断类型号为08H,则其中断向量在中断向量表中的物理地址为
00020H。
10、若机器进行有符号数运算,则执行下列指令后,(OF)=0。
5
MOVAL,0F0HADDAL,78H
11、若机器进行有符号数运算,则执行下列指令后,(OF)=1。
MOVAL,0F0HADDAL,88H
12、在文本方式下,对应显示屏幕上的每个字符,在显存中由2个字节表示。
13、若给定段地址为0010H,仅通过变化偏移地址寻址,则CPU的寻址范围
为00100H到__100FFH__(请写出物理地址)。
14、写出从端口25H读入一个字节数据的指令INAL,25H。
15、段地址为1000H,若将内存空间10000H~1FFFFH当作栈使用,初始化栈为空,那么寄存器SP的值应设置为(SP)=1FFFDH。
16、存储下一条要执行指令的偏移地址的寄存器是IP(指令指针寄存器)。
17、实现将AX的高8位清零低8位保持不变的指令是ANDAX,00FFH。
18、DEBUG调试程序时单步执行的命令是T。
19、十进制数45的BCD码是01000101。
20、AL中存放某大写字母的ASCII码,要将其转换为对应小写字母的ASCII
码,可用ADDAL,20H指令实现。
三、程序填空题
1、以下是将BX中的二进制数转换为十六进制数(字母用大写A~F)并显示的
程序源文件BINIHEX.ASM,请阅读并完成该程序。
,
START:
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVAL,BL
bx为16位,bx要循环4次,用ch来计次数
bx循环左移后,原来的高四位变为低四位,把
bl的值送给al,以免后面的操作影响bx的值
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,07H
....
PRINTIT:
MOVDL,AL
MOVAH,02H
INT21H
与0fh相与,只保留低四位转换为ASII码
ASII码大于3Ah则al的值大于9,
若小于3Ah,直接输出
ASII码大于3Ah,A的ASII码为41h,
所以要加上7,可以输出相应的ABCD
6
DECCH
JNZROTATE
MOVAH,4CH
INT21H
,
ch为零时跳出循环
2、以下是子程序BCDIASC,请阅读程序并完成填空。
;------功能:
将十进制的两位数的BCD码转换为ASCII码并在屏幕中间显示。
;------参数:
(AL)=十进制的两位数的BCD码,无出口参数。
BCDIASC:
MOVAH,AL
MOVCL,4
SHRAH,CL
ADDAH,30H
ANDAL,0FH
ADDAL,30H
MOVBX,0B800H
MOVES,BX
MOVBYTEPTRES:
[160*12+40*2],AH;在屏幕中间显示
MOVBYTEPTRES:
[160*12+40*2+2],AL
RET;子程序结束
四、程序分析题
1、已知数据段中ARRAY是字符串首地址、COUNT是字符串的长度,ARRAY和
COUNT均定义为字节类型。
分析下面程序段完成的功能是什么?
,
MOVAL,20H
MOVCH,0
MOVCL,COUNT
CLD
LEADI,ARRAY
REPSTOSB
,
答:
用空格符(20H)清除某一字符区。
2、分析下面程序段完成的功能是什么?
,
7
MOVCX,10
L1:
MOVAH,1
INT21H
PUSHAX
LOOPL1
MOVCX,10
L2:
POPDX
MOVAH,2
INT21H
LOOPL2
,
答:
把输入的字符逆向输出。
3、分析下面程序段完成的功能是什么?
,
MOVCH,4
ROTATE:
MOVCL,4
ROLBX,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,7
PRINTIT:
MOVDL,AL
MOVAH,2
INT21H
DECCH
JNZROTATE
,
答:
二进制数(BX)到十六进制数转换并显示。
4、分析下面程序段完成的功能是什么?
,
MOVCX,10
8
LEA
BX,BUF
;
字符串BUF中存放有10个大、小写字母
K2
:
MOVAL,[BX]
CMP
AL,
”Z”
JBE
K1
SUB
AL,20H
MOV
[BX],AL
K1
:
INC
BX
LOOP
K2
,
答:
把小写字母变为大写字母。
5、分析下面程序段的功能
,
DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
┇
LEASI,S9
LEADI,S9+1
MOVCX,5
LOP:
MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
,
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
答:
010*********。
五、编程题
1、请编写程序实现字符串的移动:
将字符串STR1移动到STR2的位置。
DATASEGMENT
STR1DB‘PleaseMovethestringtoString2.’
STR2DB34dup(0)
9
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
movax,data
movds,ax
moves,ax
leasi,STR1
leadi,STR2
movcx,34
cld
repmovsb
movah,4ch
int21h
CODEENDS
ENDSTART
2、已知GRA数组中存放着10个学生的成绩,试编程实现以下功能:
统计不
及格的人数存放在COUNT单元中并计算平均成绩存放在AVG单元中。
DATASEGMENT
GRADB76,68,54,80,45,92,63,58,94,85
AVGDB0
COUNTDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
mainprocfar
pushds
subax,ax
pushax
movax,data
movds,ax
movax,wordptrgrade;数组grade的首字
10
callunpass
callaverage
movax,4ch
int21h
mainendp
unpassprocnear;计算不及格人数
movcx,10;判断10次
movdl,0;不及格的人数
movsi,0;变址指针遍历grade数组
movbl,60
s:
cmpgrade[si],bljlp1
jmpp2
p1:
incdl
p2:
incsi
loops
movcount,dl
ret
unpassendp
avrageprocnear
subax,ax
movcx,10
movbx,0
movdx,0;总成绩
a1:
moval,GRA[bx]
cbw
adddx,ax
incbx
loopa1
movax,dx
movbl,10
divbl
mov[avg],al
11
movah,4ch
int21h
ret
avrageendp
codeends
endstart
12
《汇编语言复习题2》
一、选择题
1.下面关于汇编语言源程序的说法中正确的是()。
B
A.必须要有堆栈段B.一个程序可以有多个代码段
C.必须要有数据段D.只能有一个数据段
2.在汇编语言程序开发中,一般要按顺序经过()过程。
B
a.用文字编辑程序编写源程序
b.用连接程序LINK连接程序
c.用MASM宏汇编程序,编译成目标程序
d.用DEBUG程序调试程序
A.abcdB.acbdC.adcbD.adbc
3.汇编语言编译程序MASM.EXE(编译器)编译的对象是()文件。
C
A..EXEB..OBJC..ASMD..DOC
4.汇编语言源程序经过MASM汇编后产生()文件。
C
A..EXEB..ASMC..OBJD..DOC
5.DEBUG调试程序时查看内存单元内容的命令是()。
A
A.DB.RC.AD.E
6.DEBUG调试程序时查看寄存器内容的命令是()。
B
A.DB.RC.UD.A
7.8086CPU地址总线宽度为()位。
C
A.8B.16C.20D.32
8.8086CPU数据总线宽度为()位。
B
A.8B.16C.20D.32
9.1个CPU的寻址能力为32KB,那么它的地址总线宽度为()。
B
A.13B.15C.18D.32k
10.汇编语言源程序中定义段的伪指令是()。
D
A.REPT,ENDMB.PROC,ENDPC.MACRO,ENDMD.SEGMENT,ENDS
11.汇编语言源程序中定义宏的伪指令是()。
C
A.REPT,ENDMB.PROC,ENDPC.MACRO,ENDMD.SEGMENT,ENDS
12.对于下列程序段:
AGAIN:
MOVAL,[SI]
MOVES:
[DI],AL
INCSI
13
INCDI
LOOPAGAIN
把[sI]
中的内容传送给ES:
[DI]
也可用(
)指令完成同样的
功能。
A
A.REP
MOVSB
串传送
B.REP
LODSB
从串取
C.REP
STOSB
存入串
D.REPESCASB
串扫描
13.
设SP初值为2000H,执行指令“PUSHAX”后,SP的值是(
)。
C
A.1998H
B.1FFFHC.1FFEH
D.2002H
14.设SP初值为2000H,执行指令“POPBX”后,SP的值是(
)。
D
A.1998H
B.1FFFH
C.1FFEHD.2002H
15.
执行下列指令序列后,正确的结果是(
)。
A
MOV
AL,81H
al=81h
ADD
AL,AL
al=81h+81h=02h,cf=1
ADC
AL,AL
02h+02h+cf=05h
A.AL=05H
B.AL=204HC.AL=04H
D.AL=205H
16.
下列指令被编译时会出错的是(
)mul的操作数不能为立即数。
D
A.MULBX
B.MULCLC.MULDAT1
D.MUL56
17.
与MOVBX,OFFSETVAR指令完全等效的指令是(
)。
B
A.MOVBX,VAR
B.LEABX
,VAR
C.LDSBX,VAR
D.MOVBX,SEGVAR
18.
指令指针寄存器是(
)。
C
A.BP
B.SP
C.IP
D.PSW
19.
下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是
(
)。
B
A.AX,BX,CX,DX
B.BX
,BP,SI,DI
C.SP,IP,BP,DX
D.CS
,DS,ES,SS
20.下列数据段中:
BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是()。
B
A.6B.18C.16D.8
其中2DUP(1,2)占用了2*2=4个字节,总共占用了3*6=18个字节。
14
21.设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是()。
C
A.MOVAL,DA1B.MOVWORDPTRDA1,AX
C.MOVDA1+1,AXD.MOVBYTEPTRDA2+1,AL
22.指令MOVBYTEPTR[BX+SI],00H中目的操作数的寻址方式是
()。
D
A.立即寻址B.寄存器寻址C.寄存器间接寻址D.基址变址寻址
23.指令MOVES:
[BX],A