指令系统:
名词解释:
- 指令:命令计算机直接进行某种基本操作的二进制代码串,也叫机器语言代码。每条指令可以完成一个独立的算术运算或逻辑运算操作。
- 从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令。微指令是微程序级的命令,它属于硬件:宏指令是由若干条机器指令组成的软件指令,它属于软件;而机器指令则介于微指令与宏指令之间。
- 指令系统:一台计算机能直接理解与执行的全部指令的集合称
为该机的指令系统,也叫机器语言。
指令格式:
一条指令必须包括:操作码;操作数;地址操作结果的存储地址;(下一条指令的地址)
指令操作码的扩展技术
- 固定格式操作码:简单直接译码,占用空间大
- 可变格式操作码:复杂,费时间:
指令长度和数据字长的关系
机器字长是指计算机能直接处理的二进制数据的位数,地址码长度决定了指令直接寻址能力。这对于字长较短(8位或16位)的微型机来说远远满足不了实际需要。
扩大寻址能力的方法:
- 一是通过增加机器字长来增加地址码的长度;
- 二是采用地址扩展技术,把存储空间分成若千个段,用基地址加位移量的方法来增加地址码的长度。
指令字长度是指一个指令字中包含二进制代码的位数。如指令字长度等于机器字长度的指令,称为单字长指令。(可不相等,一般尽量设计成一样,这样可以一次处理一条指令)
指令和机器字长的关系:
指令的长度主要取决于操作码的长度、操作数地址的长度和操作数地址的个数。由于操作码的长度、操作数地址的长度及指令格式不同,各指令的长度不是固定的,指令的长度通常为字节的整数倍。
指令的长度与机器的字长没有固定的关系,它既可以小于或等于机器的字长,也可以大于机器的字长。前者称为短格式指令,后者称为长格式指令。
数据表示:
目前微机所用的数据(字)长度一般为32位,4个字节。内存地址按字节编址。c'c
计算机指令系统可支持对字节、半字、字、双字的运算,有的还支持位操作。
指令的寻址方式(确定本条指令的数据的数据地址以及下一条要执行的指令地址的方法):
一:直接寻址
- 指令的地址码部分给出的就是操作数在存储器中的地址。
- 特点是简单直观,便于硬件实现,但操作数地址是指令器单元的一部分,只能用于访问固定的存储
二:寄存器寻址
- 在指令的地址码部分给出某一寄存器的名称(地址),而所需的操作数就在这个寄存器中。
- 这种方式数据传送快,计算机中多用。
三:基址寻址
机器内设置一个基址寄存器(专用和通用),操作数的地址由基址寄存器的内容和指令的地址码A相加得到。地址码A通常称为位移量(disp)或偏移量。(内存分为段,段的首地址放到基址寄存器,加上地址码存的偏移量)
指令中给出一个寄存器号和一个形式地址,寄存器的内容为基准地址,形式地址是作为偏移量。
基准地址加上偏移量作为操作数的有效地址。
四:变址寻址:
把CPU中变址寄存器的内容和指令地址部分给出的地址之和作为操作数的地址来获得操作数。这种方式多用于字串处理、矩阵运算和成批数据处理。
定义:指令给出一个寄存器号和形式地址,寄存器的内容作为偏移量,形式地址作为基准地址。基准地址加上偏移量得到有效地址。
五:间接寻址
寄存器间接寻址:
在指令的地址码部分直接给出的既不是操作数也不是操作数的地址,而是操作数地址的地址。
优点:改变寄存器Rn中的内容就可访问内存的不同地址。修改十分方便。缺点:二次寻址速度慢。
存储器间接寻址:
六:相对寻址
程序计数器PC的内容与指令中地址码部分给出的偏移量(Disp)之和作为操作数的地址或转移地址。
七:立即寻址:
所需的操作数由指令的地址码部分直接给出,
八:堆栈寻址:
一条指令可以同时实现多种寻址方式
指令的类型:
分类:
1.算数与逻辑运算指令:
- 算数运算指令:一般指定点数运算:如ADD加,减SUB,乘MUL,除DIV。运算。
- 逻辑运算:一般包括逻辑与AND,逻辑或OR,逻辑非NOT,逻辑异或XOR等运算。按位进行运算。
算术逻辑运算指令根据运算结果改变标志寄存器的状态位
2.移位指令
算术移位:左移时空位补0而符号位进标志位,右移时空位复制符号位而溢出位进标志位。
逻辑移位:整体移位,空位补0,溢出进标志位。
循环移位:有不带进位循环和带进位循环。前者循环后的溢出位进标志位,后者与标志位一起循环。
3.浮点运算指令
- 高级语言中的实数(real)经常是x先转换成浮点数后再做处理。某些机器没有设置浮点运算指令而用子程序实现,速度较低。
- 主要是用于科学计算的计算机设置浮点运算指令。
4.十进制运算指令
采用BCD码进行运算
在输入输出数据频繁的计算机系统中设置十进制运算指令能提高数据处理速度。
5.字符串处理指令
字符串处理指令是-一种非数值处理指令。
- 包括:字符串的传送、比较、查找、字符串的转换等操作指令。
- 用于各种文字编辑与排版处理
6.数据传送指令
用以实现寄存器与寄存器之间(MOV AX,BX);
寄存器与内存单元之间(MOV [0001H],AX);
以及内存单元相互之间的数据传送
数据能够被从源地址传送到目的地址,而源地址中数据不变,相当于复制。
数据传送指令一次可以传送-一个数据或一批数据.有些机器还设置了数据交换指令。
7.转移类指令:
作用:根据逻辑判断结果,改变程序的执行顺序。
按转移的性质又可分为无条件转移、条件转移、过程调用与返回、陷阱等几种。
(1)无条件转移与条件转移:
- 无条件转移指令不受任何条件约束,直接把程序转移至指令所定的新地址开始执行程序。一般为JUMP(JMP)指令
- 条件转移指令根据当前运算的结果进行逻辑判断,符合判断条件则转移到指令表明的新地址处执行程序,否则继续抹原顺序执行原来的程序。
- 条件码的建立与转移的判断可在--条指令中完成,也可在二条指令中完成。
- 运算器中一般根据运算结果设置条件码(标志位),条件转移指令根据条件满足与否决定是否转移
(2)调用指令和返回指令:
- 调用指令实现从一一个程序转去执行子程序的操作;
- 返回指令则使CPU结東执行子程序而返回执行原程序。
调用指令与转移指令的主要差别:需要保留返回地址.
调用指令CALL)和返回指令(RETURN)是对配合使用的指令.
(3)陷阱(trap)与陷阱指令
- 计算机运行过程中,有时可能出现故障,一旦出现故障计算机就发出陷阱信号,并暂停当前程序的执行(中断,转入相应故障处理程序。
- 一般计算机中,陷阱指令作为隐含指令。
8.堆栈(stack)指令
在一般计算机中堆栈主要用来暂存中断和子程序调用时现场数据及返回地址,用于访问堆栈的指令只有压入(即进栈)和弹出(即退栈)两种,它们实际上是一种特殊的数据传送指令。
压入指令:PUSH OPR
操作: (SP)-2 ->SP OPR - >(SP)
9.输入输出指令
10。特权指令:
- 某些指令使用不当会破坏系统或其他用户信息,这类指令只能用于操作系统或其他系统软件,而不提供给用户使用,这类指令称为特权指令。
- 特权指令分配和管理系统资源,防止非法用户对系统资源及其他用户程序的修改、打印以及删除等。
11.其他指令
- (1)向量指令
- (2)多处理机指令
- (3)控制指令
如:暂停、等待、空操作、以及开中断、关中断等等。
需要说明的是:计算机种类不同其指令系统包括数量与功能亦有所不同,用其编程时务必参照相应的指令系统手册