指令系统
程序功能:求两个数据之和并输出
#include
int main{
int a,b,sum;
a=12;
b=13;
sum=a+b;
printf("sum is %d\n",sum);//在高级语言中称为语句;在机器语言和汇编语言中称为指令。
}
运行结果:sum is 25
基本概念:
指令:是计算机硬件能够直接理解并执行的最基本操作。
指令是构成程序的基本元素。
指令集或指令系统:一台计算机能执行的机器指令的集合。
一、指令格式设计
1.指令地址码的个数
1.一条指令中必须明显或隐含地包含以下信息:
①操作码。指定操作类型,如:移位、加、减、乘、除、传送等
②源操作数或其地址。指出一个或多个源操作数或其所在的地址,可以是存储单元的地址、寄存器编号或I/O端口,也可在指令中直接给出一个立即数。
③结果的地址。结果所存放的地址,可以是存储单元的地址、寄存器编号或I/O端口。
④下条指令地址。下条指令存放的存储单元的地址。
2.指令的基本格式
指令的基本格式.png
3.一条指令由一个操作码和几个地址码构成。
根据指令显式给出的地址个数,指令可分为三地址指令、二地址指令、单地址指令和零地址指令。
指令的分类.png
2.指令格式设计原则
指令格式的选择应遵循的基本原则:
①指令应尽量短
②要有足够的操作码位数
③操作码的编码必须有唯一的解释
④指令长度应是字节的整数倍
⑤合理选择地址字段的个数
⑥指令应尽量规整。
二、指令系统设计
1.操作数类型
操作数是指令处理的对象,指令涉及到的操作数类型有:
①指针或地址。指针或存储单元地址通常用无符号整数来表示。
②数值数据。数值数据只要是带符号整数和浮点数。
③位、位串、字符和字符串。位和位串数据一般用来表示一些标志、控制和状态等信息。字符和字符串数据用来表示文本、流式文件基本信息等。
④逻辑(布尔)数据。表示逻辑值。
2.寻址方式
操作数存放位置:从指令的角度来看,操作数存放位置可以是CPU中的通用寄存器、存储单元和I/O端口。
有效地址:指令中给出的操作数所在的存储单元的地址。
寻址方式:指令给出操作数或操作数地址的方式。
1.立即寻址
在指令中直接给出操作数本身,这种操作数称为立即数
立即寻址.png
2.直接寻址
指令中给出的地址码是操作数的有效地址,这种地址称为直接地址或绝对地址。
直接寻址.png
直接寻址方式下的操作数地址在指令中。
就是在指令中给出的地址码是操作数的有效地址。
3.间接寻址
指令中给出的地址码是存放操作数有效地址的存储单元地址
间接寻址.png
4.寄存器寻址
指令中给出的是操作数所在的寄存器编号,操作数在寄存器中。
寄存器寻址.png
5.寄存器间接寻址
指令中给出的地址码是一个寄存器编号,该寄存器中存放的是操作数的有效地址。
寄存器间接寻址.png
6.变址寻址
变址寻址方式就是指令中的地址码字段给出一个基准地址A(或形式地址)和变址寄存器编号I,操作数的有效地址EA=(I)+A,其中(I)表示变址寄存器I的内容。