• 汇编 | 寄存器内存访问内存中字的存储


    前几篇文章中,主要从CPU如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。这一章中,我们从访问内存的角度继续学习几个寄存器。

    CPU中,用 (16)​ 位寄存器来存储一个字。高 (8)​ 位存放高位字节,低 (8) 位存放低位字节。

    在内存中存储时,由于内存单元是字节单元(一个单元存放一个字节),则一个字要用两个地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。

    比如我们从 (0) 地址开始存放 (20000)​ ,这种情况如图3.1 所示。

    容量:一个 字 = 2 个字节

    先说一下,字单元的概念:字单元,即存放一个字型数据(16 位),由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。

    在图3.1中,我们用 (0, 1)​ 两个内存单元存放数据 (20000(4E20H), 0, 1)​ 两个内存单元用来存储一个字,这两个单元可以看作一个起始地址为 (0)​ 的字单元(存放一个字的内存单元,由 (0, 1)​ 两个字节单元组成)。对于这个字单元来说,(0)​ 号单元是低地址单元,(1)​ 号单元是高地址单元,则字型数据 (4E20H)​ 的低位字节存放在 (0)​ 号单元中,高位字节存放在 (1)​ 号单元中。同理,将 (2, 3) 号单元看作一个字单元,它的起始地址为 (2)。在这个字单元中存放数据 (18(0012H)),则在 (2) 号单元中存放低位字节(12H),在 (3) 号单元中存放高位字节 (00H)

    这里涉及新的概念:字单元,即存放一个字型数据( (16) 位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。

    在以后的文章中,将起始地址为 (N) 的字单元简称为 (N) 地址字单元。比如一个字单元由 (2. 3) 两个内存单元组成,则这个字单元的起始地址为 (2) ,我们可以说这是 (2)​ 地址字单元.

    问题3.1

    对于图3.1

    (1) (0)​ 地址单元中存放的字节型数据是多少?

    (2) (0)​​ 地址字单元中存放的字型数据是多少?

    (3) (2)​​ 地址单元中存放的字节型数据是多少?

    (4) (2)​​ 地址字单元中存放的字型数据是多少?

    (5) (1)​​​ 地址字单元中存放的字型数据是多少?

    思考后看分析。


    [QAQ ]


    分析:

    (1) (0)地址单元中存放的字节型数据:(20H);

    (2) (0)地址字单元中存放的字型数据:(4E20H);

    (3) (2)地址单元中存放的字节型数据:(12H);

    (4) (2)地址字单元中存放的字型数据:(0012H);

    (5) (1) 地址字单元,即起始地址为两个单元存储一个字型数据,高位放在即:(4EH),它们组成字型数据是(124EH) .的字单元,它由 (1) 号单元和 (2) 号单元组成,用这 (2) 号单元中,即:(12H),低位放在1号单元中,大小为:(46860)

    从上面的问题中我们看到,任何两个地址连续的内存单元,(N)号单元和(N+1)号单元,可以将它们看成两个内存单元,也可看成一个地址为(N)的字单元中的高位字节单元和低位字节单元。

    The desire of his soul is the prophecy of his fate
    你灵魂的欲望,是你命运的先知。

  • 相关阅读:
    如何才能成为一个真正的编程高手?
    C#中base 关键字的作用
    线程间值的传递
    C#多线程 线程的启动
    C#接口的作用(经典)
    IEnumerable和IQueryable和Linq的查询
    CSS-定位
    HTML 常用标签
    CSS十大选择器
    前端开发师职业生涯入坑指南
  • 原文地址:https://www.cnblogs.com/RioTian/p/15364295.html
Copyright © 2020-2023  润新知