第二章 80x86计算机组织

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1个字占据2个相邻的内存单元;低字节在低地址单元,高 字节在高地址单元;字的地址由其低地址来表示。双字也类 似。 同一地址可以看作是字节、字或双字单元的地址,取决于 具体的使用方式。
2013-1-20 80x86汇编语言程序设计
2.1.4
I/O子系统
wk.baidu.com
每个I/O设备必须通过专门的I/O接口电路与主机相连。
段地址与偏移地址都是16位。 系统采用下列方法将逻辑地址自动转换为20位物理地址: 物理地址 = 段地址 × 16 + 偏移地址 每个内存单元具有唯一的物理地址,但可由不同的逻辑地 址描述。
2013-1-20 80x86汇编语言程序设计
3. 实模式的编程要点 采用16位段,段地址与偏移地址均为16位,即使32位 80x86 CPU(80386及更高)也只能寻址1MB的内存空间。 CPU总是从地址CS:IP处取指令(EIP的高16位为0)。 SS:SP指向堆栈段的栈顶地址(ESP的高16位为0)。 在32位80x86 CPU下,程序可以使用32位寄存器和32 位操作数,但采用32位寄存器表示偏移地址时,只使用 低16位,高16位为0。
2013-1-20 80x86汇编语言程序设计
2. 深入认识CF和OF

CF和OF本质上均表示溢出。
CF表示无符号溢出,即运算结果超出了无符号数的表示范 围。对于n位二进制数来说,无符号数表示范围为0~2n -1, 例如,n = 8和16时分别为0~255和0~65535。 OF表示带符号溢出,即运算结果超出了带符号数的表示范 围。对于n位二进制数来说,带符号数表示范围为-2n-1~2n-11,例如,n = 8和16时,分别为-128~127和-32768~32767。
2013-1-20
80x86汇编语言程序设计
2.3.2 实模式
1. 内存分段
80x86采用分段内存管理机制,主要包括下列几种类型的 段:
代码段:用来存放程序的指令序列。
数据段:用来存放程序的数据。 堆栈段:作为堆栈使用的内存区域,用来存放过程返 回地址、过程参数等。 一个程序可以拥有多个代码段、多个数据段甚至多个堆栈 段。
2013-1-20 80x86汇编语言程序设计
80x86 CPU具有8位、16位和32位寄存器,主要包括:
8位通用寄存器8个:AH、AL、BH、BL、CH、CL、DH、DL。
16位通用寄存器8个:AX、BX、CX、DX、SI、DI、BP、SP。 32位通用寄存器8个:EAX、EBX、ECX、EDX、ESI、EDI、EBP、 ESP。 16位段寄存器6个:CS、DS、SS、ES、FS、GS。 32位/16位指令指针1个:EIP/IP。 32位/16位标志寄存器1个:EFLAGS/FLAGS。 其中,32位寄存器是80386 CPU开始引入的。
2013-1-20
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位。
2013-1-20
80x86汇编语言程序设计
80x86 CPU有3种工作模式:实模式、保护模式和虚拟8086模 式。 在实模式下,段地址和偏移地址均为16位。20位物理地址由 16位段地址左移4位加16位偏移地址得到,只能寻址1MB的内存 空间,且每段≤64KB。 在实模式下,32位CPU下的程序可以使用32位寄存器和32位操 作数,但采用32位寄存器表示偏移地址时,只使用低16位,高 16位为0。CS:IP总是指向下一条要执行的指令,EIP的高16位为 0。SS:SP指向堆栈段的栈顶,ESP的高16位为0。 状态标志是CPU进行条件判断和控制程序执行流程的依据,最 常用的是4个:CF、OF、SF和ZF。其中,CF表示无符号溢出,OF 表示带符号溢出。
80x86计算机的组成:
CPU 存储器 I/O子系统
CPU …… ……
总线
接口
存储器 I/O 设备
接口
I/O 设备
接口
I/O 设备
2013-1-20
80x86汇编语言程序设计
2.1.1
CPU
通常,将Intel公司生产的8086/8088、80286、80386、80486、 Pentium 、 Pentium Pro 、 Pentium II 、 Pentium III 、 Pentium 4 及其兼容的CPU,统称为80x86 CPU或x86 CPU,将基 于这些CPU的计算机,称为80x86计算机或x86计算机。 CPU主要由三部分组成: 算术逻辑部件ALU:执行算术与逻辑运算
2013-1-20
80x86汇编语言程序设计
2.地址总线
地址总线用来指出数据的地址(内存或I/O)。 地址总线的位数决定了最大可编址的内存与I/O空间。 对于N位地址总线,CPU可以提供2N个不同地址:0~2N 1。 地址总线由内存与I/O子系统共享使用(I/O只用低16 位)。 3.控制总线
2013-1-20
80x86汇编语言程序设计
2.4 标志位 2.4.1 状态标志
状态标志通常由CPU根据指令执行结果自动设置,以反映 指令执行结果的特征。
80x86 CPU将状态标志作为条件判断的依据,以控制程序 的执行流程。
最常用的状态标志是CF、OF、SF和ZF,应熟练掌握。
2013-1-20
控制总线用来控制CPU与内存和I/O设备之间的数据传送方 式(如传送方向)。
2013-1-20
80x86汇编语言程序设计
2.1.3

