当前位置:首页 > 汇编语言 复习题
汇编复习题
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.汇编语言源程序经汇编后不能直接生成( C ) A) OBJ文件 B) LST文件 C) EXE文件 D) CRF文件
7.在ADD指令中,两个操作数的物理位置不可以安排在( A )中。 A) 两个主存储单元
B) 一个主存储单元和一个数据寄存器 C) 两个数据寄存器
D) 一个堆栈单元和一个数据寄存器
8.假定ax=6987h,执行指令cmp ax,0eb30h后,则标志位CF和OF的状态( C )。 A)0,0 B) 0,1 C) 1,0 D) 1,1
9.假定esp=00120100h,eax=1f6c2107h,执行指令push eax后,存放数据07h的物理地址是( C )。
A) 00120104h B) 00120101h C) 001200fch D) 001200ffh
10.下列对标志寄存器中标志位产生影响的指令是( B ) A) jmp done B) shl eax, 2 C) call subp D) not eax
11. 假设CL=98H, 执行“MOVSX DX, CL”后,DX=( D ) A) F098H B) 0098H C) 1098H D) FF98H
12. 要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是( C )。
A) BUF DW 9 B) BUF DB 9
C) BUF DB 9 DUP (?) D) BUF DW 9 DUP (?)
13. 下列指令执行后总是使CF=0,OF=0的是( A )。 A) AND B) NEG C) MOV D) INC
14. 下面指令的表示中,错误的操作是( C ) A) mov eax,[ebx+esi] B) jmp near ptr don1 C) dec [ebx] D) mul cx
15.测试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 填空题
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= 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 0 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
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
四、语句填空题
1.下列程序段将EAX中值乘以9,请将程序填写完整。 push eax shl eax,3 pop ebx add eax,ebx
2. 以下程序段用于计算符号函数。
?1(X?0)? Y??0(X?0)
??1(X?0)? 的取值范围为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
3.下列程序段求数组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
四、编制程序题
1. 求X?Y 的绝对值,结果存入result单元中。
2.编写程序从键盘接受两个有符号十进制数A和B,将它们按照大小顺序显示。
3. 编写一个程序片段,首先测试双字变量DVAR的最高位,如果为1,则显示字母”L”; 如果最高位不为1,则继续测试最低位,如果最低位为1,则显示字母”R”, 如果最低位也不为1,则显示字母”M”。 字符显示子程序为dispc,它具有显示AL寄存器中ASCII字符的功能。
共分享92篇相关文档