计算机组成原理 第六章(指令系统)—第二节(操作数类型和操作类型)

本文围绕《计算机组成原理》展开,介绍了操作数类型(地址、数字、字符、逻辑)、数据在存储器中的存放方式(机器字长、边界对齐、大/小端存储)、操作类型(数据传送、算术逻辑、移位、转移、I/O指令)等内容,详细阐述了计算机内部数据处理的关键概念和技术细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、操作数类型

1、地址

        地址实际上也可看作是一种数据,在许多情况下要计算操作数的地址,这时地址可被认为是一个无符号的整数。

2、数字

        计算机中常见的数字有定点数、浮点数和十进制数。

3、字符

        在应用计算机时,文本或者字符串也是一种常见的数据类型。由于计算机在处理信息过程中不能以简单的字符形式存储和传送,因此普遍采用ASCII码。当然,还有其它一些字符编码,如8位EBCDIC码,又称扩展BCD交换码。

4、逻辑数据

        计算机除了做算术运算外,有时还需做逻辑运算,此时n个0和1的组合不是被看作算术数字,而是被看作逻辑数。例如,在ASCII码中的0110101,它表示十进制数5,若要将它转换为NB-CD短十进制码,只需通过它与逻辑数0001111完成逻辑与运算,抽取低4位,即可获得0101。此外,有时希望存储一个布尔类型的数据,它们的每一位都代表着真(1)和假(0),这时n个0和1组合的数就都被看作逻辑数。

二、数据在存储器中的存放方式

1、机器字长

        通常计算机中的数据存放在存储器或寄存器中,而寄存器的位数便可反映机器字长。一般机器字长可取字节的1、2、4、8倍,这样便于字符处理。在大、中型机器中字长为32位和64位,在微型计算机中字长从4位、8位逐渐发展到目前的16位、32位和64位。

2、边界对齐

(1)为了便于硬件实现,通常要求多字节的数据在存储器的存放方式能满足“边界对准”的要求。下图所示的存储器存储字长为32位,可按字节、半字、字,双字访问,半字地址是2的整数倍,字地址是4的整数倍,双字地址是8的整数倍当所存数据不能满足此要求时,可填充一个至多个空白字节,这么做的目的是为了便于访存,只是浪费了一些空间。

(2)在数据不对准边界的计算机中,数据(例如一个字)可能在两个存储单元中,此时需要访问两次存储器,并对高低字节的位置进行调整后才能取得一个字,很显然,这种存储方式虽然充分利用了存储空间,但是却增加了不少的访存时间,而且读写控制也很复杂。

3、大端和小端存储模式

(1)大端(存储)模式是指数据的低位保存在字的高地址中,而数据的高位保存在字的低地址中,也就是高位字节地址为字地址。(如下左图所示)

(2)小端(存储)模式是指数据的低位保存在字的低地址中,而数据的高位保存在字的高地址中,也就是低位字节地址为字地址。(如下右图所示)

三、操作类型

1、数据传送

        数据传送包括数据在寄存器与寄存器、寄存器与存储单元、存储单元与存储单元之间的传送。如从源到目的之间的传送、对存储器读(LOAD,把存储器中的数据放到寄存器中)和写(STORE,把寄存器中的数据放到存储器中)、交换源和目的的内容、置1、清零、进栈、出栈等。

2、算术逻辑操作

        这类操作可实现算术运算(加、减、乘、除、增1、减1、取负数即求补)和逻辑运算(与、或、非、异或)

        对于低档机而言,一般算术运算只支持最基本的二进制加减、比较、求补等,高档机还能支持浮点运算和十进制运算。有些机器还具有位操作功能,如位测试(测试指定位的值)、位清除(清除指定位)、位求反(对指定位求反)等。

3、移位

        移位可分为算术移位、逻辑移位和循环移位三种。

        算术移位和逻辑移位分别可实现对有符号数和无符号数乘以2^{n}(左移)或整除以2^{n}(右移)的运算,并且移位操作所需时间远比乘除操作执行时间短,因此,移位操作经常被用来代替简单的乘法和除法运算。

        循环移位又分带进位和不带进位两种。

4、转移

