1.应用程序具有3个基本段,可执行指令应该保存于( A )。 A) 代码段 B) 数据段 C) 堆栈段 D) 附加段
2. 8位补码F3H要扩展成16位补码应该是( D ),这样其真值才不变。 A) F0F3H B) 00F3H C) 10F3H D) FFF3H
3. “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) FAR
6. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。 A) ReadConsole B) WriteConsole C) MessageBox D) GetStdHandle
7.汇编语言源程序经汇编后不能直接生成( 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,1
10.假定esp=00120100h,eax=1f6c2107h,执行指令push ax后,存放数据07h的物理地址是( C )。
A) 00120104h B) 00120101h C) 001200fch D) 001200ffh
11.下列对标志寄存器中标志位产生影响的指令是( B ) A) jmp done B) shl eax, 2 C) call subp D) not eax
12. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D ) A) F098H B) 0098H C) 1098H D) FF98H
13. “mov 80h[esi], eax”指令的目的操作数采用( C )寻址方式。
A) 存储器间接 B) 寄存器 C) 寄存器相对 D) 变址寻址
14. 执行“sar ebx,1”指令后,ebx最高D31位一定等于( D ) A) 0 B) 1 C) D0位 D) D30位
15. 下列指令执行后总是使CF=0,OF=0的是( A )。 A) AND B) NEG C) MOV D) INC
16. 下面指令的表示中,错误的操作是( C ) A) mov eax,[ebx+esi] B) jmp near ptr don1 C) dec [ebx] D) mul cx
17.汇编语言源程序经汇编后不能直接生成( C ) A) OBJ文件 B) LST文件 C) EXE文件 D) CRF文件
18.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是( A )
A) xor bl,4fh B) test bl,4fh jz next jz next C) and bl,4fh D) or bl,4fh jz next jz next
19.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。 A)0,0 B) 0,1 C) 1,0 D) 1,1
20.假定esp=00120100h,eax=12345678h,执行指令push eax后,存放数据78h的物理地址是( C )。
A) 00120104h B) 00120101h C) 001200fch D) 001200ffh
21.下列寄存器组中在段内寻址时不可以提供偏移地址的寄存器组是( C ) A) ECX,EBX B) EDI,EBP C) EIP,EAX D) EDX,ESI
22.若要使寄存器AL中的高4位不变,低4位为0,所用指令为( B ) A) AND AL,0FH B) AND AL,0F0H C) OR AL,0FH D) OR AL,0F0H
23. 将汇编语言源程序文件翻译成目标代码文件的过程,称为( A ) A) 汇编 B) 编辑 C) 连接 D) 调试
24. ADD求和指令的结果最高位为1,则SF=( B ) A) 0 B) 1 C) 任意 D) 不影响
25. 子程序最后,通常需要执行的返回指令是( D )
A) LOOP B) JZ C) CALL D) RET
26. 在Windows控制台环境,在当前光标显示信息应该使用( B )函数(功能)。 A) ReadConsole B) WriteConsole C) MessageBox D) GetStdHandle
27. 下列对标志寄存器中标志位产生影响的指令是( B ) A) JMP DON B) SHL EAX,1 C) CALL DON D) NOT AX 28.“mov eax, [ebx] [esi]”指令的源操作数采用( A )寻址方式。 A) 基址变址 B) 寄存器 C) 寄存器相对 D) 存储器间接
29. 若CL= 4,AX=0FF0FH,执行语句“ROL AX,CL”后 ,AX=( C ) A) 0FFFFH B) 0FFF0H C) 0F0FFH D) 0FFFH
30.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. 利用堆栈传递子程序参数的方法是固定的,例如:寻找堆栈段数据的寄存器是 EBP
7. 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=40107H
13.已知数据段定义如下: .data
org 2000h vard dword 1234h varw word 3*20 msg byte ’hello!’,’0’ n1 equ $-msg count equ 5 buf 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= 2 MOV EDX , SIZEOF VARD后, EDX= 4 (3)经汇编后, BUF占有的存储空间是 80 字节 (4)经汇编后,$= 200DH , N1= 7 Array = 2004H
14. 执行“SHR EBX, 4”指令后,JNC发生转移,则说明EBX的D3= 0
15. 子程序的参数传递主要有三种,它们是 寄存器传递 、 共享变量传递 、 堆栈传递
三、程序阅读题
1.填写下面指令的执行结果。 mov eax,3721h add eax,9 ; EAX= 372A H mov ebx,50h
sub ebx,8 ; EBX= 48 H mov edi,9eh xor edi,7fh ; EDI= E1 H
2.填写下面指令执行的结果。 mov al, 82h ;
movsx bx, al ; BX =FF82h
movsx ebx, al ; EBX=FFFFFF82h mov cx, 1000h ;
movsx edx, cx ; EDX=00001000h 3.填写下面指令执行的结果。 mov ax, 20000 mov bl,10 div bl ;以上代码是否产生溢出 是
4. 数据段有如下定义,IA-32处理器将以小端方式保存在主存: var dword 12345678h
现以字节为单位按地址从低到高的顺序,写出这个变量内容。并说明如下指令的执行结果: mov eax,var ; EAX=12345678h mov cx,word ptr var+2 ; CX=1234h mov dh,byte ptr var+3 ; DH=12h
5.填写下面指令的执行结果。 mov eax, 3721h add eax, 9 ; EAX= 372A H mov ebx, 50h sub ebx, 8 ; EBX= 48 H mov esi, 9eh and esi, 80h ; ESI= 80 H
6.填写下面指令执行的结果。 .data array dword 616h,727h,838h ;假设该变量的存储器地址是40100H .code mov esi,array+4 ;ESI= 727H mov edi,offset array ;EDI= 40100H mov edx,[edi] ;EDX= 616H push array+8 ;array+8= 838H pop ecx ;ECX= 838H
7.分析下面程序段: mov eax, 2000h
mov ebx, 5000h
mov [ebx+100h], 60h add eax, [ebx+100h] lea esi, [ebx+100h] mov ebx, eax
程序段执行后,ESI= 5100 H,EBX= 2060 H 8.填写下面指令的执行结果。 mov eax,3721h add eax,9 ; EAX= 372A H mov ebx,50h sub ebx,8 ; EBX= 48 H mov esi,9eh and esi,80h ; ESI= 80 H
9.填写下面指令执行的结果。 .data array dword 616h,727h,838h ;假设该变量的存储器地址是40100H .code mov esi,array+4 ;ESI= 727H mov edi,offset array ;EDI= 40100H mov edx,[edi] ;EDX= 616H push array+8 ; array+8= 838H pop ecx ;ECX= 838H
10.填写下面指令执行的结果。 mov eax,0ffh mov ebx,1000h call sub1 inc eax dec ebx ;子程序 sub1 proc add eax, ebx xchg eax, ebx ret sub1 endp
程序段执行后,EAX= 1001 H, EBX= 10FE H。
四、语句填空题
1. 在下面程序段实现下述功能:求:z=|x-y|,设x, y, z分别为双字数据的无符号变量名称。 mov eax,x
cmp eax,y jb below sub eax,y mov z,eax below: mov eax,y sub eax,x done: mov z,eax
2.下列程序段将EAX中值乘以9,请将程序填写完整。 push eax shl eax,3 pop ebx add eax,ebx
3. 以下程序段用于计算符号函数。
的取值范围为32位的有符号数,试填写方框中的指令。 mov eax,x cmp eax,0 jz zero js nega mov eax, 1 jmp ok zero: xor eax, eax jmp ok
nega: mov eax, 0ffffffffh ok: mov y, eax
4.下列程序段将EAX中值乘以9,请将程序填写完整。 push eax shl eax,3 pop ebx add eax,ebx
5.下列程序段求数组ARRAY的累加和。请将程序填写完整。 array word 45h,68h,………….,0abc1h,9600h; mov esi,offset array mov ecx,lengthof array xor eax,eax again: add eax,[esi] add esi,2
loop again
6.已知从BUF单元起存有若干带符号数,将其中的正数找出并存入PLUS单元,负数存入MINUS单元,把下列程序填充完整。 .data
buf dword 12, -2, 555, 1000, -80, -2000, 6, 99, -111, -235 cn equ $-buf
plus dword cn dup(?) minus dword cn dup(?) .code
start: mov esi,0
mov edi,offset plus mov ebx,offset minus mov ecx,cn next: mov eax,buf[esi*(type buf)] inc esi
test eax,800000000h jnz pp mov [edi],eax
add edi, 4 jmp lp pp: mov [ebx],eax
add ebx, 4 lp: loop next
编制程序题
1. 求XY 的绝对值,结果存入result单元中。
.data
X dword 100 Y dword 200 result dword ? .code start:
mov eax, x sub eax, y jns Al neg eax
Al: mov result, eax
2.编写程序从键盘接受两个有符号十进制数A和B,将它们按照大小顺序显示。
3. 编写一个程序片段,首先测试双字变量DVAR的最高位,如果为1,则显示字母”L”; 如果最高位不为1,则继续测试最低位,如果最低位为1,则显示字母”R”, 如果最低位也不为1,则显示字母”M”。 字符显示子程序为dispc,它具有显示AL寄存器中ASCII字符的功能。
mov eax, dvar shl eax, 1 jc one mov ebx,dvar shr ebx,1 jc two mov al, ‘R’ jmp done two: mov al, ‘M’ jmp done one: mov al, ‘L’ done: call dipsc
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务