一.欢迎来到我的酒馆
汇编语言是一门依赖处理器架构和指令集的编程语言。在这个章节里,我们主要关注intel奔腾32位的处理器。本章节,你需要准备:
- 一台PC
- 一个Linux操作系统
- 一个NASM汇编语言程序编辑器
现在有很多优秀的汇编语言编辑器:
- Microsoft Assembler(MASM)
- Borland Turbo Assembler(TASM)
- The GNU Assembler(GAS)
这里我们选用NASM,他有很多优点:
- 免费。你可以从网站上免费下载。
- 丰富的文档,你可以从网上获取很多信息。
- 跨平台,既可以在Windows下使用,也可以在Linux下使用。
二.安装NASM
2.1如果你在安装Linux的时候选择了开发者工具版本,那么NASM自动包含在了Linux系统里面,你不需要下载和安装就可以使用。按照下面的步骤检测你的Linux系统是否安装了NASM:
- 打开Linux命令行窗口
- 输入命令: whereis nasm
- 如果已经安装了NASM,此时会提示NASM的安装路径,如:nasm:/usr/bin/nasm。如果没有安装,则会显示nasm;这时候你需要安装nasm。
2.2 Linux下,按照下面的步骤安装NASM:
-
访问NASM的官网下载最新的NASM版本,NASM官网http://www.nasm.us/
-
下载Linux源文件档案,NASM的版本信息写在文件夹名上,如:nasm-2.16.02rc1.tar nasm的版本为2.16。
-
将下载的档案解压,解压文件会解压到一个子文件夹内,如:nasm-X.XX
-
转到这个解压后的子目录:nasm-x.xx 然后输入:./configure这条命令会找到c。编译器然后创建makefile。
-
输入make命令构建nasm。
-
输入make install命令,将nasm安装到/usr/local/bin目录下,并且安装man手册。
2.3 Windows下安装NASM:
在官网下载的速度很慢,这里可以下载好了的nasm:win64 nasm2.16
下载、解压完成后的nasm程序:
这时候,需要将nsam添加到PATH系统环境变量,可以在任意路径使用nasm和ndisasm工具,添加PATH系统环境变量请查看我的博客:Windows下配置MinGW64那一篇博客。
2.3.2 将下面的代码保存至hello.asm:
section .text
global _start ;must be declared for linker (ld)
_start: ;tells linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!', 0xa ;string to be printed
len equ $ - msg ;length of the string
2.4 Windows下编译.asm汇编文件
2.4.1使用nasm工具编译.asm汇编源文件为.o文件:
nasm -f elf hello.asm
2.4.2 连接.o文件并生成一个可执行文件:
ld -m elf_i386 -s -o hello.exe hello.o
2.4.3 执行hello.exe文件:
.\hello.exe
ld工具需要安装mingw64,安装mingw64的过程请查看我的博客:Window下安装MinGW64