mac的汇编代码(NASM)-hello world

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mac的汇编代码(NASM)-hello world相关的知识,希望对你有一定的参考价值。

  1. ; Hello World in assembly for mac
  2. ; nasm -f macho hello.asm
  3. ; ld -e _start -o hello hello.o
  4. ;
  5. section .text
  6. global _start ;must be declared for linker (ld)
  7.  
  8. _syscall:
  9. int 0x80 ;system call
  10. ret
  11.  
  12. _start: ;tell linker entry point
  13.  
  14. push dword len ;message length
  15. push dword msg ;message to write
  16. push dword 1 ;file descriptor (stdout)
  17. mov eax,0x4 ;system call number (sys_write)
  18. call _syscall ;call kernel
  19.  
  20. ;the alternate way to call kernel:
  21. ;push eax
  22. ;call 7:0
  23.  
  24. add esp,12 ;clean stack (3 arguments * 4)
  25.  
  26. push dword 0 ;exit code
  27. mov eax,0x1 ;system call number (sys_exit)
  28. call _syscall ;call kernel
  29.  
  30. ;we do not return from sys_exit,
  31. ;there's no need to clean stack
  32. section .data
  33.  
  34. msg db "Hello, world!",0xa ;our dear string
  35. len equ $ - msg ;length of our dear string

以上是关于mac的汇编代码(NASM)-hello world的主要内容,如果未能解决你的问题,请参考以下文章

在Mac OSX上编译NASM

汇编学习笔记-汇编程序的基本语法(NASM)

简单的 hello world exec 是 10 KB

CentOS7写汇编并编译运行汇编代码

如何使用 gcc 生成可以用 nasm 编译的汇编代码 [重复]

了解汇编、nasm、x86 中的 printf 函数。我不知道为啥这段代码没有打印出任何东西