|
只适合和我一样的未接触过的新手,高手勿笑了,菜鸟总结经验
汇编语言是高级语言吗?汇编语言和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的代码是这样:
- global _start
-
- section .text
- _start:
- mov eax, 4 ; write
- mov ebx, 1 ; stdout
- mov ecx, msg
- mov edx, msg.len
- int 0x80 ; write(stdout, msg, strlen(msg));
-
- mov eax, 1 ; exit
- mov ebx, 0
- int 0x80 ; exit(0)
-
- section .data
- msg: db "Hello, world!", 10
- .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
|
|