伪代码(opcodes)
汇编程序是用伪代码创建的。一个伪代码是一条处理器可以理解的指令。例如:
ADD
Add指令把两个数加到一起。大部分伪代码有参数 :
ADD eax, edx
段(Segment)寄存器
段寄存器定义了哪一段内存被使用。你可能在win32asm中用不着它们,因为windows有一个平坦(flat)的内存系统。
在Dos中,内存被分为64kb的段,因而如果你想要定一个内存地址。你指定一个段,并用一个offset(偏移址)(像0172:0500(segment:offset))。在windows中,段有4GB的大小,所以你在Windows中不需要段。段总是16位寄存器。
CS 代码段
DS 数据段
SS 栈段
ES 扩展段,也叫附加段
FS (only 286+) 全功能段
GS (only 386+) 全功能段
指针寄存器
实际上,你可以把指针寄存器当作全功能寄存器来使用(除了eip),只要你保存并恢复它们的原始值。
指针寄存器之所以这么叫是因为它们经常被用来存储内存地址。一些伪代码(movb,scasb等)也要用它们。
esi (si) 源索引
edi (di) 目标索引
栈寄存器
有2个栈寄存器:esp和ebp。esp装有内存中当前栈的位置(在下章中,对此有更多的内容)。Ebp在函数中被用成指向局部变量的指针。
esp (sp) 栈指针
ebp (bp) 基(base)指针