汇编基础1
来源:互联网 发布:java jvm1.5官方下载 编辑:程序博客网 时间:2024/05/22 13:06
80386 CPU的寄存器可以分为8组:通用寄存器,段寄存器,指令指针寄存器,标志寄
存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。
AX,BX,CX,DX,SI,DI,SP,BP,它们的含义如下:
EAX:累加器 i+j的结果放到累加器
EBX:基址寄存器(Base)
ECX:计数器 循环累加的时候会用到
EDX:数据寄存器(Data)
ESI:源地址指针寄存器(Source) movs的时候用
EDI:目的地址指针寄存器(Directy) movs的时候用
EBP:基址指针寄存器(Base) 变量的地址在指针里
ESP:堆栈指针寄存器(Stack)
这些寄存器可以将低16位单独存取, 也就是8086的AX,BX,CX,DX,SI,DI,SP,BP,在存取这
些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP),它
们的高16位不受影响,同时和8086一样对于AX,BX,CX,DX这四个寄存器来讲,可以单
独存取它们的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)(High/Low)
2、段寄存器
除了8086的4个段外(CS,DS,ES,SS),80386还增加了两个段FS,GS,这些段寄存器都是
16位的,它们的含义如下:
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS附加段
3、指令指针寄存器
EFLAGS,和8086的16位标志寄存器相比,增加了4个控制位,不过这4个控制位它们在
实模下不起作,这四个控制位分别是:
IOPL(I/O Privilege Level),I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。
如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个
保护性异常。
NT(Nested Task):控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复
EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。
RF(Restart Flag):重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,
RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非
调试故障时,处理器置RF=1。
VM(Virtual Machine):虚拟8086模式(用软件来模拟8086的模式, 所以也称虚拟机)。VM=0,
处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。
其它16个标志位的含义和8086一样,在这里也重温一遍:
PF(Parity Flag):奇偶标志位
AF(Assistant Flag):辅助进位标志位
ZF(Zero Flag):零标志位
SF(Singal Flag):符号标志位
IF(Interrupt Flag):中断允许标志位,由CLI,STI两条指令来控制
DF(Direction Flag):向量标志位,由CLD,STD两条指令来控制
存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。
1、通用寄存器
EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP, 它 们 的 低16位 就 是8086的AX,BX,CX,DX,SI,DI,SP,BP,它们的含义如下:
EAX:累加器 i+j的结果放到累加器
EBX:基址寄存器(Base)
ECX:计数器 循环累加的时候会用到
EDX:数据寄存器(Data)
ESI:源地址指针寄存器(Source) movs的时候用
EDI:目的地址指针寄存器(Directy) movs的时候用
EBP:基址指针寄存器(Base) 变量的地址在指针里
ESP:堆栈指针寄存器(Stack)
这些寄存器可以将低16位单独存取, 也就是8086的AX,BX,CX,DX,SI,DI,SP,BP,在存取这
些寄存器的低16位(AX,BX,CX,DX,SI,DI,SP,BP),它
们的高16位不受影响,同时和8086一样对于AX,BX,CX,DX这四个寄存器来讲,可以单
独存取它们的高8位和低8位(AH,AL,BH,BL,CH,CL,DH,DL)(High/Low)
2、段寄存器
除了8086的4个段外(CS,DS,ES,SS),80386还增加了两个段FS,GS,这些段寄存器都是
16位的,它们的含义如下:
CS:代码段(Code Segment)
DS:数据段(Data Segment)
ES:附加数据段(Extra Segment)
SS:堆栈段(Stack Segment)
FS:附加段
GS附加段
3、指令指针寄存器
EIP,它的低16位就是8086的IP,它存储的是下一条要执行指令的地址。
EFLAGS,和8086的16位标志寄存器相比,增加了4个控制位,不过这4个控制位它们在
实模下不起作,这四个控制位分别是:
IOPL(I/O Privilege Level),I/O特权级字段,它的宽度为2bit,它指定了I/O指令的特权级。
如果当前的特权级别在数值上小于或等于IOPL,那么I/O指令可执行。否则,将发生一个
保护性异常。
NT(Nested Task):控制中断返回指令IRET,它宽度为1位。NT=0,用堆栈中保存的值恢复
EFLAGS,CS和EIP从而实现中断返回;NT=1,则通过任务切换实现中断返回。
RF(Restart Flag):重启标志,它的宽度是1位。它主要控制是否接受调试故障。RF=0接受,
RF=1忽略。如果你的程序每一条指令都被成功执行,那么RF会被清0。而当接受到一个非
调试故障时,处理器置RF=1。
VM(Virtual Machine):虚拟8086模式(用软件来模拟8086的模式, 所以也称虚拟机)。VM=0,
处理器工作在一般的保护模式下;VM=1,工作在V8086模式下。
其它16个标志位的含义和8086一样,在这里也重温一遍:
CF(Carry Flag):进位标志位,由CLC(Clear),STC(Set)两标志位来控制
PF(Parity Flag):奇偶标志位
AF(Assistant Flag):辅助进位标志位
ZF(Zero Flag):零标志位
SF(Singal Flag):符号标志位
IF(Interrupt Flag):中断允许标志位,由CLI,STI两条指令来控制
DF(Direction Flag):向量标志位,由CLD,STD两条指令来控制
OF(Overflow Flag):溢出标志位
0 0
- 汇编基础(1)
- 汇编基础1
- 1 汇编基础
- 8086汇编1,零基础
- 汇编学习--汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- 汇编基础
- PAT-A 1041. Be Unique
- 2005: [Noi2010]能量采集
- unity动态资源内存管理
- win8.1 安装 vm 11 和 centos 7,以及git 2.9 ,ruby2.3,rubygems2.6 ;github.io
- cocos2d-x实战项目开发:功夫小子之需求分析和开发准备-课程概要
- 汇编基础1
- 七月的最后一天
- matlab排序算法,相同位置返回元素排名
- c++内存池作用和优势
- polymer 自定义元素学习
- 80386 处理器的寻址方式
- 深度学习主流框架Caffe
- jQuery插件开发模式
- POJ 2234 Matches Game (经典Nim博弈)