内存
内存是存放指令和数据的部件,由若干内存单元构成。
80x86的内存以字节编址:每个内存单元有唯一的地址, 可存放1个字节。
要正确理解内存单元的2个要素:地址(编号)与值(内 容)。
2013-1-20 80x86汇编语言程序设计
2. 物理地址与逻辑地址 物理地址:内存单元的实际地址,也就是出现在地址总线 上的地址。 逻辑地址:或称分段地址,记作“段地址:段内偏移地址 ”
段地址表示段在内存中的起始位置,通常被保存在某个 段寄存器中。段内偏移地址表示内存单元相对于段起始位置 的位移,简称偏移地址,也叫有效地址EA。
把I/O设备接口电路中的寄存器进行统一编号,即I/O端口 地址,也称端口号。
80x86 的I/O端口号一般为16位,也可以是8位,386及其 以后机型还可以有32位端口。
I/O端口类似于内存单元,只是对应于I/O设备。
大多数设备使用多个I/O端口(数据端口、状态端口等)。
CPU是通过端口与I/O设备通信的。
控制逻辑:控制指令的执行
工作寄存器
2013-1-20
80x86汇编语言程序设计
2.1.2
系统总线
总线是部件之间进行数据(电信号)交换的通道。
80x86计算机的系统总线分为3类: 数据总线
地址总线
控制总线
2013-1-20
80x86汇编语言程序设计
1.数据总线
数据总线是用来传递数据的,定义了CPU在每个内存 周期所能存取数据的位数。 80x86系列CPU的数据总线为8位、16位、32位或64位。 这就是“为什么通常的数据存取是以8位、16位、32 位或64位进行的”。 数据总线越宽,处理能力越强。 具有N位数据总线并不意味着CPU只能处理N位数据。
2013-1-20
80x86汇编语言程序设计
2.4.2
控制标志
控制标志是由程序根据需要用指令来设置的,以控制某 些指令的执行方式。 控制标志包括: DF(Direction Flag):方向标志 IF(Interrupt Flag):中断标志 TF(Trace Flag):跟踪标志
2013-1-20
80x86汇编语言程序设计
1. 状态标志取值的一般规则
ZF(Zero Flag):零标志。若运算结果为0,则ZF = 1,否则 ZF = 0。
SF(Sign Flag):符号标志。若运算结果为负数,则SF = 1, 否则SF = 0。 CF(Carry Flag):进位标志。若加法时结果最高位向前有进 位或减法时最高位向前有借位,则CF = 1,否则CF = 0。 OF(Overflow Flag):溢出标志。若带符号数的运算结果超 出了补码表示的范围,则OF = 1,否则OF = 0。 AF(Auxiliary Carry Flag):辅助进位标志。若加法时结果 低4位向前有进位或减法时结果低4位向前有借位,则AF = 1,否 则AF = 0。 PF(Parity Flag):奇偶标志。若结果最低字节中1的个数为 偶数,则PF = 1,否则PF = 0。
2013-1-20
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模式下。
80x86程序可以存取的最小数据单位是字节。例如,若要读取的位 数不足8位,则只能先读出一个完整字节,再屏蔽掉其它位。
字的存储采取“低字节在低地址,高字节在高地址,字的地址由低 地址表示”的小端方式,双字也类似。
要正确理解内存单元的地址和值,地址表示位置,值是相应位置处 的内容。同一地址既可以看作字节单元地址,也可以看作字甚至双字 单元地址,取决于具体的使用方式。
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开始引入的。
第二章 80x86计算机系统组织
讲授要点
80x86计算机的基本结构(CPU、存储器、I/O以 及连接它们的总线)。

80x86 CPU的寄存器组。 实模式的内存分段与编程要点。 标志位CF、OF、SF、ZF的含义及判断方法。
2013-1-20
80x86汇编语言程序设计
2.1 80x86计算机的基本结构
80x86汇编语言程序设计
本章小结
80x86计算机由CPU、内存和I/O子系统三部分组成,各部分之间由 系统总线相连。 数据总线决定了CPU每次存取数据的最大宽度(位数);地址总线 决定了最大可编址空间;控制总线用来控制CPU与内存和I/O设备之间 的数据传送方式。
80x86系统的I/O地址为16位,可寻址65536个不同的I/O端口。
2013-1-20
80x86汇编语言程序设计
作业
P35 2.2——2.5;2.7——2.9
2013-1-20
80x86汇编语言程序设计
相关文档
最新文档