第二章 80x86计算机组织 2.1 80x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器 2.5 外部设备
2.1 80x86微处理器 微处理器的发展概况 参见教材p15的图表 重要参数: 主频 数据总线宽度 地址总线宽度 机器字长: CPU中累加器的二进制位的个数
2.2基于微处理器的计算机系统构成 计算机系统包括硬件和软件两部分 2.2.1 硬件 2.2.2 软件
2.2.1 硬件 计算机硬件结构图
2.2.2 软件 计算机软件构成图
2.3 中央处理机 2.3.1 CPU的结构 2.3.2 80x86寄存器组
2.3.1 CPU的结构 CS SS DS ES IP 内部通信寄存器 AH AL BH BL CH CL DH DL BP SP SI DI ALU总线 地址形成 与 总线控制 8086/8088总线 暂存寄存器 EU控制逻辑 暂存寄存器 指令队列 暂存寄存器 执行单元(EU) 总线接口单元(BIU)
2.3.1 CPU的结构 算术逻辑部件 进行算术和逻辑运算 控制逻辑 负责从存储器取出指令,对指令进行译码分析,从存储器取出操作数,发出执行指令的所有命令,把结果存入存储器,以及控制总线和I/O设备 工作寄存器 存放计算过程中所需要或所得到的各种信息
2.3.1 CPU的结构 从内存取指令 从内存取指令 执行指令 从内存取指令 执行指令 执行指令 传统CPU执行指令的过程
2.3.2 80x86寄存器组 80x86的寄存器分为4种类型: 1.通用寄存器 2.指针和变址寄存器 3.标志寄存器 4.段寄存器
1.通用寄存器 AX BX CX DX
2.指针与变址寄存器
3.标志寄存器 标志寄存器长度为16位,其中9个位有定义。
3.标志寄存器 CF, Carry Flag, 进位标志, 两数相加,最高位向前的进位; 或两数相减最高位向前的借位, 举例: 1000 0001 1000 0000 0000 0001 + 1 1000 0000 1000 0001 1111 1111 - 1
3.标志寄存器 AF, Auxiliary Carry Flag, 辅助进位标志, 两数相加,第3位向前的进位; 或两数相减第3位向前的借位, 举例: 0000 1001 0001 1000 0001 0001 0000 0000 0000 0001 1111 1111 + -
3.标志寄存器 PF, Parity Flag, 奇偶标志, 两数操作(算术或逻辑),结果的低8位中含有1的位数是偶还是奇. 举例: 1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100 AND 结果: PF=1
3.标志寄存器 ZF, Zero Flag, 零标志, 操作结果的为0则ZF为1. 举例: 1111 1111 0000 0001 0000 0000 + 操作结果为0, ZF=1 进位1
3.标志寄存器 SF, Sign Flag, 符号标志, 操作结果的符号位(即最高位的状态). 举例: 1000 0101 1010 1100 1001 1101 1001 0111 1000 0101 1000 0100 AND 结果: SF=1
3.标志寄存器 OF, Overflow Flag, 溢出标志, 算术操作,结果超过目标所能容纳的范围. 举例: 0111 1110 (+126) 0000 0011 (+3) 1000 0001 (-127) +
还有三个标志位: IF, DF, TF暂时不讲,等用到时再讲. 3.标志寄存器 还有三个标志位: IF, DF, TF暂时不讲,等用到时再讲. 标志位在汇编语言程序设计中非常重要,必须掌握好.
4.段寄存器
2.4存储器 2.4.1 存储单元的地址和内容(重点) 2.4.2 实模式存储器寻址(重点与难点) 2.4.3 保护模式存储器寻址(了解)
2.4.1 存储单元的地址和内容 存储单元的地址 1.存储单元: 2.物理地址:唯一标识每个存储单元的地址
2.4.1 存储单元的地址和内容 存储单元的内容 注意事项 一个存储单元中存放的信息 2号字节单元中的内容:(0002H)=12H 低字节存入低地址中,高字节存入高地址中。在存储器中以低字节地址作为存储单元的标识,一般以偶地址开始 思考: ((0002H))=?
2.4.2 实模式存储器寻址 实模式寻址只适用于8086/8088处理器 1. 存储器地址的分段 (1)分段的原因 2. 段寄存器 (2)分段的规则 (3)物理地址的计算方法 2. 段寄存器
(1)分段的原因 机器字长16位,地址总线宽度为20位,解决16位字长的机器里提供20位寻址的问题
(2)分段的规则 规则 从0地址开始,每16个字节为一小段,每个段的大小不能超过64KB,段必须从任一小段的首地址开始。 00000,00001,00002……0000E,0000F; 00010,00011,00012……0001E,0001F; …… FFFF0,FFFF1,FFFF2……FFFFE, FFFFF; 特征 第一列为每个小段的段首地址,最低位为0
(3)物理地址的计算方法 一个实际地址可以对应多个逻辑地址. CS=9482, IP=2350, 实际地址为: 1001 0100 1000 0010 0010 0011 0101 0000 1001 0110 1011 0111 0000 举例: 一个实际地址可以对应多个逻辑地址.
(3)物理地址的计算方法 实模式存储器寻址示意图
2.段寄存器 00000H 堆栈段: SS(16位) 0000B→ 堆栈段(2 字节) 数据段: DS(16位) 0000B→ 堆栈段(2 字节) 16 数据段: DS(16位) 0000B→ 数据段(2 字节) 16 附加段: ES(16位) 0000B→ 附加段(2 字节) 16 代码段: CS(16位) 0000B→ 代码段(2 字节) 16 FFFFFH
2.段寄存器 例:如果代码段中的程序占有8KB存储区,数据段占有2KB存储区,堆栈段只占有256个字节的存储区,那么内存的段区分配是怎样的呢? 见教材p29
2.4.3 保护模式存储器寻址 1.逻辑地址 2.描述符 描述段的大小,段在存储器中的位置以及控制和状态信息。由基地址、界限、访问权和附加字段组成
2.5 外部设备 外部设备与主机的通信是通过外设接口进行的 ,每个接口包括一组寄存器,这些用途主要有三种 1.数据寄存器 2.状态寄存器 3.命令寄存器