3.3 机器指令
机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。但为了方便编写计算机程序,又把这些二进制编码构成的机器指令用其他更容易理解的字符表示出来。例如,用汇编语言写的8086指令MOV AX,1234H对应的机器码为10111000 0011010000010010(0xB83412)。
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。不同型号的计算机,其机器语言是不相通的,利用一种计算机的机器指令编制的程序,不能在另一种计算机上执行。
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式包括操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。
用机器语言编写程序,编程人员首先要熟记所用计算机的全部指令代码和代码的含义。编写程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中所使用的工作单元的工作状态,这是一项十分烦琐的工作。编写程序花费的时间往往是实际运行时间的几十倍甚至几百倍。而且,编出的程序全是0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。
机器语言是微处理器理解和使用的,用于控制操作二进制代码。8086到Pentium的机器语言指令长度可以从1字节到13字节。尽管机器语言表现得很复杂,但是它是有规律的。存在着多至100000种机器语言的指令。这意味着不能把这些指令全部列出来。以下是一些示例:
指令示例
0000代表加载(LOAD)
0001代表存储(STORE)
...
寄存器示例
0000代表寄存器A
0001代表寄存器B
...
存储器示例
000000000000代表地址为0的存储器
000000000001代表地址为1的存储器
000000010000代表地址为16的存储器
100000000000代表地址为211的存储器
集成示例
0000,0000,000000010000代表LOAD A,16
0000,0001,000000000001代表LOAD B,1
0001,0001,000000010000代表STORE B,16
0001,0001,000000000001代表STORE B,1