asm call函数

section .data
	msg db "Hello, World, via print by myself", 0xA
	len equ $ - msg

section .text
global _start
_start:
	; push two int into stack
	push msg
	push len
	call print
	add esp, 8 ; pop that two int

_exit:
	mov	ebx, 0
	mov	eax, 1
	int 0x80

print:
	push ebp ; save the value of ebp
	mov ebp, esp ; ebp now points to the top of stack

	mov	edx, [ebp + 8]
	mov ecx, [ebp + 12]
	mov ebx, 1
	mov eax, 4
	int 0x80

	mov esp, ebp
	pop ebp ; restore ebp

	ret


在linux中,可以使用如下命令编译这个文件,假设将文件名是 call.asm,首先我们先将这个文件编译成elf格式的文件

nasm -f elf call.asm -o call.o


第二步就是链接

ld -s call.o -o call

链接成功后,就可以测试运行了
./call







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值