[label: ] mnemonic [operands] [;comment]
现在分别了解每个部分,先从标号字段开始。count DWORD 100汇编器为每个标号分配一个数字地址。可以在一个标号后面定义多个数据项。在下面的例子中,array 定义了第一个数字(1024)的位置,其他数字在内存中的位置紧随其后:
array DWORD 1024, 2048 DWORD 4096, 8192程序代码区(指令所在区段)的标号必须用冒号(:)结束。代码标号用作跳转和循环指令的目标。例如,下面的 JMP 指令创建一个循环,将程序控制传递给标号 target 标识的位置:
target: mov ax,bx ... jmp target代码标号可以与指令在同一行上,也可以自己独立一行:
L1: mov ax, bx L2 :标号命名规则要求,只要每个标号在其封闭子程序页中是唯一的,那么就可以多次使用相同的标号。
助记符 | 说明 | 助记符 | 说明 |
---|---|---|---|
MOV | 传送(分配)数值 | MUL | 两个数值相乘 |
ADD | 两个数值相加 | JMP | 跳转到一个新位置 |
SUB | 从一个数值中减去另一个数值 | CALL | 调用一个子程序 |
示例 | 操作数类型 | 示例 | 操作数类型 |
---|---|---|---|
96 | 整数常量 | eax | 寄存器 |
2+4 | 整数表达式 | count | 内存 |
stc ;进位标志位置 1INC 指令有一个操作数:
inc eax ;EAX 加 1MOV 指令有两个操作数:
mov count, ebx ;将 EBX 传送给变量 count操作数有固有顺序。当指令有多个操作数时,通常第一个操作数被称为目的操作数,第二个操作数被称为源操作数(source operand)。
imul eax,ebx,5在上例中,EBX 与 5 相乘,结果存放在 EAX 寄存器中。
COMMENT ! This line is a comment. This line is also a comment. !其他符号也可以使用,只要该符号不出现在注释行中:
COMMENT & This line is a comment. This line is also a comment. &当然,程序员应该在整个程序中提供注释,尤其是代码意图不太明显的地方。
00000000 66 8B C3 mov ax,bx 00000003 90 nop ;对齐下条指令 00000004 8B D1 mov edx,ecxx86 处理器被设计为从双字的偶数倍地址处加载代码和数据,这使得加载速度更快。
本文链接:http://task.lmcjl.com/news/15090.html