Linux下两种汇编工具简单用法: NASM And AS

NASM And AS

简介

nasmaslinux下两种编译汇编文件的工具, 对应两种不同类型的汇编语言.

nasm  -->   Intel
as    -->   AT&T

这两种语言语法上稍有差别,其实也差不多.

两种工具的简单用法(32bit)

nasm
section .text    ;section declaration

global _start

_start:

        mov     edx,len ;third argument: message length
        mov     ecx,msg ;second argument: pointer to message to write
        mov     ebx,1   ;first argument: file handle
        mov     eax,4   ;system call number (sys_write)
        int     0x80    ;call kernel

        mov     ebx,0   ;first syscall argument: exit code
        mov     eax,1   ;system call number (sys_exit)
        int     0x80    ;call kernel

section .data               ;section declaration

        msg     db      "Hello, World!",0xa ;our dear string
        len     equ     $ - msg                 ;length of our dear string

编译

nasm -f elf32 hello.asm -o hello.o

链接

ld -m elf_i386 hello.o -o hello
as
.text          
.global _start  
_start:

    movl    $len,%edx   # third argument: message length
    movl    $msg,%ecx   # second argument: pointer to message to write
    movl    $1,%ebx     # first argument: file handle (stdout)
    movl    $4,%eax     # system call number (sys_write)
    int     $0x80       # call kernel

    movl    $0,%ebx     # first argument: exit code
    movl    $1,%eax     # system call number (sys_exit)
    int     $0x80       # call kernel

    .data                   # section declaration

msg:
    .ascii  "Hello, World!\n"   # our dear string
     len = . - msg           # length of our dear string

编译

as -o hello.o hello.s --32

链接

ld -m elf_i386 hello.o -o hello

参考链接

https://ubuntuforums.org/showthread.php?t=1542830

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值