微机原理与接口技术(MOOC)-指令

  • Post author:
  • Post category:其他




5. 指令系统



5.1.基本概念



5.1.1.指令格式

操作数在很多时候表示的是运算数据存放的地址,所以也可以称为地址码。但是有一种情况是这个操作数就表示数据本身,也就是运算对象自己,而不是运算对象的存放处。因此,

操作数就表示指令执行的对象

在这里插入图片描述



5.1.2.指令中的操作数

(1)立即数操作数

立即数本身是参加操作的数据,可以是8位或16位,它没有运算地址的含义。又因为目标操作数一定表示操作结果的去向,即目标操作数一定要有地址的含义,所以

立即数只能作为源操作数



eg:

MOV AX,1234H:MOV的功能是实现数据传输,即将源操作数送到目标地址里面。这条指令的意思就是,把常数1234H送给目标寄存器AX。

MOV BL,22H:同上。

立即数可以是无符号或有符号数,给出的数据一定要符合字长的要求。

(2)寄存器操作数

参加运算的数存放在指令给出的寄存器中,可以是16位或8位。

eg:

MOV AX, BX:将BX中的内容送到AX中。

MOV DL, CH:将CH寄存器中的数据送到DL寄存器中。

(3)存储器操作数

参加运算的数存放在存储器的某一个或两个单元中。表现形式:[ ]

[ ] 里存放操作数在内存中的偏移地址。

指令的操作数出现 [ ] ,表示要寻址的数在内存中。

eg:

MOV AL, [ 1200H ]:目标操作数AL是一个8位寄存器,意味着它的源操作数/存储器操作数是一个字节单元。把内存中偏移地址为1200H的单元的内容拿出来送给累加器AL。

MOV AX, [ 1200H ]:因为目标操作数变成了AX,它是一个16位的寄存器,即两个字节单元。所以该条指令为,将1200H单元的内容拿出来送给了AL,将1201H单元的内容送给了AH,合起来就是AX等于1122H。

在这里插入图片描述



5.2.寻址方式



1.直接寻址

在这里插入图片描述

在这里插入图片描述



2.寄存器间接寻址

在这里插入图片描述
(1)由寄存器间接给出操作数的偏移地址;

(2)存放偏移地址的寄存器称为间址寄存器(BX、BP、SI、DI);

(3)操作数的段地址(数据处于哪个段)取决于选择哪个间址寄存器:BX、SI、DI–默认在数据段,BP–默认在堆栈段。



4.基址、变址寻址

在这里插入图片描述

eg:执行下列指令:

MOV SI, 1100H

MOV BX, SI

MOV AX, [SI+BX]

解释:BX和SI相加等于2200H,因为基址寄存器选择的是BX,所以这个源操作数默认是在数据段,所以执行结果是将2200H和2201H两个单元的内容送给累加器AX。

在这里插入图片描述



5.寻址方式练习

在这里插入图片描述

上述题目最后一句话的解释:如果源操作数是存储器操作数的话,请给出这个源操作数的物理地址。因为寄存器不存在物理地址与逻辑地址这一说,寄存器的地址就是代号,就是固定的。这些物理地址、逻辑地址、偏移地址等等针对的全是存储器操作数。

解答:

第三个:两个寄存器加一个常量,所以是基址变址相对寻址。因为这里基址寄存器选择的是BX,所以默认在数据段。所以数据段的段地址是6000,也就知道数据段的段首地址是60000,加起来就得到这个指令的物理地址是608F0。

第四个:在汇编语言中,单引号表示字符。所以这里的大写字母B的ASK码是42H,所以这个指令的源操作数也是立即寻址方式。

第五个:寄存器间接寻址,只不过它通过了段重设,重设数据在里,附加段的段基地址在题目中给出是2000H。所以这条指令中源操作数的物理地址就是20800H。

第六条:基址寄存器选择的是BP,默认是在堆栈段,所以它的物理地址就是堆栈段寄存器左移四位加上BP的值,就可以得到是16200H。(???这里不懂)



版权声明:本文为woshizuopie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。