文档介绍:第4章指令系统与汇编语言
指令系统概述
4·2 寻址方式
4·3 8086/8088指令系统
4·4 汇编语言简述
本章学习目标
返回本章
1
2
3
8086CPU指令系统的寻址方式及地址计算方法
8086CPU指令及其应用
汇编语言基本格式
4
5
6
汇编语言程序设计基本步骤和基本方法
顺序程序、分支程序、循环程序、子程序的基本结构和设计方法
常用DOS中断调用
指令系统概述
指令的格式
指令中的操作数
返回本章
指令的格式
返回本节
指令的格式与机器的字长、存储器的容量及指令的性质都有很大的关系。计算机是通过执行指令来完成各种任务的,微处理器处理的所有对象除指令外都可以认为是数据,所以计算机所要完成的任务就是对各种数据的处理。因此,一条指令至少要包括这样几个信息:运算数据的来源、运算结果的去向及执行的操作。
指令要执行的操作称为操作码,也称为指令码。它说明所执行的操作的性质和功能,如加、减、乘、除等。操作码有的占用一个字节,有的占用两个字节。一台计算机有几十或几百条指令,每条指令都有一个对应的操作码,计算机通过识别操作码来决定要进行的操作。
参加运算的数据,亦即操作的对象称为操作数。数据的来源及运算结果的去向都统称为操作数的地址,也可简称为操作数。通常将存放结果的操作数称为目标操作数,相应的另一个操作数就称为源操作数。
除操作码和操作数外,在遇到转移、子程序调用等非顺序执行的情况时,指令中还应给出下一条要执行的指令的地址(在程序顺序执行时,下条要执行的指令的地址由指令指针IP指出)。
总之,一条指令主要包括了两种信息,即操作码和操作数(或称地址码)。操作码部分描述操作的性质,操作数描述了操作的对象,它可以是直接参加运算的数据,也可以是数据的地址。
指令的格式一般是:
操作数第一个字节通常为指令的操作码,微型计算机指令的操作数字段可以有零个、一个或两个。
操作码
操作数
……
操作数
格式:
这种指令格式中只有操作码而没有操作数。这种指令一般有两种:一是不需要任何操作数,如空操作指令、暂停指令等;二是操作数是隐含的,即指令有默认的操作数。如字符串操作指令:MOVSB。该指令表示将源地址中的字节数传送到目标地址中去。
操作码
格式:
这里操作数,它有两种情况:一是该操作数既表示运算数据的地址,也表示存放运算结果的地址。如加1指令: INC AX。该指令执行的结果是将累加器AX中的内容加1然后再送回AX;二是指令中的操作数是源操作数,而目标操作数被隐含了,即指令实际上是双操作数指令,默认了另一个操作数,运算的结果也默认存放在隐含的操作数地址中。如乘法指令: MUL BL,该指令的执行是将累加器AL的内容与BL内容相乘,结果送AX。
操作码
操作数
格式:
指令中的操作数2是源操作数,它本身就是参加运算的一个数据,或是其中一个操作数的地址;操作数1是目标操作数,它有两个含义,表示另一个操作数的地址及存放运算结果的目标地址。这是最常见的指令格式,微处理器的基本指令系统中多数指令都是双操作数指令。例如:加法指令ADD AX, BX。
微型计算机中的指令都是以上三种格式。在大型机或某些功能较强的中、小型机的指令格式就不限于以上三种,而可以是三操作数以至多操作数的指令格式。
操作码
操作数1
操作数2
返回本节
指令中的操作数
8086指令系统中的指令均为以上三种格式。其操作数既可以是数据,也可以是参加运算的数据的地址。根据它们的性质,将操作数分为这样三类:立即数操作数、寄存器操作数和存储器操作数。
所谓立即数是指具有固定数值的操作数,即常数。它可以是字节(8位)或字(16位),可代表无符号数或有符号数。立即数操作数直接存放在指令代码中,跟在操作码之后,它作为指令的一部分存放在代码段里。
在指令中,立即数操作数表示参加运算的数据而不是数据的地址,所以只能用作源操作数,而不能作为目标操作数。
例: MOV AX,1234H
返回本节
注意:
立即数无法作为目标操作数
立即数可以是无符号或带符号数, 其值应在允许范围内
错误例:
MOV AX, 12345H
MOV 1234H, AX
寄存器操作数表示参加运算的数存放在指令给出的寄存器中,即寄存器的内容为操作数,可以是16位或8位。寄存器操作数既可以用做源操作数,也可以用做目标操作数。
例:MOV AX,BX
MOV DL,CH
返回本章