当前位置: 首页 > news >正文

【汇编】内存的读写与地址空间、寄存器及数据存储

文章目录

  • 前言
  • 一、CPU对存储器的读写
    • 1.1 cpu对存储器的读写如何进行?
    • 1.2 演示
  • 二、内存地址空间
  • 三、将各类存储器看作一个逻辑存储器——统一编址
      • 内存地址空间的分配方案
  • 三、CPU的组成
    • 寄存器是CPU内部的信息存储单元
    • 通用寄存器--AX为例
    • “横看成岭侧成峰“
  • 四、“字”在寄存器中的存储
    • 4.1 “字”是什么东西?
    • 4.2 在8086中
  • 总结


前言

在计算机体系结构中,内存的读写操作是一项关键任务,涉及到程序的执行、数据的存储和处理。同时,理解地址空间的概念对于编写有效的程序至关重要。本文将探讨汇编语言中的内存读写过程以及地址空间的概念,帮助读者更深入地理解计算机内部的运作机制。


一、CPU对存储器的读写

1.1 cpu对存储器的读写如何进行?

CPU要想进行数据的读写,必须和外部器件进行三类信息的交互:
存储单元的地址
(地址信息)
器件的选择,读或写命令
(控制信息)
读或写的数据
(数据信息)

1.2 演示

机器码: 101000000000001100000000
16进制:A00300
汇编指令:MOV AL,[3]
含义:从3号单元读取数据送入寄存器AL

在这里插入图片描述
首先,要读取的地址信息先进入内存找到对应的数据存储单元。找到了3,里面的数据为08
接下来,控制器发出读质量。3号单元的08顺着数据线给了我们存放数据的器件

二、内存地址空间

什么是内存地址空间
CPU地址总线宽度为N,寻址空间为2NB
8086CPU的地址总线宽度为20,那么可
以寻址1MB个内存单元,其内存地址空
间为1MB。

从CPU角度看地址空间分配:
在这里插入图片描述
在这里插入图片描述

三、将各类存储器看作一个逻辑存储器——统一编址

所有的物理存储器被看作一个由若干存储
单元组成的逻辑存储器;
每个物理存储器在这个逻辑存储器中占有
一个地址段,即一段地址空间;
CPU在这段地址空间中读写数据,实际上
就是在相对应的物理存储器中读写数据。

在这里插入图片描述

内存地址空间的分配方案

在这里插入图片描述

三、CPU的组成

运算器进行信息处理;
寄存器进行信息存储;
控制器协调各种器件
进行工作;
内部总线实现CPU内
各个器件之间的联系。

在这里插入图片描述

寄存器是CPU内部的信息存储单元

8086CPU有14个寄存器:
通用寄存器:AX、BX、CX、DX
变址寄存器:SI、DI
指针寄存器:SP、BP
指令指针寄存器: IP
段寄存器:CS、SS、DS、ES
标志寄存器:PSW
共性
8086CPU所有的寄存器都是16位的,
可以存放两个字节

在这里插入图片描述

通用寄存器–AX为例

一个16位寄存器存储一个16位的数据
最大值?
2^16-1
即是所有位都写1
在这里插入图片描述
例:在AX中存储18D
18D
— 12H
— 10010B

在这里插入图片描述

再例:在AX中存储20000D
20000D
— 4E20H
— 0100111000100000B

在这里插入图片描述

“横看成岭侧成峰“

问题
8086上一代CPU中的寄存器都是8位的,如何保证程序的兼容性?

方案
通用寄存器均可以分为两个独立的
8位寄存器使用

如下面这样:
在这里插入图片描述
细化
AX可以分为AH和AL
BX可以分为BH和BL
CX可以分为CH和CL
DX可以分为DH和DL

四、“字”在寄存器中的存储

4.1 “字”是什么东西?

当我们谈论计算机存储中的“字”,它其实就是一种计量单位,用来描述在计算机中处理的数据大小。一个字通常由一串二进制数字组成,它可以是8位(一个字节)、16位、32位或者64位长,具体取决于计算机体系结构。

寄存器是计算机内部的小而快速的存储空间,就像大脑中的速记本。这里的“字”是指寄存器可以一次性处理的数据单元大小。比如,一个16位的寄存器可以存储或处理16位长的数据,而一个32位的寄存器可以处理更长的数据。

在寄存器中,字按照其长度被存储和处理。就像小抽屉里能容纳的物品大小不同一样,不同长度的字在寄存器中占据的空间也不同。这些“抽屉”以二进制形式存储数据,所以一个8位的寄存器可以容纳8个二进制位,而16位寄存器则能容纳16个,以此类推。计算机通过这些位来存储和处理数字、字符、图像或者指令等各种信息。

4.2 在8086中

8086是16位CPU
8086的字长(word size)为16bit
一个字(word)可以存在一个16位寄存器中
这个字的高位字节存在这个寄存器的高8位寄存器
这个字的低位字节存在这个寄存器的低8位寄存器

在这里插入图片描述


总结

内存的读写与地址空间是计算机体系结构中的核心概念。通过汇编语言,程序可以直接操作内存,实现对数据的灵活控制。地址空间的概念则为程序提供了一个有序的内存结构,使得不同部分的数据有序地存储在内存中。深入理解这些概念,有助于程序员编写出更高效、可靠的程序,充分利用计算机的内存资源。在今后的学习和开发过程中,对于内存和地址空间的理解将发挥重要作用。

http://www.lryc.cn/news/230431.html

相关文章:

  • DSP生成hex方法
  • GZ038 物联网应用开发赛题第7套
  • ELK之Logstash解析时间相差8h的问题
  • uniapp+vite+vue3开发跨平台app,运行到安卓模拟器调试方法
  • Ubuntu诞生已经19年了
  • 跟着基金买,别墅靠大海?买基金重仓股票,会破产吗?| 附最新选股结果
  • 【教3妹学编辑-mysql】mybatis查询条件遇到的坑及解决方案
  • 032-从零搭建微服务-定时服务(一)
  • 精通Nginx(11)-缓存
  • 用excel计算矩阵的乘积
  • 【微软技术栈】C#.NET 中使用依赖注入
  • 开启学历新征程,电大搜题助您轻松获取知识
  • Redis 安装
  • Windows GitBash解决Github添加密钥时提示Key is already in use的问题
  • 第1关:简单查询
  • Android设计模式--Builder建造者模式
  • css实现鼠标悬停时元素的显示与隐藏
  • 天气越来越寒冷,一定要注意保暖
  • 03 # 类型基础:动态类型与静态类型
  • Python编程——模块、包和__init__.py
  • 220kV110kV10kV变电站初步设计
  • Git企业开发级讲解(一)
  • 【微信支付通知】对resource解密 AEAD_AES_256_GCM算法工具类
  • JVM虚拟机:垃圾回收之三色标记
  • 唯坚持而已
  • 【大语言模型】Docker部署清华大学ChatGLM3教程
  • 详解 KEIL C51 软件的使用·设置工程·编绎与连接程序
  • 小程序实现语音识别功能
  • 判断两层对象中是否有空的value值
  • 【SQLite】环境安装