由于工作原因有时要在几种汇编格式之间切换,特记录一下几种汇编格式,以便自已能快速"恢复"记忆,这里只是描述一下基本的格式说明.
一.MASM
1. 基本格式为: [标号:] 指令助记符 [DST [,SRC]] [;注释]
2. 数据定义指令: DB 1 byte
DW 2 byte
DD 4 byte
DT 8 byte
DQ 10 byte
3.操作符PTR 指明要访问的存储器操作数类型, 格式为:类型 PTR 地址表达式
如 MOV WORD PTR [SL],1
类型可以是byte,word,dword,near,far
二.NASM
总体格式和MASM差不多,做了更好的简化,个人最喜欢.
1.不放[]括号来的标号和变量名被认为是地址, []起来表示其内容
2.符号$ 和$$
$ 表示当前行汇编后的偏移地址
$$ 表法当前section汇编后的偏移地址
一个惯用法就是$-$$ 表示当前行距离当前section的相对偏移
三.AT&T
在立即数前加$,在寄存器前加%
源操作数与目标操作数与MASM相反
备注: 微软c/c++编译器生成汇编代码参数 cl file.c -Fa
GCC 生成汇编代码参数 gcc -S file.c