Nasm 简介

机器语言

每种类型的CPU都能理解它们自己的机器语言。
机器语言里的指令是以字节形式在内存中储存的数字。每条指令有它唯一的数字码称为 操作代
码 ,或简称为 操作码 。
80x86处理器的指令大小不同。操作码通常是在指令的开始处。许多指令还包含指令使用的数据( 例如: 常量或地址)。
机器语言很难直接进行编程。解译这些数字代码指令的意思对人类来说是沉闷的。
例如:执行将EAX 和EBX 寄存器相加然后将结果送回到EAX的指令以十六进制码编译如下:

03 C3

这个很难理解。幸运的是,一个叫做 汇编的程序 可以为程序员做这个沉闷的工作。

汇编语言

一个汇编语言程序以文本格式储存(正如一个高级语言程序)。每条汇编指令代表确切的一条机器指令。例如:上面描述的加法指令在汇编语言中将描述成:

add eax, ebx

然而,它们在内核级可能会使用一个更低等级的接口。
这里指令的意思比在机器代码表示得 更 清楚。代码add是加法指令的 助记符。
一条汇编指令的通常格式为:

mnemonic( 助记符 ) operand(s)( 操作数 )

汇编程序是一个读包含汇编指令的文本文件和将汇编语言转换成机器代码的程序。
编译器是为高级编程语言做同样转换的程序。
一个汇编程序比一个编译器要简单。每条汇编语句接代表一个唯一的机器指令。高级语言 它花费了电脑科学家几年的时间来揣测如何编写一个编译器!更复杂而且可能要求更多的机器指令。

汇编和高级语言之间另一个更重要的区别是因为每种不同类型的CPU有它自己的机器代码,所以它同样有它自己的汇编语言。在不同的电脑构造中移植汇编语言比高级语言要困难得多 。

NASM

这里我们使用了Netwide Assembler,或简称为NASM 。它在Internet上是免费提供的(要得到URL,请看前言)。更普遍的汇编程序是Microsoft As-sembler(MASM) 或Borland Assembler (TASM)。MASM/TASM和NASM之间有一些汇编语法区别。

取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

Powered by bytekits.com,汇天下文字,成非凡梦想!!!