第一部分 基础入门

NASM: Netwide Assembler #

基于 x86 架构的汇编与反汇编软件。它可以用来编写 16 位(8086、80286 等)、32 位(IA-32)和 64 位(x86_64)的程序。 NASM 被认为是 Linux 平台上最受欢迎的汇编工具之一。

NASM 可以输出多种二进制格式:

  • 通用对象文件格式(COFF
  • OMF(Relocatable Object Module Format,用于 80x86 系列处理器上)
  • a.out
  • 可执行与可链接格式(ELF
    • 地址无关代码仅支持 ELF 对象文件。
  • Mach-O
  • 二进制文件(.bin,二进制磁盘映像,用于编译操作系统)

Hello World #

nasm -f macho64 -o test.o test.asm

ld -o test test.o -macosx_version_min 11.5 -lSystem -L$(xcode-select -p)/SDKs/MacOSX.sdk/usr/lib

./test

参考:

SECTION .data

msg: db "hello assembly.", 0x0a
len: equ $-msg

SECTION .text
global _main

kernel:
    syscall
    ret

_main:
    mov rax,0x2000004
    mov rdi,1
    mov rsi,msg
    mov rdx,len
    call kernel

    mov rax,0x2000001
    mov rdi,0
    call kernel

本文访问量

本站总访问量

本站总访客数