1.冯·诺伊曼体系结构

  • 存储程序(指令和数据)方式
  • 存储器线性编址,每个存储单元 固定位数
  • 指令由操作码和地址码组成。地 址码指明操作数的地址
  • 执行指令控制计算机操作。指令 顺序执行或依条件而改变
  • 以运算器为中心,I/O设备与存储 器间的数据传送都要经过运算 器
  • 数据以二进制表示

2.CPU

包括控制器和运算器

3.总线(BUS)

是用于连接计算机内部的功能部件的一组公共信号线

AB - Address Bus DB - Data Bus CB - Control Bus

4.8086微处理器

  • 是Intel系列的16位微处理器,可对8或16位数据进行运算
  • 具有20位的地址总线,可直接寻址的内存空间达1M字节(2^20)。其中,低16位还可以用于寻址I/O端口
  • 具有16位的数据总线。它们通过执行执行外部总线周期访问存储器或I/O端口
  • +5V电源供电,单相时钟工作

5.8086CPU内部结构图

  • EU Executing Unit 执行单元
  • BIU Bus Interface Unit 总线接口单元
  • Q总线 Queue Bus 队列总线
  • 8086CPU必备基本知识

6.8086CPU引脚图

  • 8086CPU必备基本知识

  • ALE 地址锁存有效

7.8086寄存器结构

  • 8086CPU必备基本知识

8.8086标志寄存器

  • 8086CPU必备基本知识

9.指令执行

  • 执行程序时操作系统会从外设(硬盘)上把程序(指令集)装入内存,然后从内存取到CPU内的缓存,再从缓存或内存中取指令和执行指令

  • 操作数

    • 立即数(指令)
    • 寄存器
    • 存储器
    • IO接口
  • 指令

    • 操作码+操作数1+操作数2
  • 指令执行

    • 8086CPU必备基本知识

10.计算内存地址

20位地址= 16位寄存器*16+段地址 // *16 相当于左移四位,段地址需符号扩展到20位

  • (CS) * 16 + (IP)= 指令地址
  • (SS) * 16 + (SP)= 堆栈地址
  • (DS/ES) * 16 + BX = 操作数地址

11.寻址方式

是指令中如何获取操作数或操作数地址的方式

EA Effective Address 有效地址

  • 立即寻址

    • 在指令中直接给出操作数
  • 寄存器寻址

    • 从指令所指定的寄存器中取得到操作数
    • 寄存器包含所有的通用寄存器和段寄存器
    • CS 不能作目的寄存器
  • 存储器寻址

    • 从指令所指定的存储单元中得到操作数。

    • 存储单元的有效地址(即偏移地址)可以直接存放在指令中或者指令所指定的寄存器中。

    • 有效地址加上段寄存器的内容才可以计算出存储单元的物理地址。

    • 存储器寻址又有五种

      • (1) 直接寻址存储单元的地址直接存放在指令中。

        • 指令中直接给出操作数的有效地址
      • (2) 寄存器间接寻址 存储单元的地址存放在指令指定的寄存器中。

        • 指令中给出的寄存器中的值不是操作数本身,而是操作数的有放地址,所 以寄存器名称外面必须加方括号

        • 如果指令中指定的寄存器是BX 、SI 或DI,则采用DS 作为段寄存器。如果指令中指定的寄存 器是BP,则SS 作为段寄存器。如果想自己指定,则采用段超越前缀

          MOV [BX],AX ; (DS:EA) ← AX 。 EA= BX = 214FH,DS=3000H

          ADD CX,[BP] ; CX ← CX + (SS:EA)。 EA= BP = 9E78H,SS=4000H

          ADD AL, ES:[SI] ; AL ← AL + (ES:SI)。EA= SI = 20FEH,ES=3800H

      • (3) 寄存器相对寻址

        • 操作数的有效地址是一个基址或变址寄存器的内容与指令中指定的8位或16位位移量之和

        COUNT EQU 30H

        ARRAY DB 300 DUP(?)

        MOV AX, [BX+30H] ; AX←(DS:EA),EA= BX + 30H

        MOV AX,COUNT[SI] ; AX←(DS:EA),EA= COUNT+SI

        MOV BH,ES: ARRAY[SI] ; BH←(ES:EA) , ; EA = Sl 十ARRAY (段超越前缀)

      • (4) 基址变址寻址

        • 操作数的有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或 DI)内容之和。两个寄存器均由指令指定

          MOV AX, [BX+SI] ; AX ←(EA)。 EA=30000H + 6A89H + 30H

          ​ ; (DS) = 3000H, (BX)= 6A89H, (SI) = 30H

        • BX默认使用DS, BP默认使用SS

      • (5) 相对基址加变址寻址

        • 操作数的 有效地址是一个基址寄存器和一个变址寄存器内容与8位或16位位移 量之和

          MOV AX, [BX+SI +20] ; AX ←(EA)。EA=30000H + 91EFH + 68H + 20H ; (DS) = 3000H, (BX)= 91EFH, (SI) = 68H

  • I/O端口寻址

    • 操作数从指令所指定的端口中得到。
    • 端口地址的有效地址直接放在指令中(直接端口寻址,只 能使用8位地址)或者存放在指令所指定的寄存器中(间接端口寻址,可以使用8位或16位地址)

12.段寄存器

  • IP 指向CS当前指令
  • SP 指向SS栈顶
  • 每个段的大小<64K (2^16)

分类:

技术点:

相关文章: