2021年10月26日 计组

1. 指令格式

1.1 指令格式的定义

 

1.2 指令格式

 

1.2.1 扩展地址码

 

1.2.3 扩展操作码

 

 

1.2.4 总结

 

 

2. 指令寻址

2.1 数据存放

2.2 边界对齐存储 

 

2.3 两种指令寻址方式

2.4 总结

 

3. 数据寻址

根据某种寻址方式的要求把形式地址转化为存储器中的有效地址

3.1 操作数类型

 

3.2 数据寻址的类型

 

3.2.1 立即寻址

3.2.2 直接寻址 

3.2.3 间接寻址 

 

3.2.4 寄存器寻址

3.2.5 寄存器间接寻址 

3.2.6 隐含寻址

3.2.7 偏移寻址

 

3.2.7.1 基址寻址

 

3.2.7.2 变址寻址

 

 

3.2.7.3 先对寻址

 

 

3.2.7.4 相对寻址举例

 

3.2.8 堆栈寻址

3.2.9 总结

 

 

 

总结

1. 一般有几种指令格式的操作码?这几种指令格式的访存次数分别是多少次?如何在硬件层面扩展地址码?如何在硬件层面扩展操作码?

  四地址指令(操作码+2个地址码+结果存入地址+下一个指令地址,访存4次)、三地址指令(2个地址码+结果存入地址,PC寄存器替代下一个指令地址,访存4次)、二地址指令(操作码+2个地址码,一般将完成的结果放入第一个存储字所在的寄存器中覆盖,访存4次)、一地址指令(操作码+地址码,一般将一个存储字长的结果覆盖该存储字所在的内存行(访存3次),或者将它与ACC寄存器中的存储字进行运算,结果放入ACC寄存器中(访存2次))。

  如上所述就是扩展地址码的方法,分别根据不同的运算是否需要从内存中得到2个数据/1个数据/0个数据进行不同地址字的划分。

  将常用的指令分配到较短的操作码,提高速度。并且注意当前指令操作码的分配还要考虑到上次指令操作吗分配的遗留位数,当前指令操作码可以分配的次数=遗留位数×2×2^当前分配位数。

2. 谈谈你知道的计算机硬件的操作类型?

  计算机的操作类型有数据传送类(CPU与主存之间进行数据传送。LOAD、STORE等)、输入输出类(CPU与I/O设备之间的数据传送)、运算类(算数逻辑操作的加减乘除、与或非,移位操作的算数移位、逻辑移位、循环移位)、程序控制类(改变程序执行的顺序,无条件转移,有条件转移,调用和返回,陷阱与陷阱指令)。

3. 指令寻址和数据寻址的区别?谈谈你对操作数类型的认识?

  指令寻址是由CPU内的PC寄存器内二进制机械码去寻找所对应主存的指令。数据寻址是通过主存一个存储字内的地址码寻找内存中对应的存储字。操作数类型有地址、数字、字符、逻辑数。

4. 谈谈你知道的数据寻址类型?

  一个存储字可以被分为操作码+寻址特征+形式地址A,根据不同的寻址特征找到一些存储字然后再将其与A进行运算得到有效地址EA,再根据(EA)去拿到操作数。

  数据的寻址类型有:隐含寻址、立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、偏移选址(基址寻址、相对寻址、变址寻址)、堆栈寻址。

  其中隐含寻址并没有要拿到操作数的地址,它隐含在操作码中,表示这次想要的操作数已经在ACC中。立即寻址是把操作数已经放在了存储字当中。

  直接寻址和间接寻址是需要直接或者间接的去内存中找到操作数对应的存储字地址。寄存器寻址和寄存器间接寻址与前者相似,只是操作数所在的有效地址既可能在CPU的寄存器中也可能在内存的存储字中。

  基址寻址是专用寄存器或者通用寄存器内的PR存储字中的内容与A相加得到EA,它的作用是用来保证整块程序无论在内存中的哪个部分位置都能正常运行。相对寻址是不断在改变PC内存储字的数据,它的作用快捷地操作程序内部分存储字内的数据。变址寻址是可以将寄存器内的数据进行自增或者自减,它是为了便捷地对程序段内循环以及连续的数组数据进行操作。

  堆栈寻址类似于堆栈数据结构,SP寄存器内的存储字数据不断进行变化完成入栈出栈操作。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是您的答案: 1. 生成今天的时间戳 ```python import time print(int(time.time())) ``` 输出结果类似于:1622108149 2. 生成2016年7月1开始,长度为10的时间索引序列,时间间隔为3天。 ```python import pandas as pd date_rng = pd.date_range(start='7/1/2016', end=None, periods=10, freq='3D') print(date_rng) ``` 输出结果类似于: ``` DatetimeIndex(['2016-07-01', '2016-07-04', '2016-07-07', '2016-07-10', '2016-07-13', '2016-07-16', '2016-07-19', '2016-07-22', '2016-07-25', '2016-07-28'], dtype='datetime64[ns]', freq='3D') ``` 3. 生成从2021年5月25开始,间隔为12小时,长度为10的时间索引序列。 ```python date_rng = pd.date_range(start='5/25/2021', end=None, periods=10, freq='12H') print(date_rng) ``` 输出结果类似于: ``` DatetimeIndex(['2021-05-25 00:00:00', '2021-05-25 12:00:00', '2021-05-26 00:00:00', '2021-05-26 12:00:00', '2021-05-27 00:00:00', '2021-05-27 12:00:00', '2021-05-28 00:00:00', '2021-05-28 12:00:00', '2021-05-29 00:00:00', '2021-05-29 12:00:00'], dtype='datetime64[ns]', freq='12H') ``` 4. 生成2021年6月的时期对象 ```python import pandas as pd period = pd.Period('2021-06', freq='M') print(period) ``` 输出结果类似于: ``` 2021-06 ``` 5. 生成2021年1月到6月的时期索引序列 ```python period_rng = pd.period_range(start='1/1/2021', end='6/30/2021', freq='M') print(period_rng) ``` 输出结果类似于: ``` PeriodIndex(['2021-01', '2021-02', '2021-03', '2021-04', '2021-05', '2021-06'], dtype='period[M]', freq='M') ``` 希望这些能够帮助您!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值