Intel汇编-Linux系统调用

# An example of passing input values to a system call
#
# /usr/include/asm/unistd.h    # Linux系统调用函数定义
#
# 系统调用期望的参数顺序如下:
# EBX    (第1个参数)
# ECX    (第2个参数)
# EDX    (第3个参数)
# ESI    (第4个参数)
# EDI    (第5个参数)
#
# 超过6个参数的系统调用使用不同的方法把参数传递给系统调用。 EBX用于保存指向输入参数的内存位置的指针,
# 输入参数按照连续的顺序存储。系统调用使用这个指针访问内存位置以便读取参数。
#

    .section .data
output:
    .ascii "This is a test message.\n"
output_end:
    .equ len, output_end - output

    .section .text
    .globl main
main:
    movl $4, %eax        # write
    movl $1, %ebx        # STDOUT -> 终端设备的标准输出
    movl $output, %ecx    # 实际内存位置地址存放在ECX中,而不是存放内存位置中的值
    movl $len, %edx        # 要显示的字符串的长度
    int $0x80        # 需有这行代码系统调用才执行

    movl $1, %eax
    movl $0, %ebx
    int $0x80

# gcc -g -o 01 01-systemcall.s -m32
#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值