汇编基础--标识符、标号、伪指令和指令
注:本文是以MASM的语法格式为基础的,大部分内容参考《Intel汇编语言程序设计 第五版》
1、标识符
标识符是程序员自己定义的名字,用来标识变量、常量、过程或代码标号。创建标识符时要注意:
1)标识符可以包含1~247个字符;
2)标识符大小写不敏感(MASM默认不敏感);
3)标识符的第一个字符必须是字母、下划线、@、?或$,后续字符可以是数字;
4)标识符不能与汇编器的保留字相同。
在汇编时,可以使用命令行的 -Cp选项来使所有关键字和标识符大小写敏感。
2、标号
标号是充当指令或数据位置标记的标识符。放置在一条指令之前的标号表明了该指令的地址,类似的,房子在变量之前的标号表明了该变量的地址。
1)数据标号:
数据标号标识了变量的地址,为在代码中引用该变量提供了方便,如:
count DWORD 100 ;定义了一个名为count的变量
2)代码标号:
程序代码区中的标号必须以冒号(:)结尾。代码标号通常用作跳转和循环指令的目标地址,如:
loop: jmp loop ;跳到loop处执行代码,这是一个死循环
代码标号可以与指令在同一行也可以独自成一行。
3、伪指令
伪指令是内嵌在程序源代码中,由汇编器识别并执行相应动作的命令。与真正的指令不同,伪指令在程序运行时并不执行。伪指令可用于定义变量、宏以及过程,可用于命名段以及执行许多其他与汇编器相关的簿记任务。MASM中伪指令大小写不敏感,.data和.DATA是等价的。每个汇编器都有一套不同的伪指令,例如,TASM以及NASM和MASM的伪指令有一个公共的交集,而GNU汇编器与MASM的伪指令几乎完全不同。
4、指令
汇编语句中的指令是一条汇编语句。一条汇编指令包含四个基本部分:标号、指令助记符(操作码)、操作数(0个或多个)、注释。其中,标号和注释是可选的。
1)标号:见第2条;
2)指令助记符:用于辅助记忆,如 MOV、SUB等;
3)操作数:
4)注释:以分号(;)字符开始,分号后的内容为注释内容,汇编器会忽略同一行上分号后面所有的内容;
另外:在 as86汇编中,也可以使用感叹号(!)作为注释标志;
在 AT&T汇编中,使用井号 (#)作为注释标志。