Linux课程大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux课程设计报告

题目 Linux课程大作业

院系

班级

姓名

指导教师

一、基础篇(给出源程序和编译运行的结果)

1、编写一个简单的c语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。

源代码(c):

源代码(汇编):

.file "sum.c"

.text

.globl average

.type average, @function

average:

.LFB0:

.cfi_startproc

pushl %ebp

.cfi_def_cfa_offset 8

.cfi_offset 5, -8

movl %esp, %ebp

.cfi_def_cfa_register 5

subl $8, %esp

movl 12(%ebp), %eax

movl 8(%ebp), %edx

addl %edx, %eax

movl %eax, -4(%ebp)

fildl -4(%ebp)

fldl .LC0

fdivrp %st, %st(1)

leave

.cfi_restore 5

.cfi_def_cfa 4, 4

ret

.cfi_endproc

.LFE0:

.size average, .-average

.section .rodata

.align 4

.LC2:

.string

"\350\257\267\350\276\223\345\205\245\344\270\244\344\270\252\346\225\260\ 357\274\214\345\233\236\350\275\246\345\210\206\345\211\262"

.LC3:

.string "%d"

.LC4:

.string

"%d\344\270\216%d\347\232\204\345\271\263\345\235\207\345\200\274\346\23 0\257\357\274\232%lf\n"

.text

.globl main

.type main, @function

main:

.LFB1:

.cfi_startproc

pushl %ebp

.cfi_def_cfa_offset 8

.cfi_offset 5, -8

movl %esp, %ebp

.cfi_def_cfa_register 5 andl $-16, %esp

subl $48, %esp

movl $0, 44(%esp) movl $.LC2, (%esp) call puts

movl $.LC3, %eax leal 40(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC3, %eax leal 44(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl 44(%esp), %edx movl 40(%esp), %eax movl %edx, 4(%esp) movl %eax, (%esp) call average

movl 44(%esp), %ecx movl 40(%esp), %edx movl $.LC4, %eax fstpl 12(%esp)

movl %ecx, 8(%esp) movl %edx, 4(%esp) movl %eax, (%esp)

call printf

leave

.cfi_restore 5

.cfi_def_cfa 4, 4

ret

.cfi_endproc

.LFE1:

.size main, .-main

.section .rodata

.align 8

.LC0:

.long 0

.long 1073741824

.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"

.section .note.GNU-stack,"",@progbits

执行结果:

2、编写一个c语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤,至少十步以上)。所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=1³+5³+3³。

源代码:

#include

int isnumber(int number){

int ge=(number%100)%10;

int shi=(number/10)%10;

int bai=(number/100);

printf("%d\n",ge);

printf("%d\n",shi);

printf("%d\n",bai);

int temp=ge*ge*ge+shi*shi*shi+bai*bai*bai;

if(temp==number){

return 1;

}else{

return 0;

}

}

int main(){

int number=0;

printf("input number!\n");

scanf("%d",&number);

if(number>1000&&number<0){

printf("number limits outbounds!\n");

}

if(isnumber(number)){

printf("number is format!\n");

}else{

printf("number is not format!\n");

}

return 0;

}

执行结果:

相关文档
最新文档