汇编与接口笔记 第二章-8086CPU结构

汇编与接口 Chapter2

2.1 8086CPU的编程结构

  • 16根地址线、20根数据线、时钟频率5MHz

  • 8086分为总线接口单元(BIU)和执行单元(EU)
    8086结构

    执行单元包括:

    • 通用寄存器

      8个16位寄存器

      • 4个通用寄存器:AX、BX、CX、DX

        可以拆分为2个单独的8位寄存器

        1. AX 累加器

          I/O指令必用

        2. BX 基址寄存器

          存放基地址

        3. CX 计数寄存器

          循环指令和串处理隐含的指定计数器

        4. DX 数据寄存器

          可与AX拼接成32位,DX中存放高16位

          I/O指令中存放外设端口号

      • 4个通用寄存器:SP、BP、SI、DI,更多被用于变址寻址:SI/DI与段寄存器DS/ES联用实现数据的寻址;SP、BP用于堆栈操作,与SS联用实现寻址

        1. SI 源变址寄存器

          间接寻址时用作地址寄存器和变址寄存器

          串操作时用作源变址寄存器

        2. DI 目的变址寄存器

          间接寻址时用作地址寄存器和变址寄存器

          串操作时用作目的变址寄存器

        3. SP 堆栈指针寄存器

        4. BP 基址指针寄存器

    • 标志寄存器 (记)

      16位(9位有效,7位空闲)

      CF、DF、IF、TF可由指令设置,其余5个由EU设置

      15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
      OF DF IF TF SF ZF AF PF CF
      1. 状态位

        (1) CF (Carry Flag)

        进位标志,反应算术运算后最高位(字节操作 D 7 D_7 D7,字操作 D 15 D_{15} D15)是否出现进位/借位,有进位则为1

        主要用于加减法,移位和环移指令也会改变CF

        (2) PF (Parity Flag)

        奇偶标志,1表示结果中有偶数个1,0表示结果中有奇数个1

        (3) AF (Auxiliary Carry Flag)

        辅助进位标志,1表示 D 3 D_3 D3 D 4 D_4 D4进位/借位,0表示没有

        用于BCD码算术运算指令

        (4) ZF (Zero Flag)

        零标志,1标志运算结果为0

        (5) SF (Sign Flag)

        符号标志,与带符号运算的结果符号位( D 7 / D 15 D_7/D_{15} D7/D15)一致,1表示结果为负数

        (6) OF (Overflow Flag)

        溢出标志,带符号数(补码)运算结果是否超过机器能表示的范围(-128~127 / -32768~32767),1表示溢出

      2. 控制位

        (1) DF (Direction Flag)

        方向标志,字符串操作时用到,字节操作加减1,字操作加减2

        1表示递减,即高地址向低地址

        0表示递增,即低地址向高地址

        (2) IF (Interrupt Enable Flag)

        中断允许标志,1表示允许响应

        IF对不可屏蔽中断请求及内部中断无效

        (3) TF (Trap Flag)

        陷阱标志,为1时每执行完一条指令都自动产生一个内部中断,常用于调试

    • 算术逻辑单元(ALU)

    • EU控制系统

    总线接口单元包括:

    • 段寄存器

      • 机器字长=存储字长=16位

      • 小端存储,即高字节存放在高地址,低字节存放在低地址,以低字节的地址作为整个字(双字)的地址

      • 8086的分段管理:物理地址=(段寄存器)*16+(地址寄存器)

        段与段之间可以是连续的、断开的、部分重叠或全部重叠的

        分段管理的意义:减少指令长度,缩短指令执行时间;便于程序浮动装配

        ​ 一些默认行为:

        1. 取指令时:CS:IP

        2. 堆栈操作时:SS:SP

        3. 涉及存储器操作数时(除了以BP为地址寄存器外):DS作为默认段基址(可替换为CS/DS/ES,添加段跨越前缀)

          偏移地址为某16位偏移量(可以是指令中直接提供的16位地址、某个16位寄存器(BX/DI/SI)中的值、指令中的位移量加上某16位地址寄存器(BX/BP/DI/SI)中的值)

        4. ES用于串操作指令中的数据块传送指令:

          源地址:默认DS段基址(可替换为CS/DS/ES,添加段跨越前缀),偏移地址SI

          目的地址:ES:DI

        5. BP作地址寄存器:

          SS默认段基址(可替换为CS/DS/ES,添加段跨越前缀),SS:EA

      • 4个段寄存器

        1. 代码段寄存器CS
        2. 数据段寄存器DS
        3. 附加段寄存器ES
        4. 堆栈段寄存器SS(后进先出)
    • 指令指针寄存器IP(就是计组里说的PC)

      提供下一条指令的地址,具体来说是下一条指令的(代码)段内偏移地址,代码段的段地址由CS提供

    • 地址形成逻辑(20位地址加法器形成地址)

    • 总线控制逻辑

    • 指令队列(6字节指令队列,先进先出,存放待执行指令,出去的进入IP)

2.2 8086CPU的工作模式与引脚功能

  • 工作模式(略)

  • 引脚功能
    8086引脚图

    注: /分时复用 (最大模式/最小模式)

    最小模式:

    • A D 0 ∼ A D 15 AD_0 \sim AD_{15} AD0AD15:地址/数据分时复用(双向、三态)

      T 1 T_1 T1时用作地址总线的低16位,其余时间用作数据总线进行数据传输

    • A D 16 / S 3 ∼ A D 19 / S 6 AD_{16}/S_3 \sim AD_{19}/S_6 AD16/S3

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值