当前位置:   article > 正文

C语言与汇编的转化_c语言转汇编语言

c语言转汇编语言

计组期末复习(一) C语言与汇编的转化

汇编指令英文全称
首先给出一张表格
这里的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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

然后根据左边的C语言框架填空,条件要反一反
第一步

if (x <= -100){
}else if(x>=16)
	z = x & y 
  • 1
  • 2
  • 3

第二步

if (x <= -100){
	if(y > x)
		z = x + y
	else
		z = x - y
}else if(x>=16)
	z = x & y 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

第三步

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

附上答案
在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号