汇编语言考试复习资料 2.docx
《汇编语言考试复习资料 2.docx》由会员分享,可在线阅读,更多相关《汇编语言考试复习资料 2.docx(57页珍藏版)》请在冰豆网上搜索。
![汇编语言考试复习资料 2.docx](https://file1.bdocx.com/fileroot1/2023-1/21/673df973-a756-4985-937e-8dc25aaec465/673df973-a756-4985-937e-8dc25aaec4651.gif)
汇编语言考试复习资料2
一、名词解释
存储器:
存储程序数据等信息的记忆装置,微机有ram和rom两种。
堆栈:
以后进先出方式工作的存储空间。
状态标志:
记录指令操作结果的标志,共6位:
of,sf,zf,af,pf和cf。
段寄存器:
保存各逻辑段的起始地址的寄存器,8086?
8088机有4个:
cs,ds,ss,es。
物理地址:
唯一代表存储空间中每个字节单元地址。
汇编语言:
用指令的助记符、符号地址、标号等符号书写程序的语言。
机器语言:
能被计算机识别的语言。
汇编程序:
把汇编语言程序翻译成机器语言程序的系统程序。
指令:
告诉cpu要执行的操作(一般还要指出操作数地址),在程序运行时执行。
伪指令:
由汇编程序在汇编过程中执行的指令。
Cpu:
分析、控制并执行指令的部件,由算术逻辑部件alu和寄存器组成。
Ip:
指示下一条要执行的指令的地址。
Sp:
保存当前栈顶地址的寄存器。
控制地址:
控制操作的标志,如df位。
连接程序:
把若干个模块连接起来成为可执行文件的系统程序。
二、判断(10个)
考点:
(1)mov指令ppt中
(2)第一章中n个二进制数表示的数的范围,分为有符号数和无符号数范围
(3)asc码表(空格、回车、数字、字母)后面有一个程序分析题。
记ABCZabcz对应的值
(4)上机debug中命令,如:
—d
(5)dup
下面判断题必考
1.MOVDS,AX()2.MOVCS,AX()
3.MOVCH,4050H()4.MOVDL,5BH()
5.MOVDX,5BH()6.MOVDX,AL()
7.MOVVA1,VA2()8.MOV45,DL()
三、解答题
(1)段地址,偏移地址的范围注:
课件上有个小例子
(2)与、或、异或三个指令应用
(3)栈指令实现交换[PUSHPUSHPOPPOP]}
注意:
问题问得很详细,注意不要少写答案
1.书上3.8题假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址值为0050H,是指出下列源操作数字段的寻址方式是什么?
其物理地址值是多少?
(1)MOVAX,0ABH立即数寻址无物理地址
(2)MOVAX,BX寄存器寻址无物理地址
(3)MOVAX,[100]直接寻址20100H
(4)MOVAX,VAL直接寻址20050H
(5)MOVAX,[BX]寄存器间接寻址20100H
(6)MOVAX,ES:
[BX]直接寻址21100H
(7)MOVAX,[BP]寄存器间接寻址20010H
(8)MOVAX,[SI]寄存器间接寻址200A0H
(9)MOVAX,[BX+10]寄存器相对寻址20110H
(10)MOVAX,VAL[BX]寄存器相对寻址20150H
(11)MOVAX,[BX][SI]基址变址寻址201A0H
(12)MOVAX,VAL[BX][SI]相对基相变址寻址201F0H
2.书上3.10如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?
指令执行完后AX寄存器的内容是什么?
(1)MOVAX,TABLE是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234H
(2)LEAAX,TABLE是把符号地址TABLE的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H
3.书上3.15求出一下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF、ZF、CF和OF的值。
运算结果:
SF,ZF,CF,OF各位的值(从左至右依次往下~)
(1)1234结果为74D4HSF=0ZF=0CF=0OF=0
(2)4321结果为A5C1HSF=1ZF=0CF=0OF=1
(3)CFA0结果为4240HSF=0ZF=0CF=1OF=0
(4)9D60结果为0000HSF=0ZF=1CF=1OF=0
4.书上3.16求出一下各十六进制数与十六进制数4AE0之差,并根据结果设置标志位SF、ZF、CF和OF的值。
(1)1234结果为5D14SF=0ZF=0CF=0OF=0
(2)5D90结果为A870SF=1ZF=0CF=0OF=1
(3)9090结果为D870SF=1ZF=0CF=0OF=0
(4)EA04结果为34E4SF=0ZF=0CF=1OF=0
5.书上3.17写出执行以下计算的指令序列,其中X、Y、Z、R和W均为存放16位带符号数单元地址。
(1)Z——W+(Z—X)
MOVAX,Z;把Z送到AX
SUBAX,X;Z-X
ADDAX,W;W+(Z-X)
MOVZ,AX;结果保存在Z中
(2).Z——W—(X+6)—(R+9)
MOVAX,R;R送到AX中
ADDAX,9;R+9
MOVBX,X;X送到BX中
ADDBX,6;X+6
ADDAX,BX;(R+9)+(X+6),结果保存在AX中
MOVBX,W;W送到BX中
SUBBX,AX;W-(R+9)-(X+6),连续减去两个数,相当于减去这两个数的和~
MOVZ,BX;最终结果送到Z中
前两道题中必考一道
(3)Z——(W*X)/(Y+6),R——余数
MOVAX,W;把W送到AX
IMULX;W*X注意:
低十六位保存在AX里,高十六位保存在DX里
MOVBX,Y;把Y送到BX
ADDBX,6;Y+6
IDIVBX;(W*X)/(Y+6)注意:
商保存在AX里,余数保存在DX里
MOVZ,AX;把商送到Z中,
MOVR,DX;把余数送到R中
(4)Z——((W—X)/5*Y)*2
MOVAX,W;把W送到AX中
SUBAX,X;W-X
CWD;把AX中的十六位带符号数扩展成为32位,低十六位保存在AX中,高十六位保;在DX中
MOVBX,5;把5送到BX中
IDIVBX;(W-X)/5被除数为32位,除数为16位商为16位
IMULY;上一步结果再乖以Y,积为32位
MOVBX,2;把2送到BX中
IMULBX;上一步乘法所得的积再乘以2,各为64位
MOVZ,EAX;把结果中低32位放入Z双字单元中
MOV[Z+4],EDX;把结果中高32位放入Z+4双字单元中
两道必考一道
6.书上3.18已知程序段如下:
MOVAX,1234H
MOVCL,4
ROLAX,CL
DECAX
MOVCX,4
MULCX
INT20H
每条指令执行完后,AX寄存器的内容是什么?
每条指令执行完后,进位、符号和零标志的值是什么?
程序结束时,AX和DX的内容是什么?
答:
本条指令执行完后AX的内容执行完后CF,SF,ZF的值
MOVAX,1234H1234H000
MOVCL,41234H000
ROLAX,CL2341H100
DECAX2340H100
MOVCX,42340H100
MULCX8918H000
INT20H
程序结束后,(AX)=8918H(DX)=0000H
5.书上3.28下列程序段执行完以后,BX寄存器中的内容是什么?
MOVCL,3
MOVBX,0B7H
ROLBX,1
RORBX,CL
该程序段执行完后,BX寄存器的内容是:
C02DH
四、程序补充分析(6道题3个补充1个分析2个写功能)
书上例题3.763.773.80课件上jmpjcc小程序
汇编语言复习资料
第1、2章微处理器的结构和存储器组成
1、程序设计语言分哪三类?
【机器语言、汇编语言和高级语言】
2、二进制数转十进制、十六制数、十进制数转二进制数、十六制数转十进数。
3、十进制数的压缩和非压缩BCD码表示方法。
4、计算机显示、打印字符的编码一般采用什么码。
【ASCⅡ码】
5、8086微处理器的功能结构分哪两大部件。
【总线接口单元BIU和执行单元EU;BIU负责与存储器接口,EU部分负责指令的执行。
】
6、8086有哪些通用寄存器和段寄存器?
哪些可即做8位又可以作16位通用寄存器?
哪些在指令中可以装偏移地址?
【通用寄存器:
八位:
AL、AH、BL、BH、CL、CH、DL、DH
十六位:
AX、BX、CX、DX、DI、SI、SP、BP
三十二位:
EAX、EBX、ECX、EDX、EDI、ESI、ESP、EBP
既可做八位又可作十六位:
AX、BX、CX、DX段寄存器:
SS、CS、DS、ES、FS】
7、掌握实模式下的内存分段管理方法。
8、堆栈的基本操作有哪两种,操作原则是什么。
对堆栈完成进出栈操作后,堆栈栈顶指针SP如何改变。
9、微机的总线按功能分为哪三大总线。
【地址总线AB、数据总线DB、控制总线CB】
10、8086微机内存是分段管理的,这样存储器单元的逻辑地址分为哪两个两部分,计算为物理地址公式是什么?
【逻辑地址分为段基址和偏移量。
物理地址=10H*段基址+偏移量】
11、标志寄存器中有哪些状态标志位和控制标志位,中文名称和符号分别为什么?
有什么作用?
【状态标志位:
(1)辅助进位标志AF这个标志用于十进制算术运算指令中。
(2)进位标志CF这个标志主要用于多字节数的加、减法运算。
(3)溢出标志OF多用于算术运算中。
(4)符号标志SF它的值与运算结果的最高位相同。
(5)奇偶标志PF这个标志可用于检查在数据传送过程中是否发生错误。
(6)零标志ZF若运算的结果为0,则ZF=1,否则ZF=0。
控制标志位:
(1)方向标志DF若用指令置DF=1,则引起串操作指令为自动减量指令,也就是从高地址到低地址处理字符串;若使DF=0,则串操作指令就为自动增量指令,也就是从低地址到高地址处理字符串。
(2)中断允许标志IF若指令中置IF=1,则允许CPU去接收外部的可屏蔽中断请求;若使IF=0,则屏蔽上述的中断请求,对内部产生的中断不起作用。
(3)追踪标志TF置TF标志,使处理进入单步方式,以便于调试。
在这个方式中,CPU在每条指令执行以后,产生一个内部中断,允许程序在每条指令执行以后进行检查。
】
寻址方式和指令系统
1、汇编语言指令中寻址方式有哪些,能正确识别每种寻址方式?
【P49】
重点掌握立即、寄存器、直接、寄存器间接、基址、变址、基址加变址、带位移基址变址(相对)寻址方式。
【立即寻址:
源操作数是立即数寄存器寻址:
操作数放在寄存器中
直接寻址:
操作数在内存中,内存地址直接告诉了寄存器间接寻址:
操作数在存储器中,但操作数地址的偏移量在寄存器中
基址寻址:
由指定的基址寄存器内容,加上指令中给定的位移量作为操作数的有效地址。
EA=[基址寄存器+位移量]
变址寻址:
由变址SI、DI寄存器内容,加上指令中给定的位移量作为操作数的有效地址。
EA=[变址寄存器+位移量]
基址加变址寻址:
由指令中的基址寄存器内容和变址寄存器内容相加得到操作数的有效地址。
EA=[基址寄存器+变址寄存器]
带位移的基址加变址寻址:
操作数在内存中,由变址寄存器、基址寄存器和位移量相加得到内存有效地址。
EA=基址寄存器+变址寄存器+位移量
2、熟悉讲过的每条指令的功能。
【P58】
3、基本串操作指令有哪五条?
助记符是什么?
【串传送指令MOVSB 串装入指令LODSB 串存储指令STOSB 串比较指令CMPSB 串扫描指令SCASB】
4、8086算术运算指令有哪些?
【P65】DAA和AAA指令的用法及区别。
【P75】
【AAA:
非压缩BCD码加法调整指令;对AL中的加法结果调整调整规则:
若(AL&0FH)>9或标志AF=1,则AL=AL+6,AH=AH+1,AF=1,CF=AF,AL=AL&0FH
DAA:
压缩BCD码加法十进制调整指令调整规则:
若(AL&0FH)>9或标志AF=1,则AL=AL+6,AF=1;若(AL&0F0H)>90H或标志CF=1,则AL=AL+60H,CF=1】
5、AND、OR、XOR、NOT指令主要作用是什么?
哪些是对指定位清0、置1、取反?
【P79】
【AND主要用于:
将指定位清0,其余位不变。
要清0的位与0相与,不变的位与1相与。
OR主要用于:
将指定位置1,其余位不变。
要置1的位与1相或 ,不变的位与0相或
XOR主要用于:
A.将指定位取反,其余位不变。
要取反的位与1相异或,不变的位与0相异或。
B.异或指令还有对寄存器清0的作用,自已与自已相异或,可达到清0目的。
总结:
给某一个寄存器清0的方法,共有4种:
(以AX为例)
(1)MOVAX,0
(2)SUBAX,AX(3)ANDAX,0(4)XORAX,AX
6、SAL、SHR指令的用法。
(移一位和移多位的区别)。
【P83】
7、ADD和ADC,SUB和SBB指令的区别及用法。
【P65】
【ADD:
加法指令SUB:
减法指令ADC:
带进位的加法指令SBB:
带进位的减法指令】
8、指令TEST的用法及作用举例。
(81页)
【TEST:
逻辑测试指令格式:
TESTOPRD1,OPRD2
功能:
完成两个操作数按位进行逻辑与运算,结果反映在标志位上,不保留结果。
应用场合:
用于不希望改变原有操作数的情况下,检测某一位或某几位的状态。
方法:
把测试的数据与某一检测常数相与,结果为零(即ZF=1),则测试位为0,否则为1。
例:
若要测试AL的最低位是否为1,可用
TESTAL,01H
JNZNEXT
ALD7D6D5D4D3D2D1D0
00000001
0000000D0
例:
若要测试BX的最高位是否为0,可用
TESTBX,1000H
JZ NEXT
..BX=1001001101001110
1000000000000000
1000000000000000】
9、DEBUG中各操作命令的作用。
【
(1)退出DEBUG命令Q格式:
Q功能:
退出DEBUG,返回DOS。
(2)显示存储单元命令D格式:
D[存储单元地址]或D[存储单元地址范围]
(3)修改存储单元命令E格式1:
E[存储单元地址][替换内容]格式2:
E[存储单元地址]
(4)检查和修改寄存器内容的命令R
格式1:
R功能:
显示CPU内所有寄存器内容和标志位状态。
格式2:
R寄存名功能:
显示和修改某个寄存器的内容。
例:
RAX如不修改则按回车键,否则键入要修改的内容。
格式3:
RF功能:
显示和修改标志位状态。
(5)运行命令G格式:
G[=起始地址1][地址2…..]
功能:
从起始地址开始运行程序。
如不指定则从当前的CS:
IP开始运行。
(6)跟踪命令T格式1:
T[=[起始地址]]功能:
从指定起始地址开始执行一条指令后停下来,显示所有寄存器内容及标志位的值。
如未指定起始地址则从当前的CS:
IP开始运行。
格式2:
T[=[起始地址][n]]功能:
从指定起始地址开始执行n条指令停下来。
(7)汇编命令A格式:
A[起始地址]功能:
允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区。
(8)反汇编命令U格式1:
U[起始地址]功能:
从起始地址开始反汇编32个字节。
如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。
格式2:
U[起始范围]功能:
对指定范围的存储单元进行反汇编。
(9)命名命令N格式:
N文件名[文件名]功能:
该命令把两个文件标识符格式化在CS:
5CH和CS:
6CH的两个文件控制块中,以便在其后用L或W命令把文件装入或存盘。
(10)装入命令L格式:
L[起始地址]功能:
装入已在CS:
5CH中格式化了的文件控制块所指定的文件。
如未指定起始地址,且装入的为EXE程序,则装入到CS:
0000开始的存储区中,如果装入的为COM结构程序,则装入到CS:
0100开始的存储区中。
(11)写命令W格式:
W[起始地址]功能:
将起始地址开始的数据写入由CS:
5CH处的文件控制块所指定的文件中。
如果未指定地址则数据从CS:
0100开始。
11、指令XCHR和指令XLAT指令的区别。
【P63】
【指令LEA是装入有效地址指令、指令ADC是带进位的加法指令、
指令SBB是带进位的减法指令、指令CMP是比较指令、指令MUL是无符号乘法指令、
指令DIV是无符号除法指令、指令XOR是异或指令、指令CLD标志DF清0指令、
指令STD是标志DF置1指令、指令LOOP是重复控制指令。
】
12、指令REPMOVSB功能,指令REPZCMPSB功能是。
【指令REPMOVSB功能重复执行后面的串传送指令,直到不满足重复条件(CX≠0)
指令REPZCMPSB功能是重复执行后面的串比较指令,直到不满足重复条件(CX≠0且ZF=1)】
13、MOVAX,[BX][DI]是将源操作数所指内存字单元里的值送到AX中,
LEAAX,[BX][DI]是将源操作数指出的地址送到AX中。
第4章伪指令、源程序结构
1、汇编语言的上机操作过程分为哪四个步骤。
【编辑——汇编——连接——运行】
2、标号用来表示指令地址,不可用指令的助记符(关键字)、伪指令(保留字)。
标号在同一程序中必须是唯一的。
3、ASSUME语句的功能是什么。
【ASSUME是保留字,指示段寄存器对应前面定义的哪个段。
】
4、8086汇编语言源程序中语句的结构是由哪四个部分组成。
EXE结构的源程序一般包括哪四个段。
【标号和名字、助记符和定义符、操作数、注释
EXE结构的源程序一般包括:
数据段、堆栈段、附加段、代码段四段】
5、变量和标号有哪三个属性。
标号的类型属性是定义(FAR)和近(NEAR)。
【变量和标号的属性一样,都有段属性(SEGMENT)、偏移属性(OFFSET)、类型属性(TYPE)】
6、回送(分析)操作符(seg,offset,length,sizetype)、属性修改(合成)(ptr,short)操作符各有哪些,使用方法?
【分析操作符:
SEG、OFFSET、TYPE、SIZE、LENGTH合成操作符:
PTR、THIS】【P85】
7、汇编语言一般包括哪三类语句。
【指令语句、伪指令语句、宏指令语句】
8、生成COM文件的源程序其程序结构的两个特点是:
1.程序中第一条可执行语句应从代码段的0100H单元开始存放;2.整个程序只有一个段。
将.EXE文件转换成.COM文件的命令是:
EXE2BIN。
9、段寄存器值的装入。
10、源程序的扩展名【.ASM】,目标文件的扩展名【.OBJ】,可执行文件【.EXE】,命令文件的扩展名【.COM】
11、根据数据定义语句,画出存储空间及内容分配图。
如:
T1DB‘ABC’
T2DW1234H,677AH
T3DB‘BYTE’,-1,2DUP(0,3DUP
(1))
12、结束程序返回操作系统的两种主要方法(常用的和标准序方法)。
第5、6、7、8章
1、汇编语言结构程序有哪三种基本结构。
【顺序结构、分支结构和循环结构】
2、指令JMP、JZ、JNZ、JC、JNC、JA、JB、JG、JL、JS的区别。
在循环控制指令隐含用哪个寄存器作循环次数计数器。
重点掌握LOOP的用法。
【P150】
3、循环程序一般由哪四部分组成。
基本结构形式为哪两种形式。
【初始化部分、循环体、修改部分、控制部分。
基本结构形式:
“先执行,后判断”结构和“先判断,后执行”结构】
4、掌握什么是段内,段间及直接和间接转移以及表示方法。
【P150】
5、在串操作指令中,哪些寄存器的值会自动修改,操作数地址的改变方式,与FLAG的哪个标志位有关?
它为0或1时,地址如何修改。
掌握串操作指令前的重复前缀有哪些,作用各为什么?
注意与重复汇编伪指令的区别。
【P173】
6、在子程序设计中,一般通过哪五种方法传递参数。
【通过寄存器传递、用存储单元传递、通过堆栈传递】
7、什么是中断,中断源,中断矢量表,给出中断类型号后,如何得到中断服务子程序的入口地址。
如何把中断服务子程序的地址写入到中断矢量表中。
【P305】
中断可分为两种:
硬件(外部中断)和内部中断(软件)两种。
8086可处理256种中断。
硬件中断又分为非屏蔽中断和可屏蔽中断。
内部中断又为分哪四种:
除法出错,执行INTO,执行INTN,单步中断。
8、80X86可寻址8位、16位和32位I/O端口范围是多少字节?
IN、OUT指令的用法(直接、DX间接)。
9、掌握I/O查询程序的编写。
10、I/O端口和内存的编址方式有统一编址和独立编址之分。
各是什么管理方式?
11、DOS功能调用的方法。
掌握1号、2号、8号、9号、10号功能调用的使用方法和作用。
【P311】
12、举例说明:
DUP、PTR、PROC、MACRO、IRP、IRPC、REPT各操作符的含义和作用。
13、计算机接口电路有哪三个端口。
【8位端口、16位端口、32位端口】
14、CPU与外设之间交换的信息有哪三种。
【数据信息、状态信息以及控制信息】
15、宏与带参宏的定义方法,宏与子程序的比较,他们的共同点和不同点。
复习各章做过的作业包括评讲过的作业。
考试范围只限讲过的章节,第七、八章授课内容与教材内容有较大差别,结合课件复习。
编程题:
1、子程序设计方法
2、显示程序的设计:
如显示一位或两位十进制数,显示十六制数,显示一个字符串等
3、统计程序的设计:
如统计数据区中,各分数段的人数。
统计数据区中,奇偶数个数
统计字符串中,特征字符的个数,统计数据区中各数据累加和等
4、代码转换程序的设计:
如二进制转ASCII码,数据高半字节和低半字节的交换等
第1章:
基础知识
1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。
DX
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用
2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
DX
A、名字项B、操作项C、操作数项D、注释项
3、可屏蔽中断就是它的请