赞
踩
汇编指令英文全称
首先给出一张表格
这里的e代表equal
b代表below
a代表above
g代表greater
l代表less
前两条指令很明显是将x和y装入
第一条指令的 eax中存放的是x
第二条指令的 edx中存放的是y
下面看第三四条指令:对照上述表我们可以知道它的含义是
如果 x > -100 的话就跳转到.L1执行
所以如果不满足上图条件,也就是说(x <= -100 )才会继续执行第五条指令
第 5,6条指令与上面类似,如果 y <= x 的话就跳转到.L2执行
同样的只有在不满足跳转的条件下,也就是 y > x 的时候才按顺序执行第7条指令
第七条指令简单了许多,就是将x与y相加
**z = x + y **
第八条 .L3 也就是return 运行结束
接下来 第九条开始是.L2,也就是我们之前在5,6条的情况下满足y<=x的条件所跳转的部分
第十条指令的意思是做减法: z = x - y
第11条跳转到.L3 return
继续.L1的内容
13,14行的指令 代表如果x<y的话就跳转至.L4
如果x>=y就继续执行 andl是与操作 z = x & y
接下里就跳转.L3结束
**17,18行的
简单的说就是z = x * y **
上面我简单的把各行的含义分析了一下,接下来就是激动人心的填空环节了,先梳理一下流程
if x > -100: -> L1{ if x < 16 : -> L4{ z = x * y } else: z = x & y return z } else: if y <=x : ->L2{ z = x - y return z } else: z = x + y return z
然后根据左边的C语言框架填空,条件要反一反
第一步
if (x <= -100){
}else if(x>=16)
z = x & y
第二步
if (x <= -100){
if(y > x)
z = x + y
else
z = x - y
}else if(x>=16)
z = x & y
第三步
int z = x * y
if (x <= -100){
if(y > x)
z = x + y
else
z = x - y
}else if(x>=16)
z = x & y
return z
附上答案
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。