- 1. 以下不属于通用寄存器的是()。
- 2. 以下哪一个是零标志位()。
- 3. 如果当前esp等于08200H,那么push 1后esp等于()。
- 4. 如果当前eip等于00401756H,那么执行指令push 0x12345678之后,eip等于()。
- 5.在stdcall的调用约定下,打开函数栈帧之后,参数1保存在哪里()。
- 6. ecx寄存器通常用来作为什么使用()。
- 7. 若有如下代码,则执行后eax的值为()。
- 8. 若有如下代码,则 执行后eax和edx的值为()。
- 9.若有如下代码,则执行后eax,ebx和edx的值为()。
- 10. 如果地址0x00406789处是一字符串(“hello 15PB”)首地址,那么下面说法正确的是()。
- 11. 在汇编中关于栈的说法错的是()。
- 12. 以下指令中错误的是()。
- 13. 条件跳转指令jc 0x00401234和js 0x00401234的生效条件是()。
- 14. CALL指令实际上可以看作是那两个指令的组合()。
- 15. 关于以下函数的说法错误的是()。
- 16. 在OD中哪个快捷键相当于vs中的F10()。
- 17. 在与当前函数相关的栈中存储的是()。
- 18. 32位下repne的执行条件是()。
- 19.在x64汇编中函数的返回值存放在哪里()。
- 20. x64汇编中,函数的前4个参数分别使用什么来传递()。
- 21. 关于opcode的说法错误的是()。
- 22. 不属于opcode的ModR/M域的是()。
- 23. 关于opcode前缀以下正确的是()。
- 24. 在Radasm中以下操作正确的是()。
- 25. 在Radasm中使用什么来作单行注释()。
1. 以下不属于通用寄存器的是()。
2. 以下哪一个是零标志位()。
3. 如果当前esp等于08200H,那么push 1后esp等于()。
081EFH
08204H
081FCH
08201H
push ax就是减去2,没有1,不能push al
4. 如果当前eip等于00401756H,那么执行指令push 0x12345678之后,eip等于()。
00408215H
0040175BH
00401752H
不知道
5.在stdcall的调用约定下,打开函数栈帧之后,参数1保存在哪里()。
6. ecx寄存器通常用来作为什么使用()。
数据累加 eax、ax、al
存储基址 ebp
循环计数
存储字符串 edi、esi、eax、ecx
7. 若有如下代码,则执行后eax的值为()。
mov eax,3;
xor edx,edx;
mov ecx,5;
mul ecx;
8. 若有如下代码,则 执行后eax和edx的值为()。
mov eax,56;
xor edx,edx;
mov ecx,9;
div ecx;
6 2
6 0
56 0
56 2
eax=56
edx=0
ecx=9
0:56除以9——》5:9
9.若有如下代码,则执行后eax,ebx和edx的值为()。
mov eax,0x789;<br /> lea edx,[eax];<br /> push edx;<br /> sub eax,edx;<br /> pop ebx;
0 0 0
0 0x789 0x789
0x789 0x789 0x789
0x789 0 0
10. 如果地址0x00406789处是一字符串(“hello 15PB”)首地址,那么下面说法正确的是()。
xor eax,eax<br /> mov edi, 0x00406789<br /> mov ecx,0xFFFFFFFF<br /> repne scasb<br /> not ecx<br /> lea esi,dword ptr[0x00406789]<br /> mov edi,0x00401234<br /> rep movsb
这段代码实现了字符串的拷贝
repne的执行条件是ZF不等于0
scasb是串比较指令 扫描、查找
字符串的长度保存在eax中
11. 在汇编中关于栈的说法错的是()。
栈是一块内存空间
esp,ebp分别指向栈的栈顶和栈底
栈的存取方式是先进后出
push可以向栈中存储一个值,同时栈顶升高,esp加4
12. 以下指令中错误的是()。
cmps eax,edx
push 0x1234
jmp eax
mov eax,dword ptr[0x00401234] mov 不能改eip,不能同时为内存
13. 条件跳转指令jc 0x00401234和js 0x00401234的生效条件是()。
CF=0,SF=0
CF=1,SF=1
ZF=1,DF=1 没有jd,只有状态标志位才能跳转
PF=0,OF=0
14. CALL指令实际上可以看作是那两个指令的组合()。
push,jcc
push,jz
push,jnz
push,jmp
15. 关于以下函数的说法错误的是()。
void __declspec(naked) fun() {
int n; 可以对它定义变量,但不能初始化,否则会奔溃
scanf_s("%d", &n);<br /> if (n <= 0) return; 不能写c语言的return,只能写汇编<br /> for (int i = 0; i < n; i++) { 知道自己干什么,就可以不用开辟堆栈,int i=0不能初始化<br /> printf("%d", i % 2 ? i : 0);<br /> }<br /> }<br />这个函数在编译的时候会报错<br />这个函数可以正常运行<br />这个函数在编译的时候编译器不会对它做任何处理<br />这是一个裸函数
16. 在OD中哪个快捷键相当于vs中的F10()。
17. 在与当前函数相关的栈中存储的是()。
18. 32位下repne的执行条件是()。
ZF=0
ZF=0,ecx != 0 终止条件:Zf=1或ecx=0
ZF=1
ZF=1,ecx=1
19.在x64汇编中函数的返回值存放在哪里()。
20. x64汇编中,函数的前4个参数分别使用什么来传递()。
RCX,RDX,R8,R9
RBX,RCX,R11, R12
RDX,R8 ,R9 ,R10
RAX,RDX,R10,R11
21. 关于opcode的说法错误的是()。
opcode最短为2个字节
opcode就是机器码
opcode的最大字节数不能超过15字节
opcode最多可由6个部分组成
22. 不属于opcode的ModR/M域的是()。
23. 关于opcode前缀以下正确的是()。
66是切换操作数大小的前缀
65是切换地址大小的前缀
opcode的前缀总共10个
2E不是opcode的前缀
24. 在Radasm中以下操作正确的是()。
.model flat,stdcall
include
#include
includelib
25. 在Radasm中使用什么来作单行注释()。
;
#
//
-
P