汇编语言典型例题.docx
《汇编语言典型例题.docx》由会员分享,可在线阅读,更多相关《汇编语言典型例题.docx(12页珍藏版)》请在冰豆网上搜索。
汇编语言典型例题
典型例题(与考试题型,考试范围相近)
1.应用程序具有3个基本段,可执行指令应该保存于(A)。
A)代码段B)数据段C)堆栈段D)附加段
2.8位补码F3H要扩展成16位补码应该是(D),这样其真值才不变。
A)F0F3HB)00F3HC)10F3HD)FFF3H
3.“mov[ebx+8],eax”指令的目的操作数采用(C)寻址方式。
A)存储器间接B)寄存器C)寄存器相对D)立即数
4.执行“sarebx,1”指令后,ebx最高D31位一定等于(D)
A)0B)1C)D0位D)D30位
5.在代码段内的-128~127个字节前后范围的跳转,可以用(C)类型名表示。
A)WORDB)DWORDC)SHORTD)FAR
6.在Windows控制台环境,在当前光标显示信息应该使用(B)函数(功能)。
A)ReadConsoleB)WriteConsole
C)MessageBoxD)GetStdHandle
7.汇编语言源程序经汇编后不能直接生成(C)
A)OBJ文件B)LST文件C)EXE文件D)CRF文件
8.在ADD指令中,两个操作数的物理位置不可以安排在(A)中。
A)两个主存储单元
B)一个主存储单元和一个数据寄存器
C)两个数据寄存器
D)一个堆栈单元和一个数据寄存器
9.假定ax=6987h,执行指令cmpax,0eb30h后,则标志位CF和OF的状态(C)。
A)0,0B)0,1C)1,0D)1,1
10.假定esp=00120100h,eax=1f6c2107h,执行指令pushax后,存放数据07h的物理地址是(C)。
A)00120104hB)00120101hC)001200fchD)001200ffh
11.下列对标志寄存器中标志位产生影响的指令是(B)
A)jmpdoneB)shleax,2
C)callsubpD)noteax
12.假设CL=98H,执行“MOVSXDX,CL”后,DX=(D)
A)F098HB)0098HC)1098HD)FF98H
13.“mov80h[esi],eax”指令的目的操作数采用(C)寻址方式。
A)存储器间接B)寄存器C)寄存器相对D)变址寻址
14.执行“sarebx,1”指令后,ebx最高D31位一定等于(D)
A)0B)1C)D0位D)D30位
15.下列指令执行后总是使CF=0,OF=0的是(A)。
A)ANDB)NEGC)MOVD)INC
16.下面指令的表示中,错误的操作是(C)
A)moveax,[ebx+esi]B)jmpnearptrdon1
C)dec[ebx]D)mulcx
17.汇编语言源程序经汇编后不能直接生成(C)
A)OBJ文件B)LST文件C)EXE文件D)CRF文件
18.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是(A)
A)xorbl,4fhB)testbl,4fh
jznextjznext
C)andbl,4fhD)orbl,4fh
jznextjznext
19.假定ax=6987h,执行指令cmpax,0eb30h后,则标志位CF和OF的状态(C)。
A)0,0B)0,1C)1,0D)1,1
20.假定esp=00120100h,eax=12345678h,执行指令pusheax后,存放数据78h的物理地址是(C)。
A)00120104hB)00120101hC)001200fchD)001200ffh
21.下列寄存器组中在段内寻址时不可以提供偏移地址的寄存器组是(C)
A)ECX,EBXB)EDI,EBP
C)EIP,EAXD)EDX,ESI
22.若要使寄存器AL中的高4位不变,低4位为0,所用指令为(B)
A)ANDAL,0FHB)ANDAL,0F0H
C)ORAL,0FHD)ORAL,0F0H
23.将汇编语言源程序文件翻译成目标代码文件的过程,称为(A)
A)汇编B)编辑C)连接D)调试
24.ADD求和指令的结果最高位为1,则SF=(B)
A)0B)1C)任意D)不影响
25.子程序最后,通常需要执行的返回指令是(D)
A)LOOPB)JZC)CALLD)RET
26.在Windows控制台环境,在当前光标显示信息应该使用(B)函数(功能)。
A)ReadConsoleB)WriteConsole
C)MessageBoxD)GetStdHandle
27.下列对标志寄存器中标志位产生影响的指令是(B)
A)JMPDONB)SHLEAX,1
C)CALLDOND)NOTAX
28.“moveax,[ebx][esi]”指令的源操作数采用(A)寻址方式。
A)基址变址B)寄存器C)寄存器相对D)存储器间接
29.若CL=4,AX=0FF0FH,执行语句“ROLAX,CL”后,AX=(C)
A)0FFFFHB)0FFF0HC)0F0FFHD)0FFFH
30.JMPWORDPTR[EBX]转移的目标地址是(D)
A)EBX中的内容B)ESP+EBX的和
C)EIP+[EBX]之和D)EBX指示的内存单元的内容
填空题
1.IA-32处理器有三种操作模式分别是:
保护模式、实地址模式、系统管理模式。
2.在实地址工作方式下,逻辑地址“1460H:
100H”表示的物理地址是14700H。
3.“cmpebx,98”指令之后是“jzagain”指令,发生控制转移的条件是EBX=98,此时ZF=1。
4.伪指令“xyzdword67762000h”定义的变量保存于IA-32的存储器中,则从低地址到高地址每个字节依次是00、20、76和67。
5.movax,1234h;
xorax,00ffh;
上述两条指令执行后:
ax=12cbh,CF=OF=0,SF=0,ZF=0,PF=0.
6.利用堆栈传递子程序参数的方法是固定的,例如:
寻找堆栈段数据的寄存器是EBP
7.JMP指令根据目标地址的转移范围和寻址方式,可以分为四种类型:
段内转移、相对转移、段内转移、间接转移以及段间转移、直接转移、段内转移、间接转移。
8.IA-32处理器工作在保护方式时,可以使用平展和段式存储模型。
9.数据段有语句“VARDWORD99008843H”,代码段指令“MOVCX,WORDPTRVAR”执行后,CX=8843H。
10.数据段有语句“ABCBYTE1,2,3”,代码段指令“MOVCL,ABC+2”执行后,CL=3。
11.已知ESI=04000H,EBX=10H,指令“MOVEAX,[ESI+EBX*2+8]中访问的有效地址是04028H。
12.假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是40100H,线性地址41356H处存放40107H,执行指令“JMPEBX”后EIP=1256H,执行指令“JMPTABLE[EBX]”后EIP=40107H
13.已知数据段定义如下:
.data
org2000h
varddword1234h
varwword3*20
msgbyte’hello!
’,’0’
n1equ$-msg
countequ5
bufwordcountdup(5,3dup(1,2),0)
arraydwordvarw
问题:
(1)执行MOVEBX,OFFSETVARD后,EBX=2000H
(2)执行MOVECX,TYPEBUF后,ECX=2
MOVEDX,SIZEOFVARD后,EDX=4
(3)经汇编后,BUF占有的存储空间是80字节
(4)经汇编后,$=200DH,N1=7
Array=2004H
14.执行“SHREBX,4”指令后,JNC发生转移,则说明EBX的D3=
0
15.子程序的参数传递主要有三种,它们是寄存器传递、
共享变量传递、堆栈传递
三、程序阅读题
1.填写下面指令的执行结果。
moveax,3721h
addeax,9;EAX=372AH
movebx,50h
subebx,8;EBX=48H
movedi,9eh
xoredi,7fh;EDI=E1H
2.填写下面指令执行的结果。
moval,82h;
movsxbx,al;BX=FF82h
movsxebx,al;EBX=FFFFFF82h
movcx,1000h;
movsxedx,cx;EDX=00001000h
3.填写下面指令执行的结果。
movax,20000
movbl,10
divbl
;以上代码是否产生溢出是
4.数据段有如下定义,IA-32处理器将以小端方式保存在主存:
vardword12345678h
现以字节为单位按地址从低到高的顺序,写出这个变量内容。
并说明如下指令的执行结果:
moveax,var;EAX=12345678h
movcx,wordptrvar+2;CX=1234h
movdh,byteptrvar+3;DH=12h
5.填写下面指令的执行结果。
moveax,3721h
addeax,9;EAX=372AH
movebx,50h
subebx,8;EBX=48H
movesi,9eh
andesi,80h;ESI=80H
6.填写下面指令执行的结果。
.data
arraydword616h,727h,838h;假设该变量的存储器地址是40100H
.code
movesi,array+4;ESI=727H
movedi,offsetarray;EDI=40100H
movedx,[edi];EDX=616H
pusharray+8;array+8=838H
popecx;ECX=838H
7.分析下面程序段:
moveax,2000h
movebx,5000h
mov[ebx+100h],60h
addeax,[ebx+100h]
leaesi,[ebx+100h]
movebx,eax
程序段执行后,ESI=5100H,EBX=2060H
8.填写下面指令的执行结果。
moveax,