1:0xa5744c46存放在采用小端存储的机器上,地址为 0x5450到 0x5453,则 0x5451处存放值为 0x4c (以十六进制小写格式表示例0xffffffff)。
2:执行指令SUB %eax,%edx,其中%eax为0x13c0b363,%edx为0x200a725c,%edx结果为 0xC49BEF9 (以十六进制小写格式表示例0xffffffff)。
3:执行以下指令,最终%eax的结果为 0x7EB1A69B (以十六进制格式小写表示例0xffffffff)。
movl $0xd238c634,%edx
movl $0x53871f99,%eax
cmpl %eax,%edx
jge .L2
subl %edx,%eax
jmp .L3
.L2:
subl %eax,%edx
movl %edx,%eax
.L3:
4:假设寄存器%dh的值为0x02,%eax的值为0xd7e46c43,执行以下指令
movsbl %dh,%eax
%eax的值为 0xffffff02 (以十六进制小写字符格式表示例0xffffffff该题请补齐八位)。
5: 假设寄存器 %ebx的值为0xc6bd4a9d,执行以下指令后
movl %ebx,%ecx
movw $0xe089,%bx
movb $0x9f,%bl
cmpl %ecx,%ebx
jae .L1
addl $0x9,%ebx
jmp .L2
.L1:
subl $0x1,%ebx
.L2:
%ebx的值为 0xc6bde09e (以十六进制格式小写表示例0xffffffff)。
6:已知寄存器及其现有值如下:
EAX=0xa02c6638, EDX=0xe2baefc3。指令movsbl %dh, %eax执行完后,EAX= 0xffffffef ?(如果无法通过编译,答案填 “错误,编译不能通过” 否则答案格式形如0xffffffff).
7:已知寄存器%eax中的值为0x10fc4714,%ebx中的值为0xfc068c95,%ecx的值为0x4e643aae,%edx的值为0xfe5dbb0b。
求下列操作数的值(十进制):
0xed(,%ebx,6)
3894889564
8:某程序中有整形变量a=0x7ad94ced, b=0x57e674ee, c=0x75a62332, d=0x55ae1317
程序代码中有如下语句:
b=&a;
d=&c;
a=a+0x4fd20e49;
*d=*b;
则此时语句 printf(“c=%d\n”, c); 给出结果为:(十进制)
-894739658
9:根据操作数特点,用恰当的MOV类指令补全下列残缺数据传送指令:
movl %eax,%ebx
movw %eax,%bx
movl %eax,%ecx(格式形如:movl)
10:已知
%eax=0X100,%ebx=0X3;
内存中指定地址的值列表如下:
地址 值
0X100 0X6D
0X104 0X29
0X108 0XFA
0X10C 0X6E
则指令 addl 0X79,(%eax,%ebx,4)将 0x10C 中的值更新为 0xE7 。
(格式为16进制大写。)
11:%ah中存有某变量值0x67。则指令 SAR $5, %ah 执行后 %ah = 0x03 。(答案格式形如0x00)
12:一个c代码文件e.c,需要经过预处理(输出e.i)、编译(输出e.s)、汇编(输出e.o)、链接(输出e.out可执行文件)四个步骤。
假设e.c的源代码如下:
#include (stdio.h)
int main()
{
int x=1
double y=1;
printf("%f",&y);
return 0;
}
则预处理阶段 会 出错;
在处理完预处理阶段的问题(如果有的话)并通过后,编译阶段 会 出错;
在处理完编译阶段的问题(如果有的话)并通过后,汇编阶段 不会 出错;
在处理汇编阶段的问题(如果有的话)并通过后,链接阶段 不会 出错。(填“会”或“不会”)
13:在某机器中,用12位存储浮点数,并按照IEEE754标准表示,其中阶码占5位,
则阶码偏移值为 15 (用十进制表示)
在所有的正数中,最大的规格化值为 011110111111 (用二进制表示)
14:%eax=0xc3ed31d0, %ebx=0x8b232c19, %ecx=0xfabe566b, %edx=0x2e9049cf, %esp=0xec853616
在执行如下一系列语句后:
pushl %eax
pushw %bx
popl %ebx
pushw %dx
pushw %ax
popl %ebx
pushl %ecx
则%esp的值为0x ec85 3610 ,
%eax=0x c3ed 31d0 ,
%ebx=0x 49cf 31d0 ,
%ecx=0x fabe 566b ,
%edx=0x 2e90 49cf ,
内存0xec853616-0x2处存放的值为0x ed
(所有十六进制数用小写字母,所有答案不带0x,用一个英文空格分隔答案)
15:假设在%ah中存放的值为0x13,%al中存放的值为0x8a
则在执行cmpb %ah,%al后
SF=0,OF=1,CF=0,ZF=0.(填0或1,例如0 0 0 1)
16:%eax=0x03614ba9,%ebx=0x5e537cd6,%ecx=0x7fe2533f,%edx=0x8a7700ac,%esp=0x5b9bea4e
在执行如下一系列语句后:
pushl %edx
pushw %ax
popl %ecx
pushw %bx
pushl %ebx
popw %cx
内存0x5b9bea48处存放的值为0xd6