通过学习汇编语言了解一些程序的更深层的东西; 汇编语言是一个程序员修炼的非常重要的环节
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 # 调用内核功能
# 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/



2011/10/08 22:57 | 
