指令寻址方式与数据寻址方式
【README】
1.本文总结自bilibili《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;
2. cpu访存寄存器耗费 10ns,访问缓存(高速缓冲寄存器)耗费20ns,访问主存200ns;访问磁盘1ms;一般情况下,CPU内部执行指令最长耗时是在访问内存(外设除外),所以本文列出了寻址方式是否访存的情况;
【1】指令寻址
- 方式1: 顺序寻址 , PC+1 -> PC ;PC程序计数器寄存器用于存储要执行的下一条指令的地址;
- 方式2:跳跃寻址, 如 JMP 7;无条件跳转到7号地址的指令;
【2】数据寻址
【2.1】 指令格式
操作码 |
寻址特征 |
形式地址A |
形式地址 A:机器指令中操作数的形式地址;
有效地址EA:操作数的真实地址; effective address;
约定: 指令字长=存储字长=机器字长;
【2.2】数据寻址方式(10种)
【2.2.1】立即寻址
形式地址A就是操作数;(无需访存)
【2.2.2】直接寻址
形式地址A就是有效地址EA;(无需访存)
【2.2.3】 隐含寻址
操作数地址隐含在操作码中;根据操作码隐含指出操作数在某寄存器中;(如操作数在寄存器中,无需访存)
【2.2.4】间接寻址
通过访存取出形式地址A指向的内存单元的操作数有效地址EA;再通过访存取出有效地址EA指向的内存单元的操作数;(需要2次访存)
【2.2.5】寄存器寻址
形式地址就是寄存器编号,操作数存储在寄存器中;(无需访存)
【2.2.6】寄存器间接寻址
形式地址就是寄存器编号,但操作数有效地址存储在寄存器中;(需要1次访问寄存器,1次访存);
【2.2.7】基址寻址
操作数有效地址EA等于基址+形式地址A;其中基址存储在专用寄存器或通用寄存器中,形式地址作为偏移量;专用寄存器或BR,通用寄存器如R0;(1次计算,1次访存);(注意,基址不变,但形式地址改变,通常用于多道程序设计);
【2.2.8】变址寻址
操作数有效地址EA等于变址+形式地址A;其中变址存储在变址寄存器IX(或通用寄存器)中;(1次计算,1次访存);(注意,变址可变,但形式地址不变,通常用于遍历数组);
【2.2.9】相对寻址
以pc寄存器作为基址寄存器,形式地址作为偏移量;
【2.2.10】堆栈寻址
操作数存储在堆栈的栈顶中,其中栈底是低地址,栈顶是高地址(SP寄存器存储);
Push:入栈;把ACC累加器的数据压入栈顶(内存);
Pop:出栈:把栈顶元素出栈并存入ACC累加器;
【3】寻址示例:求数组N个元素均值
【3.1】 直接寻址实现
直接寻址步骤(共计N+2条指令):
序号 |
指令 |
描述 |
1 |
LDA D |
把操作数存入ACC累加器中; |
2 |
ADD D+1 |
把ACC内容与D+1内容相加;和存入ACC; |
3 |
ADD D+2 |
把ACC内容与D+2内容相加;和存入ACC; |
4 |
…… |
此处省略100字 |
5 |
ADD D+(N-1) |
把ACC内容与(N-1)内容相加;和存入ACC; 至此,N个数据的累加和已完成,结果存入到ACC中; |
6 |
DIV #N |
求ACC中和的均值 |
7 |
STA ANS |
保存结果到内存单元 |
【3.2】变址寻址实现
变址寻址步骤(共计8条指令):
序号 |
指令 |
描述 |
1 |
LDA #0 |
把ACC累加器清零; |
2 |
LDX #0 |
把IX变址寄存器清零; |
3 |
ADD X, D |
把变址寄存器IX的内容和指令中的形式地址存储的操作数做加法,结果存入累加器ACC;D为形式地址,如数组0号元素地址; |
4 |
INX |
变址寄存器IX自增1; |
5 |
CPX #N |
Compare-变址寄存器IX 与 N做比较; |
6 |
BNE M |
Not equal-若不等,则跳转到M号指令(M=3); 通过这个循环,我们累加; |
7 |
DIV #N |
求和的均值 |
8 |
STA ANS |
保存结果到内存单元 |
【小结】直接寻址和变址寻址对比:
直接寻址需要n+2条指令;而变址寻址只需要8条指令即可(变址寻址性能更优);
指令寻址方式与数据寻址方式相关推荐
- 指令系统寻址方式——指令寻址,数据寻址
前言 寻址方式是指确定本条指令的数据地址以及下一条将要执行的指令地址的方法,它与硬件结构紧密相关,而且直接影响指令格式和指令功能. 一.寻址方式的分类 寻址方式分为:指令寻址和数据寻址两大类. 指令寻 ...
- 计算机组成:浅析MOV指令以及操作数的寻址方式
MOV指令以及操作数的寻址方式 偏移地址在指令中,操作数在内存中 MOV指令默认的操作数存储在DS中(数据段寄存器):此时采用段加偏移. 偏移地址在寄存器中,操作数在内存中 能够存储偏移地址的寄存器: ...
- 磁盘数据寻址方式(CHS与LBA相互转换)
磁盘数据寻址方式 访问硬盘上的数据总是以扇区为单位进行的,即每次读或写至少是一个扇区的数据. 常用两种:物理寻址方式(CHS)和逻辑寻址方式(LBA) 物理寻址方式 物理寻址方式又称为CHS(Cyli ...
- 寻址方式 寄存器寻址方式 立即数寻址方式 存储器寻址方式: 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式 串操作寻址方式 I/O端口寻址方式
寻找操作数地址的方法 共有八种: 寄存器寻址方式 立即数寻址方式 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式 80 ...
- 七种寻址方式(寄存器间接寻址方式)
操作数在存储器中,操作数的有效地址用SI.DI.BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式.该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示. ...
- 相对基址加变址寻址方式与其它寻址方式之间的变形关系
相对基址加变址寻址方式与其它寻址方式之间的变形关系 源操作数 指令的变形 源操作数的寻址方式 只有偏移量 MOV AX, [100H] 直接寻址方式 只有一个寄存器 MOV AX, [BX] 或 MO ...
- 机器字长,指令字长,数据子长,MDR
/* 机器字长: CPU一次运算处理的二进制位数. 指令字长: 计算机指令字的位数. 数据字长: 计算机数据存储所占用的位数. 存储字长: 存储器中一个存储单元(存储地址)所存储的二进制代码的位数,即 ...
- AngularJS: 自定义指令与控制器数据交互
<!doctype html> <html><head><meta charset="utf-8"><title>Ang ...
- TPU中的指令并行和数据并行
深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用芯片的设计.谷歌的张量处理单元(Tensor Processing Unit,后文简称TP ...
最新文章
- 前端分页页码静态部分制作
- Java中instanceof用法
- 微信小程序运行报错---invoke event
- JQuery操作类数组的工具方法
- java对象和字符串转换_java中字符串和JSON对象、Bean之间的相互转换
- android编译modem,android modem调试的一点点心得
- LeetCode LRU Cache
- 2016HUAS暑假集训训练题 F - 简单计算器
- 将对象转成 json 以及 将字符串 hash(SHA1) 加密
- axis2与cxf区别
- 图像旋转之以原点为中心
- uniapp web设置ios safri浏览器 添加到屏幕 像是应用 但是不用证书
- 细节复盘3 (文本折叠、文本尾行缩进截断)2020-8-2
- 名词解释isp_名词解释
- 嵌入式开发<网络调试工具>
- 温度传感器DS18B20介绍
- 盲盒包装流水线(数据结构实践-栈)
- Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)A蔡老板的会议
- 什么是epub格式,有什么好用的安卓epub阅读器
- 我是怎样通过博客进入搜狐的
热门文章
- Codeforces Round #704 (Div. 2) D. Genius‘s Gambit 构造 + 细节
- Codeforces Round #651 (Div. 2) D
- I - The Mad Mathematician FZU - 2042(未解决)
- CF1556D-Take a Guess【交互】
- jzoj4279-[NOIP2015模拟10.29B组]树上路径【树形dp】
- P4248-[AHOI2013]差异【SAM or SA】
- jzoj3348,bzoj3258-秘密任务【最短路,网络流最小割】
- P3216-[HNOI2011]数学作业【矩阵乘法,数学】
- 欢乐纪中某B组赛【2019.1.25】
- 【做题记录】[NOIP2016 普及组] 魔法阵