009 if 判断语句

C语言精彩编程百例 第9个例子 if 判断语句

源程序:

#include<stdio.h>
void main()
{
	int x,y,z,mid,dec;
	printf("请任意输入三个整数:\n");
	scanf("%d %d %d",&x,&y,&z);

	if(x<y)
	{
		mid =x; x=y; y=mid;
	}
	if(x<z)
	{
		mid=x;x=z;z=mid;
	}
	if(y<z)
	{
		mid=y;y=z;z=mid;
	}

	printf("请输入一个整数,程序根据其正负判断输出:\n");
	scanf("%d",&dec);
	if(dec>=0) printf("最大整数为:%d\n",x);
	else printf("最小整数为:%d\n",z);
}

对应的汇编:

	subl	$12, %esp
	pushl	$LC0
	call	_printf
	addl	$16, %esp
				 # _scanf 参数传递
	leal	-12(%ebp), %eax  # &z
	pushl	%eax
	leal	-8(%ebp), %eax   # &y
	pushl	%eax
	leal	-4(%ebp), %eax   # &x
	pushl	%eax
	pushl	$LC1
	call	_scanf
	addl	$16, %esp	 
	movl	-4(%ebp), %eax	 # x
	cmpl	-8(%ebp), %eax   # 比较 x,y
	jge	L4               # 不小于跳
	movl	-4(%ebp), %eax   # x
	movl	%eax, -16(%ebp)  # mid = x
	movl	-8(%ebp), %eax   # y
	movl	%eax, -4(%ebp)   # x = y
	movl	-16(%ebp), %eax  # mid
	movl	%eax, -8(%ebp)   # y = mid
L4:
	movl	-4(%ebp), %eax   # x
	cmpl	-12(%ebp), %eax  # 比较 x,z
	jge	L5               # 不小于跳
	movl	-4(%ebp), %eax   # x
	movl	%eax, -16(%ebp)  # mid =x
	movl	-12(%ebp), %eax  # z
	movl	%eax, -4(%ebp)   # x=z
	movl	-16(%ebp), %eax  # mid
	movl	%eax, -12(%ebp)  # z= mid
L5:
	movl	-8(%ebp), %eax   # y
	cmpl	-12(%ebp), %eax  # 比较 y z
	jge	L6               # 不小于跳
	movl	-8(%ebp), %eax   # y
	movl	%eax, -16(%ebp)  # mid=y
	movl	-12(%ebp), %eax  # z
	movl	%eax, -8(%ebp)   # y=z
	movl	-16(%ebp), %eax  # mid
	movl	%eax, -12(%ebp)  # z = mid
L6:
	subl	$12, %esp        
	pushl	$LC2
	call	_printf
	addl	$16, %esp
	subl	$8, %esp
	leal	-20(%ebp), %eax  # &dec
	pushl	%eax
	pushl	$LC3
	call	_scanf
	addl	$16, %esp        
	cmpl	$0, -20(%ebp)    # 比较dec 和 0
	js	L7               # 小于跳
	subl	$8, %esp         # printf
	pushl	-4(%ebp)
	pushl	$LC4
	call	_printf
	addl	$16, %esp
	jmp	L3
L7:
	subl	$8, %esp         # printf
	pushl	-12(%ebp)
	pushl	$LC5
	call	_printf
	addl	$16, %esp
L3:
	leave
	re



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值