第2章80X86计算机系统组织 讲授要点 ■80X86计算机的基本结构(CPU、内存、IO以及连接它们的总线) 80X86CPU的寄存器组。 ■实模式的内存分段与编程要点。 标志位CF、OF、SF、zF的含义及判断方法。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 第2章 80x86计算机系统组织 讲授要点 ▪ 80x86计算机的基本结构(CPU、内存、I/O以及连接它们的总线)。 ▪ 80x86 CPU的寄存器组。 ▪ 实模式的内存分段与编程要点。 ▪ 标志位CF、OF、SF、ZF的含义及判断方法
2.180x86计算机的基本结构 80x86计算机的组成 a CPU 内存 I/O子系统 各部分以系统总线相连 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.1 80x86计算机的基本结构 80x86计算机的组成: ▪ CPU ▪ 内存 ▪ I/O子系统 ▪ 各部分以系统总线相连
2.1.1CPU 计算机执行程序时,首先要将其装入内存,然后由CPU执行程序指令。 CPU的作用 执行算术与逻辑运算。 控制指令的执行。 通常,将Inte公司生产的8086/8088、80286、80386、80486、 Pentium、 Pentium Pro、 PentiumⅡ、 PentiumⅢ、 Pentium4及其兼容的cPU,统称为8086CPU或x86 CP心U,将基于这些CPU的计算机,称为80X86计算机或x86计算机。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.1.1 CPU ▪ 计算机执行程序时,首先要将其装入内存,然后由CPU执行程序指令。 ▪ CPU的作用: • 执行算术与逻辑运算。 • 控制指令的执行。 通常,将Intel公司生产的8086/8088、80286、80386、80486、Pentium、Pentium Pro、Pentium II、Pentium III、Pentium 4 及其兼容的CPU,统称为80x86 CPU或x86 CPU,将基于这些CPU的计算机,称为80x86计算机或x86计算机
2.1.2系统总线 总线是部件之间进行数据(电信号)交换的通道。 80X86计算机的系统总线分为3类 数据总线 地址总线 控制总线 1.数据总线 ■数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 80X86系列CPU的数据总线为8位、16位、32位或64位。这就是“为什么通常的 数据存取是以8位、16位、32位或64位进行的 数据总线越宽,处理能力越强。 ■具有N位数据总线并不意味着CPU只能处理N位数据。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.1.2 系统总线 总线是部件之间进行数据(电信号)交换的通道。 80x86计算机的系统总线分为3类: ▪ 数据总线 ▪ 地址总线 ▪ 控制总线 1.数据总线 ▪ 数据总线是用来传递数据的,定义了CPU在每个内存周期所能存取数据的位数。 ▪ 80x86系列CPU的数据总线为8位、16位、32位或64位。这就是“为什么通常的 数据存取是以8位、16位、32位或64位进行的”。 ▪ 数据总线越宽,处理能力越强。 ▪ 具有N位数据总线并不意味着CPU只能处理N位数据
2.地址总线 ■地址总线用来指出数据的地址(内存或/O)。 ■地址总线的位数决定了最大可编址的内存与IO空间。 对于N位地址总线,CPU可以提供2N个不同地址:0~2N-1。 地址总线由内存与O子系统共享使用(I0只用低16位)。 3.控制总线 控制总线用来控制CPU与内存和O设备之间的数据传送方式(如传送方向)。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.地址总线 ▪ 地址总线用来指出数据的地址(内存或I/O)。 ▪ 地址总线的位数决定了最大可编址的内存与I/O空间。 ▪ 对于N位地址总线,CPU可以提供2N个不同地址:0~2N -1。 ▪ 地址总线由内存与I/O子系统共享使用(I/O只用低16位)。 3.控制总线 控制总线用来控制CPU与内存和I/O设备之间的数据传送方式(如传送方向)
2.1.3内存 内存是存放指令和数据的部件,由若干内存单元构成。 80X86的内存以字节编址:每个内存单元有唯一的地址,可存放1个字节。 要正确理解内存单元的2个要素:地址(编号)与值(内容)。 1个字占据2个相邻的内存单元;低字节在低地址单元,高字节在高地址单元;字的地址 由其低地址来表示。双字也类似。 ■同一地址可以看作是字节、字或双字单元的地址,取决于具体的使用方式 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.1.3 内存 ▪ 内存是存放指令和数据的部件,由若干内存单元构成。 ▪ 80x86的内存以字节编址:每个内存单元有唯一的地址,可存放1个字节。 ▪ 要正确理解内存单元的2个要素:地址(编号)与值(内容)。 ▪ 1个字占据2个相邻的内存单元;低字节在低地址单元,高字节在高地址单元;字的地址 由其低地址来表示。双字也类似。 ▪ 同一地址可以看作是字节、字或双字单元的地址,取决于具体的使用方式
2.1.4I/0子系统 每个ⅣO设备必须通过专门的/O接口电路与主机(CPU和内存)相连。 I/O端口:即I/O地址,是区分0设备及其寄存器的编号。 80X86的JO端口为16位。 I/O端口类似于内存单元,只是对应于I/0设备。 ■大多数设备使用多个1O端口(数据端口、状态端口等)。 CPU是通过端口与O设备通信的 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.1.4 I/O 子系统 ▪ 每个I/O设备必须通过专门的I/O接口电路与主机(CPU和内存)相连。 ▪ I/O端口:即I/O地址,是区分I/O设备及其寄存器的编号。 ▪ 80x86 的I/O端口为16位。 ▪ I/O端口类似于内存单元,只是对应于I/O设备。 ▪ 大多数设备使用多个I/O端口(数据端口、状态端口等)。 ▪ CPU是通过端口与I/O设备通信的
2.280x86CPU的寄存器组 1.通用寄存器 8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AⅩ、BX、CX和DX的低8位与高8位。AX、 BX、CX、DX、SI、DI、BP和SP分别对应于EAX、EBX、ECX、EDⅩ、ESI、EDⅠ、EBP和ESP的 低16位。 2.专用寄存器 指令指针:EIP(32位)、IP(16位)。IP是EIP的低16位。 标志寄存器: EFLAGS(32位)、 FLAGS(16位)。 FLAGS是 EFLAGS的低16位 3.段寄存器 6个16位的段寄存器:CS、DS、ES、SS、FS和GS。 S、GS以及所有32位寄存器是从80386CPU开始引入的。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.2 80x86 CPU的寄存器组 1. 通用寄存器 8位通用寄存器8个:AL、AH、BL、BH、CL、CH、DL、DH。 16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 AL与AH、BL与BH、CL与CH、DL与DH分别对应于AX、BX、CX和DX的低8位与高8位。AX、 BX、CX、DX、SI、DI、BP和SP分别对应于EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP的 低16位。 2. 专用寄存器 指令指针:EIP(32位)、IP(16位)。IP是EIP的低16位。 标志寄存器:EFLAGS(32位)、FLAGS(16位)。FLAGS是EFLAGS的低16位。 3. 段寄存器 6个16位的段寄存器:CS、DS、ES、SS、FS和GS。 FS、GS以及所有32位寄存器是从80386 CPU开始引入的
2.380x86CPU的工作模式 2.3.180x86CPU的3种工作模式 .实模式 与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的 内存空间。 MS DOS运行在实模式下。 2.保护模式 32位80κ86CPU的主要工作模式,提供对程序和数据进行安全检查的保护机 制。 Windows9X/NT/2000运行在保护模式下。 3.虚拟8086模式 在 Windows9X下,若打开一个 MS DOS窗口,运行一个DOS应用程序,那 么该程序就运行在虛拟8086模式下。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.3 80x86 CPU的工作模式 2.3.1 80x86 CPU的3种工作模式 1.实模式 与8086兼容的工作模式,只有低20位地址线起作用,仅能寻址第一个1MB的 内存空间。MS DOS运行在实模式下。 2.保护模式 32位80x86 CPU的主要工作模式,提供对程序和数据进行安全检查的保护机 制。Windows 9x/NT/2000运行在保护模式下。 3.虚拟8086模式 在Windows 9x下,若打开一个MS DOS窗口,运行一个DOS应用程序,那 么该程序就运行在虚拟8086模式下
2.3.2实模式 1.内存分段 80X86采用分段内存管理机制,主要包括下列几种类型的段 代码段:用来存放程序的指令序列。 数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等 个程序可以拥有多个代码段、多个数据段甚至多个堆栈段。 2021//21 80x86汇编语言程序设计
2021/1/21 80x86汇编语言程序设计 2.3.2 实模式 1. 内存分段 ▪ 80x86采用分段内存管理机制,主要包括下列几种类型的段: 代码段:用来存放程序的指令序列。 数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放过程返回地址、过程参数等。 ▪ 一个程序可以拥有多个代码段、多个数据段甚至多个堆栈段