汇编语言学习笔记(2)——80x86微处理器
1、常见术语
- 位和字节
- 位(bit)是计算机所能表示的最小最基本的数据单位,它指的是取值只能为0或1的一个二进制数值位。
- 字节(byte)由8个位二进制位组成,通常用作计算存储容量的单位。
- 1T = 210G = 220M = 230K = 240
- 字长(数据宽度):字长是微处理器一次可以直接处理的二进制数码的位数,它通常取 决于微处理器内部通用寄存器的位数和数据总线的宽度。微处理 器的字长有4位、8位、16位、32位和64位等等。
- 寻址能力:指CPU能直接存取数据的内存地址范围,它是由CPU的地址总线的数目决定的。
- 主频:也叫时钟频率,用来表示微处理器的运行速度,主频越高表明微处理器运行速度越快,主频单位是MHz
- MIPS(Millions of Instruction Per Second,每秒能执行百万条指令):用来表示微处理器的性能
- 微处理器的集成度:指微处理器芯片上集成的晶体管密度
2、32位微处理器内部结构
- 微处理器的功能和主要功能模块:
- 微处理器的功能:从存储器中取出构成程序的 一条指令,分析并执行这些指令,从而完成程序 设定的任务
- 基本功能模块:
- 总线接口单元 BIU:寄存器组
- 执行单元EU :运算器,控制器,寄存器组
- 80X86内部寄存器:基本结构寄存器、浮点寄存器、系统级寄存器、调试测试寄存器
- 基本结构寄存器:
- 通用寄存器:
-
-
- 作用:用于存放操作数以及运算的中间结果等信息,在指令中广泛使用。
- 汇编助记符:
- 32位寄存器的汇编助记符为EAX~EDX、ESI、EDI、EBP
- 16位寄存器的汇编助记符为AX~DX、SI、DI、BP
- 8位寄存器的汇编助记符为AH、AL、BH、BL、CH、CL、DH、DL
- AH、AL是AX的高/低8位,AX又是EAX的低16位。
- 例:EAX = 12345678H,则AX = 5678H,AH = 56H, AL = 78H
- 段寄存器:
-
-
-
- 作用:存放逻辑段的段地址,用于存储器单元物理地址的形成。
- 指针寄存器:
-
-
-
- 指令指针寄存器:32位称为EIP、第六位称为IP
- 作用:存放指令所在单元的偏移地址
- 标志寄存器(EFLAGS):
-
-
-
- EFLAGS为32位寄存器,其中FLAGS为16位寄存器(D15~D0)
- 作用:
- 存放状态标志。状态标志用于记录CPU运行结果状态
- 设置控制标志。控制标志用于控制CPU的某种操作
- 状态标志:表示前面的操作执行后,算术 逻辑部件处在怎样一种状态,这种状态会 像某种先决条件一样影响后面的操作。有 SF、ZF、PF、CF、AF和OF
- 控制标志:每个控制标志都对某一种特定 的功能起控制作用。指令系统中有专门的 指令用于控制标志的设置和清除。有DF、 IF、 TF
-
3、32位微处理器外部引脚
- 数据线及控制信号
- 数据线:D63~D0共64位
- 地址线及控制信号
- A31~A3:高30位地址线
- BE7~BE0:字节允许信号(存储体选中信号),外围电路对BE7~BE0译码以产生A2~A0信号
- 系统控制信号
- 时钟输入CLK
- 可屏蔽中断请求INTR
- 非屏蔽中断请求NMI
- 系统复位信号RESET
- 系统复位后,程序运行的地址为:FFFFFFF0H
- 实模式CS:F000H,IP:0FFF0H
- 系统时钟:微处理器内部与外部操作的同步时基信号,由时钟(CLK)输入信号提供。
-
- 时钟信号:时钟输入信号的周期,也表示为T状态。
- 总线周期定义信号(输出)
- 总线周期:一段时间CPU通过总线与存储器、I/O交换一个数据所需要的时间称为总线周期
- M/IO非: = 1,表明该总线周期,CPU与存储器交换信息; = 0,表明该总线周期,CPU与I/O接口交换信息
- W/R非: = 1,表明该总线周期,CPU进行写操作; = 0,表明该总线周期,CPU进行读操作
- D/C非: = 1,表明该总线周期,传输的是数据; = 0,表明该总线周期,传输的是指令代码
4、32为微处理器的地址空间和工作模式
- 地址空间:存储空间和I/O空间
- 存储空间
- 物理空间:存续的运行空间,即主存空间。486有32条地址线,内存最大为4GB。这4GB称为物理存储器,每个单元的地址称为物理地址,其范围为:00000000H~FFFFFFFFH,为物理存储空间
- 虚拟空间:又称编程空间。虚拟存储器是一项硬件和软件结合的技术。存储器管理部件把主存和赋存看坐是一个整体,即虚拟存储器。486允许虚拟存储器容量最大为246 = 64T,即程序员可在此地址范围内编程,程序可大大超过物理空间。运行时,操作系统从虚拟空间取一部分程序载入物理存储器运行。当程序运行需要调用的程序和要访问的数据不在物理存储器时,操作系统再把那一部分调入物理存储器,其数据交换极快。
- 线性空间:
-
- 当程序从虚拟空间调入物理空间时,要进行地址转换。分段部件首先把虚拟地址转换成线性地址
- 若不分页,则线性地址就是物理地址;若分页,则分页部件把线性地址转换为物理地址
- 实模式下:存储空间仅分段,不分页
- 保护模式下,存储空间先分段,再分页
- I/O空间
- 486利用低16位地址线访问I/O端口,所以I/O短空最多有64K,I/O地址空间为0000H~FFFFH
- I/O地址空间不分段
- I/O地址空间与存储空间不重叠(M/IO非)
- 从PC/XT~Pentium,基于Intel微处理器的系统机,实际只使用低10位地址线,寻址1024个I/O端口
- 32位微处理器的工作模式
- 实地址模式(实模式)
- 特点:
- 加电、复位之后,486自动工作在实模式,系统在DOS管理下
- 在实模式下,486只能访问第一个1M内存(00000H~FFFFFH)
- 存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量位64K
- 在实模式下,段寄存器中存放段基址
- 保护虚拟地址模式(保护模式)
- 特点
- 在保护模式下,486支持多任务操作系统
- 486可以访问4G物理存储空间
- 存储管理部件中,对存储器采用分段和分页管理。在保护模式下,段寄存器存放的不是段基址而是段选择符
- 关于保护机制:486有一套复杂的保护机制,系统定义了4个“特权级”。操作系统的核心特权级最高,应用程序的特权级最低。并规定,高级别的程序可以访问同级或低级的数据段,反之则不行,应用程序只能访问自身的数据段
- 实地址模式(实模式)
-
- 虚拟8086模式
- 虚拟8086模式是保护模式下的一种特殊工作模式,可运行实模式程序
- 在操作系统管理下,486可以分时地运行多个实模式
- 虚拟8086模式
- 实模式下20位物理地址的行成
- 物理空间对应的物理地址,指1MB存贮区域中的某一单元地址,地址信息是20位的二进制代码,以16进制表示00000H~FFFFFH中的一个单元,CPU访问存储器使用物理地址,在地址总线上送出的是20位物理地址
- 虚拟空间对应的逻辑地址,程序员编写程序使用逻辑地址,程序是分段的,逻辑地址由段基址和偏移地址组成,书写成:段基址:偏移地址
- 逻辑地址到物理地址的转换由CPU完成
- 存储器的分段管理,物理地址、逻辑地址的形成
- 我们把1M字节的存储器 分为任意数量的逻辑段, 其中每一段长度为64K 个字节。段的起 始地址的高16位地址称为该段的段基址。段内再由 16位二进制数寻址,段内寻址的16位二进制数地址 是存贮单元到段起始地址的距离,称为偏移地址(偏移量)。段基址和偏移地址一起构成逻辑地址。
- 存贮器中的每个存贮单元都可以用两个形式的地址来表示: 物理地址和逻辑地址。物理地址是指1MB存贮区域中的某一 单元地址,地址信息是20位的二进制代码,以16进制表示是 00000H~FFFFFH中的一个单元,CPU访问存贮器时,地址总线上送出的是物理地址。编制程序,则采用逻辑地址。逻辑地 址由段基址和偏移量组成。
-
- 在一个逻辑段中,各单元的段基址是相同的
- 偏移地址是该单元相对于段首的地址偏移量
- 实模式下20位物理地址的形成过程
- 各逻辑段物理地址的形成(以16位寻址为例)
- 在实模式下,段寄存器存放相应逻辑段的段基址
-
- 代码段:CS*24+IP=指令单元的物理地址,一条指令的一个字节取出后,IP自动加1,指向 下一字节。
- 堆栈段:SS*24+SP=栈顶单元的物理地址
- 数据段:DS*24+偏移地址=数据单元的物理地址
- 段寄存器的初值
- CS、IP的初值:由操作系统赋值
- SS、SP的初值:①由程序员赋值;②由操作系统自动赋值
- DS/ES/FS/GS的初值:由程序员赋值
- BX/SI/DI/BP的初值:由程序员赋值