as 汇编入门, hello world 显示
/* as 汇编入门, hello world 显示
操作数方向 从左向右
立即数表示方式 $
寄存器表示方式 %
助记符指定操作数长度 b8位,w16位,l32位, movl $0, %eax
长跳转和调用 ljmp $sect, $off
内存单元 圆括号 mov 5(%ebx), %eax
间接寻址方式 %seg:disp(base,index,scale)
*/
//注释 单行用 # 或 // 多行用 /* ... */
// 代码如下: 建议背过
.data # .data 段
msg:
.string "hello, workd!\n" # 定义一个字符串
len = . - msg # 字符长度
.text # .text 段
.global _start #声明全局符号
_start: # 标号
movl $len, %edx # 参数3, 字符串长度
movl $msg, %ecx # 参数2, 要显示的字符串地址
movl $1, %ebx # 参数1, 文件描述符(stdout)
movl $4, %eax # 系统调用 (sys_write)
int $0x80
movl $0,%ebx
movl $1,%eax # 系统调用 (sys_exit)
int $0x80
/*
编译: as 1.s -o 1.o
连接: ld 1.o -o 1
执行: ./1
*/