微型计算机原理与接口技术——指令系统的寻址方式

    科技2023-10-27  83

    指令系统的寻址方式

    指令与指令系统指令指令的基本构成指令格式指令中的操作数类型立即操作数寄存器操作数存储器操作数 指令的执行时间 指令系统指令的兼容性 指令对操作数的寻址方式立即寻址直接寻址段重设 寄存器直接寻址寄存器间接寻址寄存器相对寻址基址——变址寻址基址——变址——相对寻址隐含地址 总结与升华个人介绍

    指令与指令系统

    指令

    控制计算机完成指定操作并能够被计算机所识别的命令。

    指令的基本构成

    指令中应包含的信息:

    执行的操作——操作码运算数据的来源——指令的操作对象运算结果的去向——指令的操作对象

    指令格式

    零操作数指令: 操作码 (例:HLT)单操作数指令: 操作码 操作数(例:INC DI)双操作数指令: 操作码 操作数,操作数(例:ADD AX,BX)

    指令中的操作数类型

    立即操作数:表征参加操作的数据本身,操作数存在操作码之后,它作为指令的一部分存在代码段中。寄存器操作数:参加操作的数在CPU的通用寄存器和段寄存器中。存储器操作数:参加运算的数在内存中。

    其中,寄存器操作数和存储器操作数可以表征数据存放的地址

    立即操作数

    例: MOV AX,1234H MOV BL,22H 立即数只能作为源操作数立即数的字长可以是1字节或2字节立即数可以是无符号或带符号数

    寄存器操作数

    例: MOV AX,BX MOV DL,CH 寄存器操作数既可以作为源操作数,也可以用作目标操作数。通用寄存器通常用来存放参加运算的数据,或数据所在存储器单元的偏移地址。段寄存器用来存放当前操作数的段基地址。仅有个别指令将标志寄存器FLAGS作为指令的操作数。

    存储器操作数

    例: MOV AX,[1200H]

    [ ]中的内容是存放操作数的内存单元的偏移地址。

    参加运算的数据是存放在内存中的。存储器操作数在指令中既可作为源操作数,也可作为目标操作数。一般情况下,若指令中没有明确指出操作数所在段,则CPU就采用默认的段寄存器来确定操作数的段基地址。存储器操作数的偏移地址可以通过不同的寻址方式由指令给出。

    指令的执行时间

    指令的字长影响指令的执行速度。不同指令,执行时间有较大的差别对不同的操作数,指令执行的时间不同:

    指令系统

    一台计算机能够识别的所有指令的集合称为该机的指令系统。

    指令的兼容性

    同一系列机器的指令都是兼容的。

    指令对操作数的寻址方式

    寻址方式是寻找操作数所在地址的方法,讨论的对象主要是源操作数。

    操作数可能的来源或存放处:

    由指令直接给出寄存器内存单元

    立即寻址

    指令中的源操作数是立即数,操作数存在操作码之后。

    MOV AX, 3102H这条指令的含义是将3102H这个立即数赋值给AX:

    AH: 31HAL: 02H

    直接寻址

    指令中直接给出存储器操作数的16位偏移地址,默认在数据段DS中。

    段重设

    例: MOV BL,ES:[1200H]

    上面的指令表示将附加段ES中偏移地址为1200H单元的内容送到BL寄存器中。

    寄存器直接寻址

    操作数在CPU内的寄存器中。

    寄存器间接寻址

    寄存器的内容为存放操作数的内存单元的偏移地址。

    此时寄存器中的内容不再是操作数本身,而是存放数据的偏移地址,操作数本身在内存储器中。

    寄存器相对寻址

    存放操作数的内存偏移地址(EA)为间址寄存器的内容加上8位或16位的位移量。

    相对寻址主要用于存取表格或一维数组中的元素。

    在汇编语言中,相对寻址指令的书写格式允许有几种不同的形式。例如,以下几种写法实质上是完全等价的:

    MOV AL, DATA[SI] MOV AL, [SI]DATA MOV AL, DATA+[SI] MOV AL, [SI]+DATA MOV AL, [SI+DATA] MOV AL, [DATA+SI]

    基址——变址寻址

    操作数的偏移地址为一个基址寄存器(BX或BP)的内容 + 一个变址寄存器(SI或DI)的内容

    基址寄存器为BX,默认在数据段基址寄存器为BP,默认在堆栈段

    该寻址方式允许段重设,且与相对寻址方式一样,主要用于一维数组操作。

    基址——变址——相对寻址

    操作数的偏移地址为基址寄存器内容+变址寄存器内容+位移量

    操作数的段地址由选择的基址寄存器决定,且允许段重设。

    基址变址相对寻址方式主要用于二维表格操作。

    基址-变址-相对寻址指令也可以表示成多种形式:

    MOV AX, DATA[SI][BX] MOV AX, [BX+DATA][SI] MOV AX, [BX+SI+DATA] MOV AX, [BX]DATA[SI] MOV AX, [BX+SI]DATA

    隐含地址

    指令中隐含了一个或两个操作数的地址,即操作数在默认的地址中。

    例: MUL BL ;AL×BL AX

    总结与升华

    个人介绍

    北京联合大学 机器人学院 自动化专业 2018级 本科生 郑博培百度飞桨开发者技术专家 PPDE深圳柴火创客空间 认证会员百度大脑 智能对话训练师阿里云 DevOps助理工程师
    Processed: 0.017, SQL: 8