汇编 helloworld 学习笔记

386 阅读1分钟

一、安装nasm

nasm是mac下汇编语言编译器,可以把.s文件编译成.o文件

.s 文件:汇编语言源程序

.o 文件:编译后但未链接的文件

brew install nasm

nasm --version


官网:www.nasm.us/,可查看nasm介绍和命令


二、上代码

SECTION .data                    #数据区

msg: db "hello world!", 0x0a     #db=>data byte, 0x0a=>换行符
len: equ $-msg

SECTION .text                    #代码区
global _main                     #定义程序入口

kernel:                          #kernel代码段,给main函数call调用
syscall
ret

_main:                           #main函数代码段
mov rax,0x2000004                #write函数地址
mov rdi,1                        #write函数参数放入寄存器,64位汇编参数位置和顺序约定如下图
                                 #write原型:size_t write(int fildes,const void *buf,size_t nbytes);
mov rsi,msg
mov rdx,len
call kernel

mov rax,0x2000001                #exit函数地址
mov rdi,0
call kernel 


三、编译&&链接&&运行

nasm -f macho64 hello.s     #macho64 指定为mac64位编译后 .o文件格式

gcc hello.o -o hello

./hello