一、选择题1. 应用程序具有3个基本段,可执行指令应该保存于( A )。
A) 代码段B) 数据段C) 堆栈段D) 附加段2. 8位补码F3H要扩展成16位补码应该是( D ),这样其真值才不变。
A) F0F3H B) 00F3H C) 10F3H D) FFF3H3. “mov [ebx+8],eax”指令的目的操作数采用( C )寻址方式。
A) 存储器间接B) 寄存器C) 寄存器相对D) 立即数4. 执行“sar ebx,1”指令后,ebx最高D31位一定等于( D )A) 0 B) 1 C) D0位D) D30位5. 在代码段内的-128~127个字节前后范围的跳转,可以用( C )类型名表示。
A) WORD B) DWORD C) SHORT D) FAR6. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。
A) ReadConsole B) WriteConsoleC) MessageBox D) GetStdHandle7.汇编语言源程序经汇编后不能直接生成( C )A) OBJ文件B) LST文件C) EXE文件D) CRF文件8.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。
A) 两个主存储单元B) 一个主存储单元和一个数据寄存器C) 两个数据寄存器D) 一个堆栈单元和一个数据寄存器9.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。
A)0,0 B) 0,1 C) 1,0 D) 1,110.假定esp=00120100h,eax=1f6c2107h,执行指令push ax后,存放数据07h的物理地址是( C )。
A) 00120104h B) 00120101h C) 001200fch D) 001200ffh11.下列对标志寄存器中标志位产生影响的指令是( B )A) jmp done B) shl eax, 2C) call subp D) not eax12. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D )A) F098H B) 0098H C) 1098H D) FF98H13. “mov 80h[esi], eax”指令的目的操作数采用( C )寻址方式。
A) 存储器间接B) 寄存器C) 寄存器相对D) 变址寻址14. 要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是(C )。
A) BUF DW 9 B) BUF DB 9C) BUF DB 9 DUP (?) D) BUF DW 9 DUP (?)15. 下列指令执行后总是使CF=0,OF=0的是( A )。
A) AND B) NEG C) MOV D) INC16. 下面指令的表示中,错误的操作是( C )A) mov eax,[ebx+esi] B) jmp near ptr don1C) dec [ebx] D) mul cx17.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( A )A) xor bl,4fh B) test bl,4fhjz next jz nextC) and bl,4fh D) or bl,4fhjz next jz next18.下列寄存器组中在段内寻址时不可以提供偏移地址的寄存器组是( C )A) ECX,EBX B) EDI,EBPC) EIP,EAX D) EDX,ESI19.若要使寄存器AL中的高4位不变,低4位为0,所用指令为( B )A) AND AL,0FH B) AND AL,0F0HC) OR AL,0FH D) OR AL,0F0H20. 将汇编语言源程序文件翻译成目标代码文件的过程,称为( A )A) 汇编B) 编辑C) 连接D) 调试21. ADD求和指令的结果最高位为1,则SF=( B )A) 0 B) 1 C) 任意D) 不影响22. 子程序最后,通常需要执行的返回指令是( D )A) LOOP B) JZ C) CALL D) RET23.“mov eax, [ebx] [esi]”指令的源操作数采用( A )寻址方式。
A) 基址变址B) 寄存器C) 寄存器相对D) 存储器间接24.若CL= 4,AX=0FF0FH,执行语句“ROL AX,CL”后,AX=( C )A) 0FFFFH B) 0FFF0H C) 0F0FFH D) 0FFFH25.JMP WORD PTR[EBX]转移的目标地址是( D )A) EBX中的内容B) ESP+EBX的和C) EIP+[EBX]之和D) EBX指示的内存单元的内容二、填空题1. IA-32处理器有三种操作模式分别是:保护模式、实地址模式、系统管理模式。
2. 在实地址工作方式下,逻辑地址“1460H: 100H”表示的物理地址是14700H 。
3.“cmp ebx, 98”指令之后是“jz again”指令,发生控制转移的条件是EBX=98 ,此时ZF= 1 。
4. 伪指令“xyz dword 67762000h”定义的变量保存于IA-32的存储器中,则从低地址到高地址每个字节依次是00 、20 、76 和67 。
5. mov ax, 1234h;xor ax, 00ffh;上述两条指令执行后:ax= 12cbh , CF=OF=0 , SF=0 , ZF=0 , PF=0 .6. 利用堆栈传递子程序参数的方法是固定的,例如:寻找堆栈段数据的寄存器是 EBP7. JMP 指令根据目标地址的转移范围和寻址方式,可以分为四种类型:段内转移、相对转移、段内转移、间接转移以及段间转移、直接转移、段内转移、间接转移。
8. IA-32处理器工作在保护方式时,可以使用平展和段式存储模型。
9. 数据段有语句“VAR DWORD 99008843H”,代码段指令“MOV CX, WORD PTR VAR”执行后,CX=8843H 。
10. 数据段有语句“ABC BYTE 1,2,3”,代码段指令“MOV CL, ABC+2”执行后,CL=3 。
11.已知ESI=04000H,EBX=10H ,指令“MOV EAX, [ESI+EBX*2+8]中访问的有效地址是04028H 。
12.假设在平展存储模型下,EBX=1256H,双字变量TABLE的偏移地址是40100H,线性地址41356H处存放40107H,执行指令“JMP EBX” 后EIP= 1256H ,执行指令“JMP TABLE[EBX]”后EIP=40107H13.已知数据段定义如下:.dataorg 2000hvard dword 1234hvarw word 3*20msg byte ’hello!’,’0’n1 equ $-msgcount equ 5buf word count dup(5,3 dup(1,2),0)array dword varw问题: (1)执行MOV EBX , OFFSET VARD后, EBX= 2000H(2)执行MOV ECX , TYPE BUF后, ECX= 2MOV EDX , SIZEOF VARD后, EDX= 4(3)经汇编后, BUF占有的存储空间是 80 字节(4)经汇编后,$= 200DH , N1= 7Array = 2004H14. 执行“SHR EBX, 4”指令后,JNC发生转移,则说明EBX的D3= 015. 子程序的参数传递主要有三种,它们是寄存器传递、共享变量传递、堆栈传递三、程序阅读题1.填写下面指令的执行结果。
mov eax,3721hadd eax,9 ; EAX= 372A Hmov ebx,50hsub ebx,8 ; EBX= 48 Hmov edi,9ehxor edi,7fh ; EDI= E1 H2.填写下面指令执行的结果。
mov al, 82h ;movsx bx, al ; BX =FF82hmovsx ebx, al ; EBX=FFFFFF82hmov cx, 1000h ;movsx edx, cx ; EDX=00001000h3.填写下面指令执行的结果。
mov ax, 20000mov bl,10div bl;以上代码是否产生溢出是4. 数据段有如下定义,IA-32处理器将以小端方式保存在主存:var dword 12345678h现以字节为单位按地址从低到高的顺序,写出这个变量内容。
并说明如下指令的执行结果:mov eax,var ; EAX=12345678hmov cx,word ptr var+2 ; CX=1234hmov dh,byte ptr var+3 ; DH=12h5.填写下面指令的执行结果。
mov eax, 3721hadd eax, 9 ; EAX= 372A Hmov ebx, 50hsub ebx, 8 ; EBX= 48 Hmov esi, 9ehand esi, 80h ; ESI=80 H6.填写下面指令执行的结果。
.dataarray dword 616h,727h,838h ;假设该变量的存储器地址是40100H.codemov esi,array+4 ;ESI= 727Hmov edi,offset array ;EDI= 40100Hmov edx,[edi] ;EDX= 616Hpush array+8 ;array+8= 838Hpop ecx ;ECX= 838H7.分析下面程序段:mov eax, 2000hmov ebx, 5000hmov [ebx+100h], 60hadd eax, [ebx+100h]lea esi, [ebx+100h]mov ebx, eax程序段执行后,ESI= 5100 H,EBX= 2060 H8.填写下面指令的执行结果。
mov eax,3721hadd eax,9 ; EAX= 372A Hmov ebx,50hsub ebx,8 ; EBX= 48 Hmov esi,9ehand esi,80h ; ESI= 80 H9.填写下面指令执行的结果。
mov eax,0ffhmov ebx,1000hcall sub1inc eaxdec ebx;子程序sub1 procadd eax, ebxxchg eax, ebxretsub1 endp程序段执行后,EAX= 1001 H,EBX= 10FE H。
四、语句填空题1. 在下面程序段实现下述功能:求:z=|x-y|,设x, y, z分别为双字数据的无符号变量名称。
mov eax,xcmp eax,yjb belowsub eax,ymov z,eaxbelow: mov eax,ysub eax,xdone: mov z,eax2.下列程序段将EAX中值乘以9,请将程序填写完整。