汇编语言`汇编程序'也具体吗?哪个汇编程序最好?

cla*_*aws 5 assembly masm nasm

我正在学习汇编语言.我从PC Assembly Language使用NASM(The Netwide Assembler)的Paul A. Carter开始.然后在中间我切换并开始阅读Introduction to 80×86 Assembly Language and Computer Architecture使用MASM.

在NASM中,我曾经写过,用于初始化一个字节

db 110101b

在MASM我正在使用

BYTE 110101b

我正在读书.由于这些是汇编程序指令,因此每个汇编程序的指令都不同.对?这些汇编程序开发人员是否遵循这些指令的标准?因为,他们知道助记符是CPU特有的.所以,它在学习和汇编语言编码方面的痛苦.

现在,如果他们遵循不同的指令,如果你改变汇编程序或者你切换操作系统会更加痛苦(MASM开发人员如果进入linux就会陷入困境).

我的困惑是我应该熟悉NASM还是MASM?我很喜欢Windows,但我可能还需要在Linux上工作(将来).

每本书都应该标题为"_________汇编语言使用__________汇编"

Ric*_*ton 4

不幸的是,汇编语言从来没有一个标准。您只需要了解汇编器支持的指令即可。幸运的是,大多数指令虽然名称不同,但语义相似,例如 db 和 BYTE。

可是等等!情况会变得更糟,尤其是对于 x86。您(至少)有两种汇编程序可以接受的代码形式:Intel 格式和 AT&T 格式。AT&T 格式将大多数操作数的顺序反转为指令(或者反之亦然;-)。

NASM 可能是可移植性更好的选择,但您也可以看看 GNU 汇编器。