汇编语言学习系列 for循环实现
假如汇编语言要实现如下C语言的功能,编译环境Ubuntu14.04(32位)。
#include<stdio.h> int fact_for(int n) { int i; int result = 1; for(i = 2; i <= n; i++) result *= i; return result; } int main(){ printf("%d\n", fact_for(3)); return 0; }
- 代码for.s
.section .data n: .int 3 format: .asciz "%d\n" .section .text .global _start _start: pushl %ebp movl %esp, %ebp subl $8, %esp movl n, %ecx movl %ecx, (%esp) call fact_for pushl %eax pushl $format call printf movl $0, (%esp) call exit fact_for: pushl %ebp movl %esp, %ebp pushl %ebx movl 8(%ebp), %edx #get n movl $1, %eax #init result movl $2, %ecx #init i cmp %ecx, %edx jl .done .loop: imul %ecx, %eax inc %ecx cmp %ecx, %edx jge .loop .done: popl %ebx popl %ebp ret
- 编译
as for.s -o for.o
- 链接
ld -lc -I /lib/ld-linux.so.2 for.o -o for
- 执行
./for
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。