(1)在多数情况下,计算机是按顺序执行程序的每条指令的,但有时需要改变这种顺序,此刻可采用转移类指令来完成.

(2)转移指令按其转移特征又可分为无条件转移、条件转移、跳转、过程调用与返回、陷阱(Trap)等几种。

①无条件转移:

        无条件转移不受任何条件约束,可直接把程序转移到下一条需执行指令的地址。例如“JMP X”,其功能是将指令地址无条件转至X。

②条件转移:

        条件转移是根据当前指令的执行结果来决定是否需要转移,若条件满足则转移,若条件不满足则继续按顺序执行

        一般机器都能提供一些条件码,这些条件码是某些操作的结果,例如零标志位(Z)、负标志位(N、溢出标志位(V)、进位标志位(C)、奇偶标志位(P)等。

        还有一种条件指令——SKP(Skip),它暗示其下一条指令将被跳过,从而隐含了转移地址是SKP后的第二条指令。

③调用与返回:

        在编写程序时,有些具有特定功能的程序段会被反复使用,为避免重复编写,可将这些程序段设定为独立子程序,当需要执行某子程序时,只需用子程序调用指令即可。此外,计算机系统还提供了通用子程序,如申请资源、读写文件、控制外设等,需要时均可由用户直接调用,不必重新编写。

        通常调用指令包括过程调用、系统调用和子程序调用,它可实现从一个程序转移到另一个程序的操作。

        调用指令(CALL)一般与返回指令(RETURN)配合使用,CALL用于从当前的程序位置转至子程序的入口,RETURN用于子程序执行完后重新返回到原程序的断点。如下图所示,主程序从2000地址单元开始,并在2100处有一个调用指令,当执行到 2100处指令时,CPU停止下一条顺序号为2101的指令,而转至2400执行SUB1子程序,在SUB1中又有两次(2500和2560处)调用子程序SUB2,每一次都将 SUB1挂起而执行SUB2,子程序末尾的RETURN 指令可使CPU返回调用点

        从上例来看,子程序可以在多处被调用,而且子程序调用可出现在子程序中,即允许子程序嵌套。由于可以在许多处调用子程序,因此CPU必须记住返回地址,使子程序能准确返回,返回地址可存放在以下3处:

        [1]寄存器内。机器内设有专用寄存器专门用于存放返回地址。

        [2]子程序的入口地址内。

        [3]栈顶内。现代计算机都设有堆栈,执行RETURN指令后便可自动从栈顶内取出应返回的地址。

④陷阱(Trap)与陷阱指令:

        陷阱其实是一种意外事故的中断,例如机器在运行中可能会出现电源电压不稳定、存储器校验出差错、输入输出设备出现了故障、用户使用未被定义的指令、除数出现为0、运算结果溢出以及特权指令等种种意外事件,致使计算机不能正常工作,此刻必须及时采取措施,否则将影响整个系统的正常运行。因此,一旦出现意外故障,计算机就发出陷阱信号,暂停当前程序的执行,转入故障处理程序进行相应的故障处理

        计算机的陷阱指令一般不提供给用户直接使用,而作为隐指令(即指令系统中不提供的指令),在出现意外故障时由CPU自动产生并执行。也有的机器设置供用户使用的陷阱指令或“访管”指令,利用它完成系统调用和程序请求。

5、输入输出

        对于I/O单独编址的计算机而言,通常设有输入输出指令,它完成从外设中的寄存器读入一个数据到CPU的寄存器内,或将数据从CPU的寄存器输出至某外设的寄存器中

输入:IN AX, n    端口中的内容→CPU中的寄存器

输出:OUT n, AL   CPU中的寄存器→端口中的内容

6、其它

        其它包括等待指令、停机指令、空操作指令、开中断指令、关中断指令、置条件码指令等。为了适应计算机的信息管理、数据处理及办公自动化等领域的应用,有的计算机还设有非数值处理指令,如字符串传送、字符串比较、字符串查询及字符串转换等。

        在多用户、多任务的计算机系统中,还设有特权指令,这类指令只能用于操作系统或其他系统软件,用户是不能使用的。

        在有些大型或巨型机中,还设有向量指令,可对整个向量或矩阵进行求和、求积运算。在多处理器系统中还配有专门的多处理机指令。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值