微机原理第四周笔记

4 寻址方式与指令系统

4.1 指令系统的概述

4.1.1 指令的基本概念

  • 程序是能够完成一个完整任务的一系列有序指令的集合。
  • 指令是指令计算机进行某种操作的命令,使用户是用于控制计算机运行的最小功能单位。
  • 指令系统是一台计算机所能执行的全部指令。
  • 系列计算机是指令系统相同、基本体系结构相同的一系列计算机。
  • 计算机能够直接理解和执行的指令是用二进制编码表示的,称为机器指令指令字
  • 汇编指令 二进制指令的助记符,常用英文缩写表示
  • 计算机不能直接执行汇编指令,必须翻译成计算机能够识别的机器指令。

4.1.2 指令格式

机器指令通常由操作码字段操作数字段组成

指令字长度:一个指令字中包含二进制代码的位数。
机器字长:指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。
单字长指令:指令字长度等于机器字长的指令。
半字长指令:指令字长度等于半个机器字长度的指令。
双字长指令:指令字长度等于2个机器字长度的指令。
在一个指令系统中,如果各种指令字长度是相等的,称为等长指令字结构;如果各种指令字长度随指令功能而异,比如有的指令是单字长指令,有的指令是双字长指令,就称为变字长指令字结构。


4.1.3 8086汇编语言格式

8086每条指令最多由四部分组成:标号、操作码、操作数;注释标号和注释是可选项
标号:操作码 操作数;注释
标号表示该指令在代码段中的偏移地址,注释对该指令进行说明

  • 操作码部分规定指令所执行的操作
  • 操作数部分也成为地址码,这部分可能直接给出参与运算的操作数,也可能是描述操作数地址的信息


4.2 8086寻址方式

形成指令地址或操作数地址的方式称为寻址方式,8086CPU寻址分为指令寻址方式数据寻址方式两类

数据寻址方式

  1. 立即寻址,指令的操作数字段直接给出操作数本身,这个操作数称为立即数,这种方式主要用来给寄存器或存储单元赋值。
    • 立即数只能做源操作数。
    • 源、目的操作数的字长必须一致。
  2. 寄存器寻址
    操作数在CPU内部的通用寄存器中,指令中指定寄存器名,这种方式称为寄存器寻址
    操作数存放在CPU的内部寄存器reg中:
    • 8位寄存器R8:
      AH、AL、BH、BL、CH、CL、DH、DL
    • 16位寄存器R16:
      AX、BX、CX、DX、SI、DI、BP、SP
    • 4个段寄存器Seg:
      CS、DS、SS、ES
  3. 存储器寻址
    段地址由段寄存器给出,而偏移地址则要从指令地址码计算求得,而这个偏移地址称为有效地址,指令地址码字段给出的地址,称为形式地址或位移量
  • 直接寻址,操作数的有效地址由指令代码直接给出汇编语言格式为:地址表达式;[地址表达式];[数字表达式] ,直接寻址默认的是段寄存器DS,若要访问其他段数据,则要用段跨越前缀指出段寄存器名,如段寄存器地址名:地址表达式

  • 寄存器间接寻址,操作数在内存中,操作数的有效地址被放在一个寄存器中,该寄存器由指令地址码字段指定,可以使用基地址BX,BP或变址寄存器SI,DI汇编语言格式为:基址寄存器名或变址寄存器名

  • 寄存器相对寻址,操作数在内存中,操作数的有效地址为基址或变址寄存器与一个位移量之和(或差)。其中的寄存器和位移量均在指令地址码字段指定。即EA=[BX]/[BP]/[SI]/[DI]+DISP。如果指令寄存器为BX、SI、DI则操作数默认取DS为段基地址如果为BP,则默认取SS为段基地址基址加变址寻址, 操作数在内存中,操作数的有效地址由两个指定寄存器的值和。即EA= [BX]/[BP]+[SI]/[DI]。
    相对基址加变址寻址,主要形式为:位移量[基址寄存器][变址寄存器]


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。