test.s (转载)
--------------------------------------------------------------------
; test.s
section .data
; 数据段声明
msg db "Hello, world!", 0xA ; 要输出的字符串
len equ $ - msg ; 字串长度
section .text ; 代码段声明
global test
test: ; 在屏幕上显示一个字符串
mov edx, len ; 参数三:字符串长度
mov ecx, msg ; 参数二:要显示的字符串
mov ebx, 1 ; 参数一:文件描述符(stdout)
mov eax, 4 ; 系统调用号(sys_write)
int 0x80 ; 调用内核功能
; 退出程序
mov ebx, 0 ; 参数一:退出代码
mov eax, 1 ; 系统调用号(sys_exit)
int 0x80 ; 调用内核功能
----------------------------------------------------------------------
test.h
--------------------------------------------------------------------
#pragma once
void test();
--------------------------------------------------------------------
main.c
--------------------------------------------------------------------
int main(int argc, char* argv[])
{
test();
return 0;
}
--------------------------------------------------------------------
编译:
1.首先要安装NASM包,以支持Intel汇编的编译
2. nasm -f elf64 test.s (64位系统, 生成test.o文件)
3. gcc -o test main.c test.o (编译成可执行程序test)