一、寄存器的介绍:
A B C D 后面带个H或L的 表示是8位寄存器。
A B C D 后面带个 X 的 表示是16位寄存器。
AX BX CX DX 前面带 E的 表示是32位寄存器。
一般寄存器:AX、BX、CX、DX
AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器;
索引暂存器:SI、DI
SI:来源索引暂存器,DI:目的索引暂存器
堆叠、基底暂存器:SP、BP
SP:堆叠指标暂存器,BP:基底指标暂存器
而EAX、EBX、ECX、EDX为AX,BX,CX,DX的延伸,各为32比特。ESI、EDI、ESP、EBP则为SI,DI,SP,BP的延伸,为32比特。EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP等都是X86 (X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。)汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比如:add eax,-1;可以认为是给变量加上-1。
EAX 是"累加器", 它是很多加法乘法指令的缺省寄存器。
EBX 是"基地址"寄存器, 在内存寻址时存放基地址。
ECX 是计数器, 是重复前缀指令和LOOP指令(是循环指令,循环次数由计数寄存器CX指定。)的内定计数器。
EDX 则总是被用来放整数除法产生的余数。
ESI/EDI分别叫做"源/目标索引寄存器"。
二、什么是汇编语言
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的不同平台之间不可直接移植。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
三、汇编指令
数据传输指令:它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
MOV 传送字或字节。
PUSH 把字压入堆栈。
POP 把字弹出堆栈。
LEA 装入有效地址。
例: LEA DX,string ;把偏移地址存到DX.
MOVS 串传送
JMP
转移指令的原理(jmp)
可以修改IP,或同时修改CS和IP的指令统称转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。
call/ret
call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值。它们经常共同用语实现子程序的设计。
ADD 加法指令
SUB减法指令