1. 以下不属于通用寄存器的是()。

eflags
esp
edi
ebp

2. 以下哪一个是零标志位()。

OF
CF
DF
ZF

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保存在哪里()。

[ebp+8]
[ebp+4]
[ebp-4]
[ebp-8]

6. ecx寄存器通常用来作为什么使用()。

数据累加 eax、ax、al
存储基址 ebp
循环计数
存储字符串 edi、esi、eax、ecx

7. 若有如下代码,则执行后eax的值为()。

mov eax,3;
xor edx,edx;
mov ecx,5;
mul ecx;

3
0
0xF
2

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的值为()。

  1. 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”)首地址,那么下面说法正确的是()。

  1. 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() {

  1. int n; 可以对它定义变量,但不能初始化,否则会奔溃
  2. 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()。

F3
F2
F7
F8

17. 在与当前函数相关的栈中存储的是()。

以上都是
函数参数
函数返回地址
函数的局部变量

18. 32位下repne的执行条件是()。

ZF=0
ZF=0,ecx != 0 终止条件:Zf=1或ecx=0
ZF=1
ZF=1,ecx=1

19.在x64汇编中函数的返回值存放在哪里()。

R8
R15
R11
RAX

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域的是()。

R/M
Base
Mod
Reg

23. 关于opcode前缀以下正确的是()。

66是切换操作数大小的前缀
65是切换地址大小的前缀
opcode的前缀总共10个
2E不是opcode的前缀

24. 在Radasm中以下操作正确的是()。

.model flat,stdcall
include 包含头文件
#include 包含头文件
includelib包含静态库文件

25. 在Radasm中使用什么来作单行注释()。

;
#
//
-
P