汇编语言学习资料.docx
《汇编语言学习资料.docx》由会员分享,可在线阅读,更多相关《汇编语言学习资料.docx(103页珍藏版)》请在冰点文库上搜索。
汇编语言学习资料
汇编语言期末复习资料整理
第二章
1、寄存器组
(1)通用寄存器
数据寄存器
EAX(32位)AX(16位)AH(8位)(高位)AL(8位)(低位)累加器
EBX(32位)BX(16位)BH(8位)(高位)BL(8位)(低位)基址变址
ECX(32位)CX(16位)CH(8位)(高位)CL(8位)(低位)计数器
EDX(32位)DX(16位)DH(8位)(高位)DL(8位)(低位)数据
指针或变址寄存器
ESP(32位)SP(16位)堆栈指针寄存器
EBP(32位)BP(16位)基址指针寄存器
EDI(32位)DI(16位)目的变址寄存器
ESI(32位)SI(16位)源变址寄存器
(2)专用寄存器
EIP(32位)IP(16位)指令指针寄存器
EFLAGS(32位)FLAGS(16位)标志寄存器
ESP(32位)SP(16位)堆栈指针寄存器
2、标志位的符号表示、
标志位
标志为1
标志为0
OF溢出(是/否)
OV
NV
DF方向(减量/增量)
DN
UP
IF中断(允许/关闭)
EI
DI
SF符号(负/正)
NG
PL
ZF零(是/否)
ZR
NZ
AF辅助进位(是/否)
AC
NA
PF奇偶(偶/奇)
PE
PO
CF进位(是/否)
CY
NC
3、段寄存器
CS(16位)代码段DS(16位)数据段
SS(16位)堆栈段ES(16位)附加段
4、段寄存器和相应存放偏移地址的寄存器之间的默认组合
段
偏移
CS
IP
SS
SP或BP
DS
BX、DI、SI或一个16位数
ES
DI(用于串指令)
第三章
1、七种寻址方式(举例)
立即寻MOVAX,3069H
寄存器寻MOVAL,BH
在内存中的五种寻址
直接寻MOVAX,[2000H]
寄存器间接寻MOVAX,[BX]
寄存器相对寻MOVAX,COUNT[SI]或者MOVAX,[SI+COUNT](不推荐)
基址变址寻址MOVAX,[BP][DI]
相对基址变址寻址MOVAX,MASK[BX][SI]
2、指令系统
I.数据传送指令
(1)通用数据传送指令
MOV传送
MOVSX带符号扩展传送
用源操作数的符号位来填充目的操作数的高位数据位。
例:
MOVSXEAX,CL
把CL寄存器中的8位数,符号扩展为32位数,送到EAX寄存器中。
MOVZX带零扩展传送
恒用0来填充目的操作数的高位数据位
例:
MOVZXDX,AL
把AL寄存器中的8位数,零扩展成16位数,送到DX寄存器中。
PUSH进栈
入栈时高位字节先入栈,低位字节后入栈。
SP指向栈顶。
POP出栈
以“先进后出”方式工作。
SP指向栈顶
PUSHA/PUSHAD所有寄存器进栈
PUSHA(16位):
进栈次序为:
AX,CX,DX,BX,SP,BP,SI,DI
PUSHAD(32位):
进栈次序为:
EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI
POPA/POPAD所有寄存器出栈
POPA(16位):
出栈次序为:
DI,SI,BP,SP,BX,DX,CX,AX
POPAD(32位):
出栈次序为:
EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX
XCHG交换
例:
XCHGAX,BX交换AX与BX中的数据
(2)累加器专用传送指令
(只限于使用累加器)
IN输入
例:
INAX,28H
MOVDATA_WORD,AX
把端口28的内容经过AX传送到存储单元DATA_WORD中。
OUT输出
例:
OUT5,AL
从AL寄存器输出一个字节到端口5。
XLAT换码
(3)地址传送指令
LEA有效地址送寄存器
LDS指针送寄存器和DS
LES指针送寄存器和ES
LFS指针送寄存器和FS
LGS指针送寄存器和GS
LSS指针送寄存器和SS
1LEA
LEAREG,SRC
把源操作数的有效地址送到指定的寄存器中
2LDS、LES、LFS、LGS、LSS指针送寄存器和段寄存器指令
LDSREG,SRC
把SRC的偏移地址放到REG中,又把偏移地址(SRC+2)放到DS中
(4)标志寄存器传送指令
LAHF标志送AH
SAHFAH送标志寄存器
PUSHF/PUSHFD标志进栈
POPF/POPFD标志出栈
(5)类型转换指令
CBW字节转换为字
CWD字转换为双字
CDQ双字转换为4字
BSWAP字节交换
以CWD为例,把AX的内容扩展到DX,DX为高位,AX为低位。
如果AX最高有效位=1,(DX)=0FFFFH;如果AX的最高有效位=0,(DX)=0。
CBW为AL扩展至AH,形成AX
CDQ为EAX扩展至EDX,形成EDX:
EAX
II.算术指令
(1)加法指令
ADD加法
例:
ADDDST,SRC
把DST与SRC的和放入DST中
ADC带进位加法
例:
ADCDST,SRC
把DST、SRC与进位标志CF的和放入DST中
INC加1
例:
INCOPR
OPR加一
XADD
例:
XADDDST,SRC
首先把DST与SRC交换并相加
汇编语言习题集一
DX:
单项选择题DU:
多项选择题TK:
填空题MC:
名词解释
vJD:
简答题CXFX:
程序分析题CXTK:
程序填空题BC:
编程题
第1章:
基础知识
1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。
DX
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用
2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
DX
A、名字项B、操作项C、操作数项D、注释项
3、可屏蔽中断就是它的请求是否被CPU响应要受(IF)的控制。
DX
4、使用LINK连接命令,执行后可生成文件的扩展名为(EXE)。
DX
5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在堆栈段中,段地址在SS寄存器中。
TK
6、注释项用于说明程序段或是一条和几条指令的功能,一般用;(或分号)表示注释的开始。
TK
7、DOS系统功能调用方式为:
(1)置入口参数;
(2)中断程序编号送AH寄存器后执行INT21H。
TK
8、通常主程序和子程序间参数传送的方法有三种:
用寄存器传递、用存储单元传递、用堆栈传递(顺序可调换)。
TK
9、中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。
在此,称引起紧急事务的事件为中断源。
TK
10、在字符串操作指令中,DS∶SI指向源串,ES∶DI指向目的串。
TK
11、计算机系统通过接口与外围设备通信。
TK
12、键盘I/O、显示I/O和打印I/O分别对应16H、10H和17H号中断。
TK
13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。
每个字的第一个字节为显示字符的ASCII码,第二个字节为显示字符的属性。
TK
14、简述上机运行汇编语言程序的过程。
JD
答:
首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。
15、简述程序中指令和伪指令的区别。
JD
答:
能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。
伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。
16、十六进制数88H,可表示成下面几种形式,请找出错误的表示(④)。
DX
①无符号十进制数136
②带符号十进制数-120
③压缩型BCD码十进制数88
④8位二进制数-8的补码表示
17、指令指针寄存器是(IP)。
DX
18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B)DX
A.名字的第一个字符可以是大写英文字母及小写英文字母
B.名字的第一个字符可以是字母、数字及、@、_
C.名字的有效长度≤31个字符
D.在名字中不允许出现$
19、CS寄存器属于(段寄存器)。
DX
20、已知物理地址(371F0H)=12H,(371F1H)=34H,(371F2H)=56H,如从地址371F0H中取出一个字的内容是(3412H)。
DX
21、一个有16个字的数据区,它的起始地址是70A0H∶DDF6H,则这个数据区最末一个字单元的物理地址是(7E814H)。
DX
22、简述上机运行汇编语言程序的过程。
JD答:
首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。
第2章:
8086/8088的寻址方式和指令系统
1、下列指令属于基址加变址寻址方式的是(MOVDX,DS:
[BP][SI])。
DX
2、当程序顺序执行时,每取一条指令语句,IP指针增加的值是(D)。
DX
A.1B.2C.3D.由指令长度决定的
3、下列属于合法的指令是(D)DX
A.MOVDS,ESB.MOV[SI],[DI]C.MOVAX,BLD.MOV[DI],BL
4、若AX=349DH,CX=000FH。
则执行指令ANDAX,CX后,AX的值是(000DH)。
DX
5、设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是( 85B92H )DX
6、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B )DX
A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS
7、对寄存器AX的内容乘以4的正确指令序列是( SHLAX,1 SHL,AX,1 )。
DX
8、执行INC指令除对SF、ZF有影响外,还要影响的标志位是( OF,AF,PF )。
DX
9、设DH=10H,执行NEGDH指令后,正确的结果是( DH=0F0H CF=1 )。
DX
10、下列传送指令中有语法错误的是( A )。
DX
A、MOVCS,AXB、MOVDS,AXC、MOVSS,AXD、MOVES,AX
11、下面指令执行后,改变AL寄存器内容的指令是( D )。
DX
A、TEST AL,02HB、OR AL,ALC、CMP AL,BLD、AND AL,BL
12、执行除法指令后,影响的标志位是( AF,CF,OF,PF,SF,ZF都不确定 )。
DX
13、执行下面指令序列后,结果是( AX=0FF82H )。
DX
MOV AL,82H
CBW
14、与MOV BX,OFFSETVAR指令完全等效的指令是( D )。
DX
A、MOV BX,VARB、LDS BX,VARC、LES BX,VARD、LEA BX,VAR
15、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( PARA)。
DX
16、MOV SP,3210H
PUSH AX执行上述指令序列后,SP寄存器的值是( 320EH )。
DX
17、BUF DW 10HDUP(3DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是( 100H )。
DX
18、MOVAH,7896H
ADDAL,AH
上述指令执行后,标志位CF和OF的值是(CF=1,OF=0)。
DX
19、完成将带符号数AX的内容除以2的正确指令是(SHRAX,1)。
DX
20、在汇编语言程序中,对END语句的叙述正确的是(C)。
DX
A.END语句是一可执行语句B.END语句表示程序执行到此结束
C.END语句表示源程序到此结束D.END语句在汇编后要产生机器码
21、已知BX=2000H,SI=1234H,则指令MOVAX,[BX+SI+2]的源操作在(数据段中偏移量为3236H的字节)中。
DX
22、下面指令序列执行后完成的运算,正确的算术表达式应是(y=x2-1)。
DX
MOVAL,BYTEPTRX
SHLAL,1
DECAL
MOVBYTEPTRY,AL
23、已知(AX)=1234H,执行下述三条指令后,(AX)=(0000H)。
DX
MOVBX,AX
NEGBX
ADDAX,BX
A.1234H B.0EDCCH C.6DCCH D.
24、将DX的内容除以2,正确的指令是(C)。
DX
A.DIV2 B.DIVDX,2 C.SARDX,1 D.SHLDX,1
25、有如下指令序列:
DX
ORG40H
DA1DW0AB12H,8574H
……
MOVAX,DA1
MOVBX,OFFSETDA1
上述指令执行后,寄存器AX和BX的值分别为(AB12H,40H)。
26、下列数值表达式和地址表达式中,错误的是(D)。
DX
A.MOVAL,8*14+4B.MOVSI,OFFSETBUF+13
C.MOVCX,NUM2-NUM1D.MOVCX,NUM2+NUM1
27、数据段定义如下:
DX
X1DB10H,50,1
X2DW10H,20,3
X3DD?
COUNTEQUX3-X1
变量COUNT的值是(9)。
28、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是( C )。
DX
A、INCCX JZMINUSB、SUBCX,OFFFFH JZMINUS
C、ANDCX,OFFFFH JZMINUSD、XORCX,OFFFFH JZMINUS
29、AL和VAR字节单元中分别存放一个带符号数,执行CMPAL,VAR时,如AL>VAR,那么溢出位和符号位的关系是( OF=SF )。
DX
30、下面是关于汇编语言程序中使用RET的描述,不正确的是(C)。
DX
A.每一个子程序中允许有多条RET指令。
B.每一个子程序结束之前一定要有一条RET指令。
C.每一个子程序中只允许有一条RET指令。
D.以过程形式表示的代码段,一定有RET指令存在。
31、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(CX=0或ZF=0)。
DX
32、用MOV指令将十进制64以组合型BCD码格式送入AX,正确使用的指令是(MOVAX,0604H)。
DX
33、重复前缀指令REP的重复次数由CX决定。
TK
34、DR1DB10H,30H
DR2DW10HDUP(0,2DUP
(2))
……
MOVBL,LENGTHDR1
MOVCL,LENGTHDR2请问指令执行后,BL和CL的值分别为1和10H。
TK
35、设(SP)=100H,(AX)=0FFFFH
STC
PUSHAX
ADCAX,0
PUSHAX
POPBX上述程序段运行后,(BX)=0,(SP)=0FEH。
CXFX
36、假设数据段定义如下:
DA1DW’C’,’D’
DA2DB18DUP(?
)
DA3DW$-DA2
……
MOVBX,DA3
MOVAX,DA1
上述指令执行后,BX寄存器中的内容是12H(或18),AH寄存器中的内容是00H,AL寄存器中的内容是43H。
CXFX
37、现有如下数据段
DATASEGMENT
ARRAY1DB1,26,‘3456’
ARRAY2DW7,89H,10
VALEQUARRAY2-ARRAY1
DATAENDS
请问:
该数据段已占有12(或0CH)字节的存储空间。
CXFX
38、当执行指令ADDAX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(④)。
DX
①表示结果中含1的个数为偶数②表示结果中含1的个数为奇数
③表示该数为偶数④表示结果中低八位含1的个数为偶数
39、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( C )DX
A.指令XORAX,AX执行后,AX内容不变,但设置了标志位
B.指令ORDX,1000H执行后,将DX最高位置1,其余各位置0
C.指令ANDAX,OFH执行后,分离出AL低四位
D.NOTAX,执行后,将AX清0
40、完成对CL寄存器的内容乘以4的正确操作是( C )DX
A.ROLCL,1 B.MUL4
ROLCL,1
C.SHLCL,1 D.MOVCL,2
SHLCL,1 SHLCL,CL
41、下面各传送指令中,正确的是( C )DX
A.MOV[DI],[SI] B.MOV[DX+DI],ALC.MOVWORDPTR[BX],0100H D.MOVAL,BX
42、要实现使BETA的值为56,应采用语句为( BETAEQU56 )DX
43、REPZCMPSW指令,重复执行的终止条件是( CX=0或ZF=0 )DX
44、下面程序段执行后,AL中的内容是( 21H )DX
MOVAX,8833H
ADDAL,AH
DAA
45、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(①)。
DX
①MOVAL,00H②ANDAL,00H③XORAL,AL④SUBAL,AL
46、下列指令执行后总是使CF=0,OF=0的是(AND)。
DX
47、完成同指令XCHGAX,BX相同功能的指令或指令序列是(④)。
DX
①MOVAX,BX②MOVBX,AX
③PUSHAX
POPBX
④MOVCX,AX
MOVAX,BX
MOVBX,CX
48、设AH=0,AL=06H,BL=09H,执行指令
ADDAL,BLAAA
之后,其结果应是(AH=01,AL=05)。
DX
49、设AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分别执行后OF,CF的值为(OF=1,CF=1)。
DX
50、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(CX=0或ZF=0)。
DX
51、下面指令中,合理而有意义的指令是(④)。
DX
①REPLODSB②REPSCASB③REPCMPSB④REPMOVSB
52、在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D )DX
A.STOSW B.LODSW C.SCASW D.CMPSW
53、AL=0AH,下列指令执行后能使AL=05H的是( C )DX
A.NOTAL B.ANDAL,0FH C.XORAL,0FH D.ORAL,0FH
54、DA1 DW‘AB’,‘CD’,‘EF’,‘GH’
┇
MOVAX,DA1+3
指令执行后AX中的内容是( ‘FC’ )。
DX
55、在汇编语言程序中,对END语句的叙述正确的是(③)。
DX
①END语句是一可执行语句②END语句表示程序执行到此结束
③END语句表示源程序到此结束④END语句在汇编后要产生机器码
56、下面的数据传送指令中,错误的操作是(④)。
DX
①MOVSS:
[BX+DI],1000H②MOVDX,1000H③MOVWORDPTR[BX],1000H④MOVDS,2000H
57、下面指令执行后,变量DAB中的内容是(0F5H)。
DX
DAWDW2A05H
DABDB0FAH
:
MOVAL,BYTEPRTDAW
SUBDAB,AL
58、执行下列指令后,正确的结果是(②)。
DX
MOVAL,100
MOVBL,-2
①AL=100H
BL=02H
②AL=64H
BL=0FEH
③AL=64H
BL=82H
④AL=100H
BL=0FEH
59、设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是(②)。
DX
①ADR1DWDA1②MOVDA1+1,AX③MOVBYTEPTRDA2+1,AL④MOVWORDPTRDA1+1,AX
60、DATASEGMENT
TA1DW0102H,0304H,0506H
TA2DB02H,03H,04H
:
MOVBX,DS:
[0006H]
ANDBX,0FFH
ANDBH,[BX]
上述指令序列运行后,BX的内容是(0402H)。
DX
61、若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOVAX,(SI+COUNT)中,源操作数的有效地址EA为___20A8H_____,其物理地址为___11488H_____。
TK
62、如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是____IP____,而后两个字节存放的是____CS____。
TK
63、在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是___STOS____或___CMP__才有实际意义。
TK
64、已知:
BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。
JD
(1)MOVAL,[BX]
21357H
(2)MOVCS:
[BX+DI],AH
43