关于计算机指令系统的深度剖析
关于计算机指令系统的深度剖析
第四章 指令系统
指令系统概述
指令系统是指某一种计算机所有指令的集合。
对计算机而言,这是一组二进制数的输入,实际上是一组电平的输入。这些输入能在一个指令周期内产生人们预先规定的动作。显然这不是一组随机的二进制数据输入。 指令系统是联系硬件和软件的桥梁。指令系统对计算机的作用相当于逻辑函数表对逻辑器件(门、触发器、加法器、移位寄存器)的作用。当然指令系统要比逻辑函数表复杂得多。
一种计算机指令系统设计的好坏,往往标志着该计算机功能的强弱,计算机的设计往往先从设计它的指令系统开始。
指令可以用两种不同语言形式来表示:机器语言和汇编语言。
机器语言指令即二进制代码,一般称作机器码。计算机能对其直接识别、分析解码和执行。
汇编语言指令是用助记符表示,它便于程序员编写、阅读和识别程序。 MCS-51单片机计有111条不同的指令。
机器语言指令格式
指令由操作码和操作数两部分组成,操作数可以是要被操作的数据本身(立即数),也可以是数据所在单元的地址或寄存器。指令格式包括指令长度和指令内部信息的安排等。一条长指令通常可以分成几段存放和处理,每一段的长度与微处理机的字长相等。8位微处理机是以8位二进制数(字节)为基础,MCS-51单片机采用变长指令,有单字节、双字节和三字节三种指令格式。
1. 一字节指令(49条)
这类指令的二进制代码既包含了操作码信息,又包含了操作数信息。有两种情况:
⑴ 指令码中隐含着对某一个寄存器的操作。
例如:指令码
即A3H 就表示INC DPTR,数据指针内容加1。 ⑵ 由指令中的最后三位r r r(000~111)指定要操作的工作寄存器R0~R7。
就表示MOV A ,Rn ,把工作寄存器中的内容送A 累加器。
2. 二字节指令(46条) 这类指令的第一字节为操作码,第二字节为操作数或操作数的地址。
例如:74H,8AH ,就表示MOV A ,#8AH,即把立即数8AH 送A 累加器。 其一般形式为MOV A,
#DATA ,
#DATA 表示立即数。
3. 三字节指令(16条) 这类指令的第一字节为操作码,后跟两个字节的操作数。
例如:53H,3AH,48H 就表示ANL 3AH ,48H ,即3AH 单元的内容与立即数48H 进行“与”操作,其结果送入3AH 单元。
其一般形式为ANL direct ,
#DATA
若按指令的执行时间可分为以下三类:
⑴ 单周期指令(65条) ⑵ 双周期指令(44条)
⑶ 四周期指令(2条)
若按指令的功能可分为以下五类: ⑴ 数据传送类指令(29条)
⑵ 算术运算类指令(24条) ⑶ 逻辑运算类指令(24条) ⑷ 控制转移类指令(17条) ⑸ 位操作类指令(17条)
汇编语言指令格式
操作码助记符 [目的操作数,源操作数]
例如 MOV A,R0就表示把工作寄存器R0中的数据送入A 累加器。
汇编语言指令和机器码书写格式
地 址 机器码 [标 ] 汇编语言指令 [注解] 2000H 74 8A START: MOV A,#8AH ; 送被乘数
指令中的常用符
·Rn: 表示当前工作寄存器R0~R7中的一个。
·@Ri: 表示寄存器间接寻址,常常作间接寻址的地址指针。其中Ri 代表R0和R1寄存器中的一个。
·Direct: 表示内部数据存贮器单元的地址及特殊功能寄存器SFR 的地址,对SFR 而言,既可使用它的物理地址,也可直接使用它的名字。
·#data: 表示8位立即数,即8位常数,取值范围为#00H~#0FFH ·#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFH ·addr16: 表示16位地址 ·addr11: 表示11位地址
·rel: 用补码形式表示的地址偏移量,取值范围为-128~+127。
·Bit: 表示内部RAM 和SFR 中的具有位寻址功能的位地址。SFR 中的位地址可以直接出现在指令中,为了阅读方便,往往也可用SFR 的名字和所在的数位表示。如:表示PSW 中奇偶校验位,可写成D0H ,也可写成PSW.0的形式出现在指令中。 ·@: 表示间接寻址寄存器或基址寄存器的前缀符 。 ·$: 表示当前指令的地址。
寻址方式
每条指令存数或取数都需要知道如何获得该数据,如何产生操作数或其地址就称作寻址。指令的寻址方式是指如何获得操作数的方法,一个指令系统的
相关资源:凯歌软件安装管理器1.0-其它文档类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!