计算机应用基础全解,第三章习题-ddg全解.doc

习 题

1. 给出以下概念的解释说明。

机器指令2. 简单回答下列问题。

(1)?(2)?

(3)?(4)?(5)?..........

要求回答下列问题或完成下列任务。

(1)给出每条汇编指令的注释,并说明为什么C代码只有一个if语句而汇编代码有两条条件转移指令。

(2)按照书中图3.22给出的“if () goto …”语句形式写出汇编代码对应的C语言代码。

13.

14..

16.

回答下列问题:函数sw中的switch语句处理部分标号的取值情况如何?标号的取值在什么情况下执行default分支?哪些标号的取值会执行同一个case分支?

17..“%x %x”, &x, &y);

4return x-y;

5}

函数funct对应的汇编代码如下:

1 funct:

2pushl%ebp

3movl%esp, %ebp

4subl$40, %esp

5leal-8(%ebp), %eax

6movl%eax, 8(%esp)

7leal-4(%ebp), %eax

8movl%eax, 4(%esp)

9movl$.LC0, (%esp)//将指向字符串“%x %x”的指针入栈

10callscanf//假定scanf执行后x=15,y=20

11movl-4(%ebp), %eax

12subl-8(%ebp), %eax

13leave

14ret

假设函数funct开始执行时,R[esp]=0xbc000020,R[ebp]=0xbc000030,执行第10行call指令后,scanf从标准输入读入的值为0x16和0x100,指向字符串“%x %x”的指针为0x804c000。回答下列问题或完成下列任务。

(1)执行第3、10和13行的指令后,寄存器EBP中的内容分别是什么?

(2)执行第3、10和13行的指令后,寄存器ESP中的内容分别是什么?

(3)局部变量x和y所在存储单元的地址分别是什么?

(4)画出执行第10行指令后funct的栈帧,指出栈帧中的内容及其地址。

19.efunc的C语言代码框架如下:

1int refunc(unsigned x) {

2if ( )

3return ;

4unsigned nx = ;

5int rv = refunc(nx) ;

6return ;

7}

上述递归函数过程体对应的汇编代码如下:

1movl8(%ebp), %ebx

2movl$0, %eax

3testl%ebx, %ebx

4je.L2

5movl%ebx, %eax

6shrl$1, %eax

7movl%eax, (%esp)

8callrefunc

9movl%ebx, %edx

10andl$1, %edx

11leal(%edx, %eax), %eax

12 .L2:

……

ret

根据对应的汇编代码填写C代码中缺失部分,并说明函数的功能。

20..]movw (%edx, %ecx, 2), %ax &S[10]&S[i+2]short *AS+2*i+4leal 4(%edx, %ecx, 2), %eax &S[i]-SS[4*i+4]*(S+i-2)

22...i, j, t;

3for (i = 0; i < M; i++)

4for (j = 0; j < M; j++) {

5t = a[i][j];

6a[i][j] = a[j][i];

7a[j][i] = t;

8}

9}

已知采用优化编译(选项-O2)后函数trans_matrix的内循环对应的汇编代码如下:

1 .L2:

2movl(%ebx), %eax

3movl(%esi, %ecx, 4), %edx

4movl%eax, (%esi, %ecx, 4)

5addl$1, %ecx

6movl%edx, (%ebx)

7addl$76, %ebx

8cmpl%edi, %ecx

9jl.L2

根据上述汇编代码,回答下列问题或完成下列任务。

(1)M的值是多少?常数M和变量j分别存放在哪个寄存器中?

(2)写出上述优化汇编代码对应的函数trans_matrix的C代码。

25.假设结构类型node的定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值