helloworld.as:
- .data # 数据段声明
- msg : .string "Hello, world!\n" # 要输出的字符串
- len = . – msg # 字串长度
- .text # 代码段声明
- .global _start # 指定入口函数
-
- _start: # 在屏幕上显示一个字符串
- movl $len, %edx # 参数三:字符串长度
- movl $msg, %ecx # 参数二:要显示的字符串
- movl $1, %ebx # 参数一:文件描述符(stdout)
- movl $4, %eax # 系统调用号(sys_write)
- int $0x80 # 调用内核功能
-
- # 退出程序
- movl $0,%ebx # 参数一:退出代码
- movl $1,%eax # 系统调用号(sys_exit)
- int $0x80 # 调用内核功能
|
.data # 数据段声明 msg : .string "Hello, world!\n" # 要输出的字符串 len = . - msg # 字串长度 .text # 代码段声明 .global _start # 指定入口函数 _start: # 在屏幕上显示一个字符串 movl $len, %edx # 参数三:字符串长度 movl $msg, %ecx # 参数二:要显示的字符串 movl $1, %ebx # 参数一:文件描述符(stdout) movl $4, %eax # 系统调用号(sys_write) int $0x80 # 调用内核功能 # 退出程序 movl $0,%ebx # 参数一:退出代码 movl $1,%eax # 系统调用号(sys_exit) int $0x80 # 调用内核功能 |
# as –gstabs -o helloworld.o helloworld.as
# ld -o helloworld helloworld.o
# ./helloworld
Hello, world!
其中:
as ld 都是gcc套件中的程序
常用的汇编开发环境:
masm : 微软开发的 ml.exe , 在visualstudio中都包含了
nasm : http://www.nasm.us/
masm32 : http://www.masm32.com/
参考资料:
强力推荐:http://www.ibm.com/developerworks/cn/linux/l-assembly/
http://www.masm32.com/
http://www.nasm.us/