方便起见学习汇编还是安装一个win xp或者 win 7系统或者linux、unix
一、常见汇编器
**NASM**:Netwide Assembler (简称 NASM)是一款基于英特尔 x86 架构的汇编与反汇编工具。它可以用来编写16位、32位(IA-32)和64位(x86-64)的程序。 NASM被认为是Linux平台上最受欢迎的汇编工具之一
**Yasm** :在计算机领域中,Yasm是英特尔x86架构下的一个汇编器和反汇编器。它可以用来编写16位、32位(IA-32)和64位(x86-64)的程序。Yasm是一个完全重写的Netwide汇编器(NASM)。Yasm通常可以与NASM互换使用,并支持x86和x86-64架构。与NASM的比较
优点:
它可以汇编英特尔和AT&T的汇编语法;
对编译器开发者提供库和接口。
缺点:
和活跃开发的NASM相比,文档仍然不够完善;
Yasm缺乏对可重定位目标模块格式(OMF)对象的支持。
**MASM**: MASM 是 Microsoft Macro Assembler 的缩写,它是微软为 x86 微处理器家族,所写的一套宏汇编器。它最初是用来发展在 MS-DOS 上面运行的软件,同时,它也是该系统最流行的汇编器。
它支持的宏很灵巧,既广泛又多样性,结构化程序的惯用语法,包含高端架构式的循环、程序调用,以及轮替 (alternation)(因此,MASM 算是高端汇编器的一个范本)。MASM原本是由微软公司维护的,但从6.12版后不再单独销售,而是随附在微软软件开发工具包与C语言编译器下,近期版本的MASM也包含在微软开发工具Visual Studio中。
**TASM** :Borland公司开发的汇编编译器,被广泛用于Turbo C,Quick Basic等编译器,用作中间过渡编译。它也能独立的编译纯汇编或是Win32Asm的代码。具有编译快速,高效的特点,至今依然是汇编开发的首选利器。
ASM是Borland公司推出的汇编编译器,也是一种使用很广泛的编译器,与MASM相比,TASM的升级没有这么频繁,TASM早在1.0版本就有了对80386处理器指令的完全支持(MASM要到5.0版本才支持80386指令),1989年推出的1.01版本修正了1.0版的一些错误;早期的版本还有TASM 3.0和TASM 4.0,其中 4.0版是TASM系列编译器编写DOS程序使用最广泛的版本。TASM的最后一个版本是5.0版,这个版本支持WIN32编程,并单独为WIN32编程附带有一整套32位程序:32位的编译器TASM32.EXE、连接器TLINK32.EXE和资源编译器BRC32.EXE。与这些32位程序对应的16位工具在软件包中依然存在,文件名为TASM.EXE,TLINK.EXE和BRC.EXE等
[tasm5编译器相关](https://trimtab.ca/2010/tech/tasm-5-intel-8086-turbo-assembler-download/)
二、跨平台ide sasm
https://dman95.github.io/SASM/english.html
win下中断指令执行不了,安装linux版本
sudo dpkg -i sasm_3.10.1_amd64.deb
sudo apt-get install -f
sasm
三、数据表述以及寻址
变量定义:
数据定义伪指令
DB 字节
DW 字
DD 双字
DF 三字类型
DQ 四字类型
DT 10字节(五字)
传送类指令:
MOVSX说明:带符号扩展传送指令
MOVZX说明:无符号扩展传送指令
类型说明:
Type Specifier————— Bytes addressed
BYTE ——————1
WORD ——————2
DWORD ——————4
QWORD ——————8
TBYTE ——————10
与数据有关的寻址方式:除了第一种和第三种其他得到的都是偏移地址
1、立即寻址方式 :直接给出数据本身
2、直接寻址方式 :直接给出偏移地址
3、寄存器寻址方式 :直接获取寄存器中的值
4、寄存器间接寻址方式 :数据的偏移地址在寄存器中
5、寄存器相对寻址方式 :数据的偏移地址 = 寄存器 + 相对值
6、基址变址寻址方式 :数据的偏移地址 = 基地址寄存器 + 偏移地址寄存器
7、相对基址变址寻址方式 :数据的偏移地址 = 基地址寄存器 + 偏移地址寄存器 + 相对值
与转移地址有关的寻址方式