Linux下汇编学习-4
2011-12-05 16:08
190 查看
#PURPOSE:This program will compute the value of
# 2^3 + 5^2
.section .data
.section .text
.globl _start
_start:
pushl $3
pushl $2
call power
addl $8, %esp
pushl %eax
pushl $2
pushl $5
call power
addl $8, %esp
popl %ebx
addl %eax, %ebx
movl $1, %eax
int $0x80
.type power, @function
power:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %ebx
movl 12(%ebp), %ecx
movl %ebx, -4(%ebp)
power_loop_start:
cmpl $1, %ecx
je end_power
movl -4(%ebp), %eax
imull %ebx, %eax
movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start
end_power:
movl -4(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret
使用.type funname @function去定义一个函数
使用call指令去调用一个子函数,在调用子函数我们要明确,函数参数放在什么地方,返回返回值放在什么地方,函数返回地址在什么地方以及函数内的局部变量放在什么地方。我们知道,调用call指令时会做如下工作,将当前pc指针压入栈中,跳转到标号处执行程序。那么在子函数中,我们要使用ret指令,使得子函数执行完后能够跳到主函数处继续执行。
# 2^3 + 5^2
.section .data
.section .text
.globl _start
_start:
pushl $3
pushl $2
call power
addl $8, %esp
pushl %eax
pushl $2
pushl $5
call power
addl $8, %esp
popl %ebx
addl %eax, %ebx
movl $1, %eax
int $0x80
.type power, @function
power:
pushl %ebp
movl %esp, %ebp
subl $4, %esp
movl 8(%ebp), %ebx
movl 12(%ebp), %ecx
movl %ebx, -4(%ebp)
power_loop_start:
cmpl $1, %ecx
je end_power
movl -4(%ebp), %eax
imull %ebx, %eax
movl %eax, -4(%ebp)
decl %ecx
jmp power_loop_start
end_power:
movl -4(%ebp), %eax
movl %ebp, %esp
popl %ebp
ret
使用.type funname @function去定义一个函数
使用call指令去调用一个子函数,在调用子函数我们要明确,函数参数放在什么地方,返回返回值放在什么地方,函数返回地址在什么地方以及函数内的局部变量放在什么地方。我们知道,调用call指令时会做如下工作,将当前pc指针压入栈中,跳转到标号处执行程序。那么在子函数中,我们要使用ret指令,使得子函数执行完后能够跳到主函数处继续执行。
相关文章推荐
- linux下汇编学习笔记[第一天]
- linux 0.11 内核学习 -- rs_io.s,串口汇编代码
- Linux内核学习笔记-AT&T汇编语法
- Linux 下汇编学习
- linux 0.11 内核学习 -- rs_io.s,串口汇编代码
- linux汇编学习(4)-----引导linux内核
- Linux下汇编学习笔记之三--(Professional Assembly Language)
- Linux(ubuntu)下30天自制os学习引导,第1天(汇编语言,写入u盘,qemu启动u盘)
- 学习linux环境下汇编的好书《汇编语言程序设计》
- Linux 汇编语言开发入门学习(1)
- 学习记录:linux下将C程序编译为汇编程序进行分析
- 学习linux环境下汇编的好书《汇编语言程序设计》
- Linux下的汇编程序学习体会(1)(转载)
- Linux下汇编学习-1
- Linux 内核入门学习笔记(一) AT&T汇编基础
- linux 汇编学习
- Linux下的汇编程序学习体会(1)(转载)
- Linux汇编语言学习记要
- 汇编学习——使用Linux系统调用
- linux 汇编基础知识学习