汇编语言入门HelloWorld

 阅读大约需要1分钟

汇编语言的HelloWorld 代码如下:

section .data
msg db "Hello World!",0ah
len equ $-msg
section .text
global _start
_start:
;把字符串写到标准输出
mov eax,4 ;   4号系统调用(sys_write)
mov ebx,1 ;   ebx送1表示标准输出 file handle(stdout)
mov ecx,msg ; 字符串的首地址送入ecx
mov edx,$len ;  字符串的长度送入edx
int 80h;    输出字串,调用内核
;退出
mov eax,1;   1号系统调用(sys_exit)
mov ebx,0; 返回0 exit code
int 80h ;    结束,调用内核

msg是在数据段(.data)中定义的字符串标号,db表示define byte。也就是说msg表示一个字节数组,0ah即十进制10是换行符的ASCII码值。

len是字符串长度的标号,equ表示等同于,$是一个指示当前位置的变量,表示len字节数组的最后一个字节后面的那个字节的位置,$减去msg(字符串数组的第一个字节的位置),得到的恰好是字节数组的长度,这个长度值由汇编器在编译时计算得到。

linux x86_64下编译 nasm -f elf64 hello.asm 连接 ld -s -o hello hello.o 执行 ./hello