veket官方网站论坛

veket

 找回密码
 要注册
搜索
查看: 504|回复: 7

[分享] 如何编译汇编代码的方法,详细过程讲解,nasm汇编教程

[复制链接]
发表于 2023-4-30 08:42 | 显示全部楼层 |阅读模式
只适合和我一样的未接触过的新手,高手勿笑了,菜鸟总结经验
汇编语言是高级语言吗?汇编语言和c语言区别?……
不讨论这些问题,只是详细实例演示,如何编译出一个汇编程序
第一步是下载安装:NASM 软件
它是多平台的,各大主流操作系统皆可以使用它
veket系统在这里下载:
veket-22对应版本
http://www.lucky8k.com/thread-134461-1-1.html
veket-24对应版本
http://www.lucky8k.com/thread-134789-1-1.html
然后准备一段代码,例如Hello, world!
linux的代码是这样:
  1. global _start

  2. section .text
  3. _start:
  4.     mov eax, 4 ; write
  5.     mov ebx, 1 ; stdout
  6.     mov ecx, msg
  7.     mov edx, msg.len
  8.     int 0x80   ; write(stdout, msg, strlen(msg));

  9.     mov eax, 1 ; exit
  10.     mov ebx, 0
  11.     int 0x80   ; exit(0)

  12. section .data
  13. msg:    db  "Hello, world!", 10
  14. .len:   equ $ - msg
复制代码

保存为.asm后缀的文件
例如叫:hello.asm
然后将它编译:
打开命令行,切换到存放文件的目录(不切换当然也可以,不切换到文件目录下,编译的时候就需要加入文件路径)
编译命令为:
nasm -f elf64 hello.asm
其中的hello.asm是我的文件名,若你的不是这文件名修改为适合你的,
注意是,之前看旧教程出错是因为用了,nasm -f elf hello.asm,那样编译出来的是只适合以前的386,现在系统都是64位居多,所以要加上64。
veket在进行下一步之前要挂载开发包,在这里下载安装:
veket-22对应版本
http://www.lucky8k.com/thread-133863-1-1.html
veket-24对应版本
http://www.lucky8k.com/thread-134607-1-1.html
和编译c语言程序不同的是,汇编语言这样编译出来之后仍然未能直接执行,还要多一个步骤:
ld hello.o -o hello
后边的helld为可执行文件名,可以任意改成你喜欢的文件名。hello.o为上一步编译出来的文件,自行修改为你用的文件名。
编译好之后就可以直接执行了,试着:
./hello
看看,成功运行就完成了整个过程的了。

补充,在这一步:
ld hello.o -o hello
也可以改为gcc
gcc hello.o -o hello

视频教程
如何编译汇编代码的方法,详细过程讲解,nasm汇编教程新手详细步骤
https://www.bilibili.com/video/BV1tP41127g4
简单的汇编程序代码编译,NASM汇编语言
https://www.bilibili.com/video/BV1zu4y157Vn
发表于 2023-5-1 22:26 | 显示全部楼层
很好的教程啦
发表于 2023-5-10 08:33 | 显示全部楼层
好用
发表于 2023-6-13 15:09 | 显示全部楼层
教程好。
发表于 2023-6-14 09:54 | 显示全部楼层
这样好
您需要登录后才可以回帖 登录 | 要注册

本版积分规则

QQ|手机版|Archiver|veket官方网站论坛 ( 粤ICP备 11052856 )

GMT+8, 2024-4-29 18:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表