第一章 计算机硬件基础(指令格式)

2024-03-14 21:12

本文主要是介绍第一章 计算机硬件基础(指令格式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

指令

1、定义

指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。

2、指令格式

指令就是机器语言的一个语句,它是一组有意义的二进制代码。通常包括操作码字段和地址码字段。

操作码:用来表示该指令所要完成的操作(如加、减、乘、除等)。其长度取决于指令系统中的指令条数。

地址码:用来描述该指令的操作对象,或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。

OPA1A2(结果)A3(下址)

指令含义:A1(OP)A2—>A3          A4=下一条指令将要执行的地址

3、指令--操作码

操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
操作码分类:

(1)定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。

  • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
  • 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。

(2)扩展操作码(不定长操作码):部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。

  • 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
  • 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。

设计扩展操作码的注意事项:

  • 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
  • 各指令的操作码一定不能重复。

操作分类

(1)数据传送(进行主存与CPU之间的数据传送)

LOAD           作用:把存储器(源)中的数据放到寄存器(目的)中

STORE         作用:把寄存器(源)中的数据放到存储器(目的)中

(2)算术逻辑操作

算数:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算

逻辑:与、或、非、异或、位操作、未测试、位清除、位求反

(3)移位操作

算术移位、逻辑移位、循环移位(带进位和不带进位)

(4)转移操作

无条件转移      JMP

条件转移         JZ:结果为0        JO:结果溢出           JC:结果有进位

调用和返回      CALL和RETURE

陷阱(Trap)与陷阱指令

(5)输入输出操作(进行CPU和I/O设备之间的数据传送)

CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

指令--地址码

地址码的作用:

指出操作码的地址、给出结果存放的地址、下一条指令的地址。(以上地址可以是主存地址、寄存器地址、I/O地址)

地址码可以是操作数本身、操作数地址或者操作数地址的计算方法。

地址码的分类:

(1)四地址指令

OPA1A2A3(结果)A4(下址)

OP:操作码;

A1,A2:第一操作数和第二操作数;

A3:存放运算结果的地址;

A4:下一条指令的地址

执行四地址指令需要访问4次存储器(取指令一次,取操作数两次,存放结果一次)

缺点:占用存储空间

设指令字长为32位,操作码占8位,4个地址字段各占6位,则指令操作数的直接寻址范围为2^6=64

(2)三地址指令

OPA1A2A3(结果)

OP:操作码;

A1,A2:第一操作数和第二操作数;

A3:存放运算结果的地址;

因为有了“程序计数器”,可以省略下一个指令地址存放空间。3个地址各占8位(32-8 = 24,24/3 =8),指令操作数直接寻址范围为2^8=256,完成一条指令需要访存次数还是4次(取指令,取A1,取A2,结果存回A3)

(3)二地址指令

OPA1A2

OP:操作码;

A1、A2:其中一个作为操作数的地址,另一个既作为操作数的地址,又用于存放本次运算结果的地址。

下一条指令的地址存放在程序计数器中。

设指令字长为32位,操作码占8位,2个地址字段各占12位,则指令操作数的直接寻址范围为2^12=4K,完成一条指令需要访存次数4次(取指令,取A1,取A2,结果存放到A1或者A2)

注意:如果将结果存放到寄存器中,则需要访存次数3次。

(4)一地址指令

OPA1

OP:操作数

一地址指令有2种情况,

第一种:OP(A1)—>A1,比如加1、减1、取反、求补等,完成一次指令需要访存3次(取指令,取A1,存A1);

第二种:(ACC)OP(A1)—>ACC,自身与ACC(寄存器)操作,完成一次指令需要访存2次(寄存器不是主存,所以不算访存次数)(取指令,取A1)。

这个时候除了操作码,所有的地址都能用于寻址了,1个地址占24位,指令操作数的直接寻址范围为2^24=16777216。

(5)零地址指令

OP

指令含义:
1、不需要操作数,如空操作、停机、关中断等指令
2、堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

这篇关于第一章 计算机硬件基础(指令格式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809743

相关文章

HTML5表格语法格式详解

《HTML5表格语法格式详解》在HTML语法中,表格主要通过table、tr和td3个标签构成,本文通过实例代码讲解HTML5表格语法格式,感兴趣的朋友一起看看吧... 目录一、表格1.表格语法格式2.表格属性 3.例子二、不规则表格1.跨行2.跨列3.例子一、表格在html语法中,表格主要通过< tab

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

mysql的基础语句和外键查询及其语句详解(推荐)

《mysql的基础语句和外键查询及其语句详解(推荐)》:本文主要介绍mysql的基础语句和外键查询及其语句详解(推荐),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录一、mysql 基础语句1. 数据库操作 创建数据库2. 表操作 创建表3. CRUD 操作二、外键

Python基础语法中defaultdict的使用小结

《Python基础语法中defaultdict的使用小结》Python的defaultdict是collections模块中提供的一种特殊的字典类型,它与普通的字典(dict)有着相似的功能,本文主要... 目录示例1示例2python的defaultdict是collections模块中提供的一种特殊的字

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

python dict转换成json格式的实现

《pythondict转换成json格式的实现》本文主要介绍了pythondict转换成json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 一开始你变成字典格式data = [ { 'a' : 1, 'b' : 2, 'c编程' : 3,

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy