在真正接触汇编语言的指令之前最好先了解汇编语言的工作原理和过程,这对于理解汇编指令和读汇编的程序有很大的好处。
1. 处理器结构
寄存器(有限的存储单元),时钟,一个控制单元(CU)和一个算术逻辑单元(ALU)
2. 指令执行周期
程序在开始执行之前必须首先装入内存,指令指针包含要执行的下一条指令的地址,指令队列存放着若干条将要执行的指令。在指令使用了内存
操作数的时候还要两个额外的步骤:取操作数和存储输出操作数
3. IA-32处理器体系结构
3.1 操作模式
保护模式:处理器的基本模式,保护模式下所有指令和特性可用。处理器可访问高达4GB的内存。
虚拟8086模式:是保护模式的特例,可以在安全多任务条件下执行实地址访问,也不会造成系统的崩溃
实地址模式:程序可以直接访问内存地址和硬件,易造成系统挂起
3.2 执行环境
这里直说某些通用寄存器的特殊用法:
EAX 在乘法和除法指令中被自动使用
某些指令中ECX被当做循环计数器
ESP 寻址堆栈上的数据,极少用于普通的算术运算和数据传输
高级语言使用EBP引用堆栈上的函数参数和局部变量。一般不应该用于普通运算和数据传送
EIP寄存器存放下一条要执行的指令的地址
EFLAGS标志寄存器
进位标志(CF):无符号数运算的结果太大而目的操作数无法容纳时置位
溢出标志(OF):目的操作数无法容纳结果
符号标志(SF):结果为负
奇偶标志(PF):结果为偶数时置位
3.3 IA-32的内存管理
3.3.1 实地址模式
使用20位地址线,处理器使用分段内存的解决方案。
段-偏移地址:两个十六位整数,第一个为段首地址,第二个为偏移地址。
段地址*10h+偏移地址=线性地址
3.3.2 保护模式