2.2.6 指令系统
人们通过指令来控制计算机完成特定的运算和管理任务。指令是要求计算机执行某种操作的命令。例如,对两个数做加法运算,可以要求计算机执行加法指令完成两个数相加的操作。并非人们想象得到的任何操作或运算都有指令与之相对应。例如,计算机中不会提供一条指令计算某个数的阶乘,这是因为阶乘运算可以通过执行若干条更为基本的指令来完成。因此计算机只提供一些完成基本操作的指令,人们通过使用这些基本指令及其组合就可以完成其他更为复杂的操作。通常工程师在设计时就确定了计算机可以执行的指令的种类和数量。一台计算机支持的所有指令的集合构成该计算机的指令系统。不同的计算机的指令系统并不相同,有些计算机支持的指令较少,有些计算机支持的指令较多。例如,一些计算机中有乘法指令,而另一些计算机中没有乘法指令。对于没有乘法指令的计算机,要进行乘法运算,就需要通过加法等更为基本的操作组合来完成。目前微机常用的指令系统一般包含数十条或上百条机器指令。
在计算机中,每条指令的基本格式一般如下:其中,操作码用来表明指令要求计算机所要完成的运算或操作,例如加、减、移位、传送等;地址码用来给出参与运算的操作数和运算结果的位置,可以是寄存器和存储器地址等。为了对指令有更为深入的了解和直观上的认识,下面列举四条指令进行说明:
例1 ADD A, [5]
说明 在这条指令中,ADD是操作码,含义是加法操作;A代表CPU中的寄存器A; [5]表示存储器中的5号存储单元。这条指令的含义是先把寄存器A中的内容和5号存储单元中的内容相加,然后把结果放回到寄存器A中。
从上面的说明中,可以看到,加法指令把运算结果回存在寄存器A中,这是因为指令中只有两个地址码,指令中没有指出寄存运算结果的第三个地址码。这种指令属于两地址码。在采用两地址码的计算机中,一般规定运算结果放在第一个地址码所代表的存储单元或寄存器中。
例2 MOV B, [10]
说明 在这条指令中,MOV是操作码,含义是传送操作;B与[10]分别代表寄存器B和10号存储单元。这条指令的含义是把存储在第10号单元中的数据传送到寄存器B中。指令的执行结果是10号存储单元中的内容被复制了一份并放在寄存器B中。
例3 IN [12],5
说明 这是一条输入指令,表示从5号设备读入一个数据,存放到12号存储单元中。可见,5号设备是一个输入设备。
例4 OUT[12],6
说明 这是一条输出指令,表示把12号存储单元的内容发送到6号设备并输出。可见,6号设备是一个输出设备。
需要说明的是,在计算机中,无论操作码还是地址码,最终都表示为二进制码。使用ADD, MOV, A, B等助记符号,只是为了便于程序员学习和记忆,这些符号最终都必须转换为二进制码后才能在计算机中执行。