汇编语言基础1

来源:互联网 发布:台州淘宝网店运营招聘 编辑:程序博客网 时间:2024/06/05 04:38

x86是基于Intel8086处理器的小端(little-endian)体系结构(就是先存储低位的字节)。处理器通常可以运行在两种模式下:实模式和保护模式。实模式是指处理器刚通电后只支持16位指令集的状态。保护模式是指处理器支持虚拟内存,分页以及其他的功能状态,也是运行当代操作系统的状态。
寄存器
寄存器是cpu内部的高速存储单元,访问速度比内存快得多,用来存取程序运行中的各种信息。常用的寄存器分为4类,分别是8个通用寄存器,6个段寄存器,1个标志寄存器和1个指令指针寄存器。
(1)通用寄存器主要用于各种运算和数据的传送,每个寄存器都可以作为一个32位,16位,或8位来使用。分别是数据存取器EAX,EBX,ECX,EDX和指针,变址寄存器EBP,ESP,ESI,EDI.EAX是32位,AX是16位,AL/AH是8位。但是实际上只有数据存储寄存器这么使用。指针变址寄存器可以按照32位或16位进行使用。例ESI寄存器可以存储32位的指针,其低16位SI,存储16位的指针,但无法像AX拆成AL(低8位)和AH(高8位)。
部分通用寄存器的特殊用途:
1,EAX在乘法和除法指令中被自动调用;
2,CPU自动使用ECX作为循环计数器;
3,ESP寻址堆栈上的数据,ESP一般不参加数值运算,通常称为栈指针寄存器;
4,ESI(source 源地址)和EDI(destination 目的地)通常用于内存数据的高速传送,被称为源指针寄存器和目的指针寄存器;
5,EBP由高级语言用来引用参数和局部变量,称为栈桢基址指针寄存器。
(2)指令指针寄存器
指令指针寄存器EIP是一个32位的寄存器。在16位环境中为IP.EIP通常保存着下一条要执行指令的地址。下一条指令的地址为当前指令的地址加当前指令的长度。EIP的值只能通过流程控制指令,比如JMP,JE,RET等来改变。EIP寄存器的读取不能直接用 MOV EAX,EIP。
(3)段寄存器
段寄存器用于存放段的基址,段是一块预分配的内存区域。在16位CPU中有4个段寄存器是CS(代码段),DS(数据段),SS(堆栈段),ES(附加段)。32位下扩展了2个附加的段寄存器FS和GS。
(4)标志寄存器
在16位CPU中,标志寄存器称为FLAGS.在32位CPU中,标志寄存器也扩展为32位,EFLAGS.标志寄存器中每一个标志位只占1位,并且16位的标志寄存器并没有全部使用。16位的标志寄存器分为两部分,条件标志和控制标志。
条件标志位的说明如下:
1,OF(Overflow Flag):溢出标志位,溢出时为1,否则为0;
2,SF(Sign Flag):符号标志,运算结果为负时,为1,否则为0;
3,ZF(Zero Flag):零标志,运算结果为0 时,为1,否则为0。
4,(Auxiliary carry Flag):辅助进位标志,记录运算时第3位(半字节)产生的进位,有进位时为1,否则为0。
5,(Parity Flag):奇偶标志,结果操作数中1的个数为偶数时,为1,否则为0。
6,CF(Carry Flag):进位标志,产生进位时为1,否则为0。
控制标志位说明:
1,DF(Direction Flag):方向标志,在串处理指令中用于方向控制。
2,IF(Iterrupt Flag):中断标志。
3,TF(Trap Flag):陷阱标志。

原创粉丝点击