zoukankan      html  css  js  c++  java
  • 简述处理器中的三种寻址方式

    前言导读:指令的存储与执行初探从零开始构造一台二进制加法器

    一个微处理器通常有多个用来寻址存储器的输出信号。

    例如因特尔公司生产的8080处理器,是一个具有重大历史意义的芯片,本篇主要以8080为例做叙述。
    这里写图片描述

    8080是一个8位的微处理器,可以一次从存储器读取或写入8位数据。看上图,A0~A15表示16个可用于寻址的输出信号,所以8080处理器可寻址的空间大小为65536*8bit。现在假设8080处理器与一个65536字节大小的存储器相连,当处理器复位后,通过在A0~A15输出16个0,把锁存在存储器0000h处的字节(该字节必须是8080指令)读入处理器,这个过程称为取指令

    为了方便使用指令,我们为处理器的每一条指令的操作码都指派了一个助记符,这种助记符只是在我们使用操作码时方便一些,它对于处理器而言是没有帮助的,因为处理器只能识别字节,对于助记符组成的文本一无所知。

    比如Load指令,每条Load指令占3字节,第一个字节是操作码,其后的两个字节是要Load到处理器的操作数的16位地址。

    如果我们用助记符可以把指令转换成下面的形式:

    LDA A,[aaaa]

    这里的A表示处理器中的累加器,aaaa表示存储器中的一个16位地址,如果该存储器是8位,则取到的是一个字节。

    8080处理器内部除了累加器外还设置了6个寄存器,寄存器其实就是一个锁存器,可以存放一个字节的数。处理器可以把数据从存储器读入寄存器,也可以把数据从寄存器存回存储器。在8080处理器中用B、C、D、E、H和L来表示新增的6个寄存器。通常把H和L合起来构成一个16位的寄存器对,H用来保存高字节而L用来保存低字节。这个16位值通常用来对存储器寻址

    那么寄存器内的数据可不可以互相转移呢?答案是可以的,使用MOV指令就可以把一个寄存器的内容转移到另一个寄存器。

    来看这条指令:MOV B,[ HL ],这条MOV指令把存储器中的一个字节转移到B寄存器,这个字节的地址存放在寄存器对HL里面,这种方式叫做间接寻址

    有了间接寻址,那么直接寻址是什么样的呢?

    LAD A,[aaaa][aaaa]是一个16位地址,这个地址不需要存储在寄存器中,而是通过处理器的A0~A15管脚信号得到,这种寻址方式就叫做直接寻址

    由于处理器中的寄存器众多,所以MOV指令在8080处理器中多达32条。

    这里写图片描述

    上面说了,处理器只认识操作码字节,一个操作码字节是一个单字节指令。8080处理器中还有另外一种双字节MOVE指令,称为MVI(传送立即数指令)。第一个字节为操作码,第二个字节是数据。这个数据从存储器转移到寄存器,或者从存储器的一个单元转移到另一个单元。

    例如,当指令MVI E,37h执行后,寄存器E存放的字节是37h;又如指令MVI [HL],37h执行后,会将37h这个数存储到储存器的某个地址,这个地址存储在寄存器[HL]中。这是要介绍的第三种寻址方式:立即数寻址

    总结下来三种寻址方式就是:

    • 直接寻址:LAD A,[aaaa]
    • 间接寻址:MOV B,[HL]
    • 立即数寻址:MVI E,37h or MVI [HL],37h

    立即寻址就是指令当中自带数据,直接读取,最快,当立即数寻址时,只允许源操作数为立即数,目标操作数必须是寄存器存储器,其作用是给寄存器或存储单元赋值。

    直接寻址就是操作数一般存放在存储器的中,而操作数的地址在指令中给出,即指令中存放的是操作数的地址,直接解析这个地址。

    间接寻址的指令中存放的是地址的地址,或者是存放地址的寄存器,最慢。

  • 相关阅读:
    重新看待Jar包冲突问题及解决方案
    一步步完成Maven+SpringMVC+SpringFox+Swagger整合示例
    [ACM] POJ 1611 The Suspects (并查集,输出第i个人所在集合的总人数)
    James Whittaker的软件測试戒律(二)
    <html>
    andorid ndk 各种坑啊 记录下
    Android的ProgressBar进度条-android学习之旅(三十一)
    Android Jsoup 爬取网页数据
    iOS笔记UI--使用storyboard加入约束
    使用appledoc 生成技术API文档具体解释
  • 原文地址:https://www.cnblogs.com/KKSJS/p/9622809.html
Copyright © 2011-2022 走看看