HNU计算机系统作业一

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值