ShuangChenYue ShuangChenYue
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
首页
  • Cpp之旅
  • Cpp专栏
  • Effective_CPP
  • muduo网络库
  • Unix环境高级编程
  • Cpp提高编程
  • 计算机网络
  • 操作系统
  • 数据结构
  • Linux
  • 算法
  • 基础篇
  • MySql
  • Redis
  • 电子嵌入式通信协议
  • 深入浅出SSD
  • 文件系统
  • 汇编语言
  • STM32
  • 随笔(持续更新)
  • Git知识总结
  • Git 创建删除远程分支
  • nvm使用小结
  • 虚拟机固定 IP 地址
  • Shell 脚本学习笔记
  • VScode 插件 CodeGeeX 使用教程
  • KylinV10 将项目上传至 Github教程
  • KylinV10 安装 MySQL 教程(可防踩雷)
  • kylinV10-SP1 安装 QT
  • 高并发内存池
  • USBGUARD 项目编译环境配置
  • Power_Destory 项目
  • U 盘清除工具编译教程
  • 个人博客代码推送教程
  • HTML与CSS
  • JS学习
  • Vue3入门
  • Vue3进阶
  • 黑马Vue3
  • MFC编程随记
  • MFC实现ini配置文件的读取
  • MFC实现点击列表头排序
  • 贴图法美化Button按钮
  • 如何高效阅读嵌入式项目代码
  • NAND Flash
  • ARM 处理器
  • 嵌入式基础知识-存储器
  • 闪存存储和制造技术概述
  • 芯片IO驱动力
  • 主流先进封装技术介绍
  • 虎牙C++技术面经
  • 金山一面复习
  • 完美世界秋招 C++ 游戏开发面经(Cpp部分)
  • 博客搭建
  • 网站收藏箱
  • 电子嵌入式通信协议

  • 深入浅出SSD

  • 文件系统

  • 汇编语言

    • 第1章 基础知识
      • 1.1 机器语言
      • 1.2 汇编语言的产生
      • 1.3 汇编语言的组成
      • 1.4 存储器
      • 1.5 存储单元
      • 1.6 CPU 对存储器的读写
      • 1.7 地址总线
      • 1.8 数据总线
      • 1.9 控制总线
      • 1.10 主板
      • 1.11 接口卡
      • 1.12 各类存储器芯片
      • 1.13 内存地址空间
      • 1.14 总结
    • 第2章 寄存器
    • 第3章 寄存器(内存访问)
    • 第4章 第一个程序
    • 第5章 [BX]和loop指令
    • 第6章 包含多个段的程序
    • 第7章 更灵活的定位内存地址的方法
    • 第8章 数据处理的两个基本问题
  • STM32

  • 嵌入式软件开发
  • 汇编语言
霜晨月
2024-07-24
目录

第1章 基础知识

# 第1章 基础知识

# 1.1 机器语言

机器语言就是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令

# 1.2 汇编语言的产生

  • 汇编语言的主题是汇编指令。
  • 汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。
  • 寄存器:简单来说就是 CPU 中可以存储数据的器件,一个 CPU 可有多个寄存器。AX 是其中一个寄存器的代号,BX 是另一个寄存器的代号。

操作 :寄存器 BX 内容送到 AX 中

机器指令:1000100111011000

汇编指令:mov ax,bx

因为计算机只能读懂机器指令,需要使用编译器将汇编指令编译成机器指令。

image

# 1.3 汇编语言的组成

三类指令组成:

  1. 汇编指令:机器码的助记符,有对应的机器码。
  2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
  3. 其他符号:如 +、-、*、/ 等,由编译器识别,没有对应的机器码。

汇编语言的核心是汇编指令,它决定了汇编语言的特性。

# 1.4 存储器

  • 就是我们平常所说的内存.
  • 磁盘不同于内存,磁盘上的数据或程序如果不读到内存中,就无法被 CPU 使用。

# 1.5 存储单元

  • 存储器会被划分若干个存储单元,每个存储单元从0开始顺序编号,例如一个存储器有128个存储单元,编号从0~127。
  • 计算机最小信息单位是 bit (比特),也就是一个二进制位;
  • 8个 bit 组成一个 Byte,也就是通常讲的一个字节。即8个二进制位;
  • 一个存储器有128个存储单元,它可以存储128个 Byte。

还可用以下单位来计量容量(以下用 B 来代表 Byte):

  • 1KB = 1024 B
  • 1MB = 1024 KB
  • 1GB = 1024 MB
  • 1TB = 1024 GB

# 1.6 CPU 对存储器的读写

CPU 要进行数据的读写,必须和外部器件(芯片)进行下面3类信息的交互:

  1. 存储单元的地址(地址信息)
  2. 器件的选择,读或写的命令(控制信息)
  3. 读或写的数据(数据信息)

通过地址总线,数据总线,控制总线对存储芯片中的数据进行读写。

# 1.7 地址总线

CPU 是通过地址总线来指定存储单元的,所以地址总线能传输多少不同的信息,CPU 就可以对多少个存储单元进行寻址。

假设:一个 CPU 有10根地址总线,如何看寻址情况

一根导线稳定状态有两种,高电平或低电平,即1或0;10根导线则可以传输10位二进制数据,所以最小为0,最大为1023。

# 1.8 数据总线

数据总线的宽度决定了 CPU 和外界的数据传送速度。8根数据总线一次可传1个字节(8位二进制)数据。16跟数据总线一次可传2个字节数据。

# 1.9 控制总线

CPU 通过控制总线实现对外部器件的控制。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。所以,控制总线的宽度决定了 CPU 对外部器件的控制能力。

# 1.10 主板

每一台 PC 中,都有一个主板,通过地址总线,数据总线,控制总线将核心器件和主要器件进行相连

# 1.11 接口卡

计算机系统中,所有可用程序控制其工作的设备,必须受到 CPU 控制,CPU 对外部设备都不能直接控制,比如显示器,音响,打印机等,直接控制这些设备进行工作的是 插在扩展插槽上的接口卡,扩展插槽通过总线和 CPU 相连,接口卡也通过总线和 CPU 进行相连。CPU 通过总线向接口卡发送命令,接口卡根据 CPU 的命令控制外设进行工作

# 1.12 各类存储器芯片

一个 PC 中装有多个存储器芯片,从读写属性中分为

  • RAM(随机存储器):必须带电存储,关机后存储的内容丢失
    • 第一种:存放 CPU 和绝大部分程序和数据,主随机存储器一般由两个位置上的 RAM 组成,装在主板上的 RAM 和装在扩展槽上的 RAM;
    • 第二种:接口卡上的 RAM,某些接口需要对大批量数据,数据数据进行暂时存储,在其上安装 RAM,最典型的就是显卡上的 RAM,称之为 显存 ,将要写入的内容写入显存中,显示卡随时将显存的数据在显示器上输出。
  • ROM(只读存储器):只能读取,不能写入,关机之后内容不丢失
    • 装有 BIOS(Basic Input/Output System,基本输入/输出系统)的 ROM,BIOS 是主板和各类接口卡(如显卡,网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入和输出。例如:主板的 ROM 中存储的主板的 BIOS(系统BIOS),显卡上存储着显卡的 BIOS,网卡上安装网卡的 BIOS。

image

# 1.13 内存地址空间

上述的那些存储器,在物理上是独立的器件,但是一些两点比较相同

  • 都和 CPU 总线进行相连
  • CPU 对它进行读写时候都是通过控制线发出内存读写命令

image

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

# 1.14 总结

总结:

  1. 汇编指令是机器指令的助记符,同机器指令一一对应
  2. 每一种 CPU 都有自己的汇编指令集
  3. CPU 可以直接使用的信息在存储器中存放
  4. 在存储器中指令和数据没有任何区别,都是二进制信息
  5. 存储单元从零开始顺序编号
  6. 一个存储单元可以存储8个bit,即8位二进制数
  7. 1Byte = 8bit 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 类比:2^10 1KB 2^20 1MB 2^30 1GB
  8. 每一个 CPU 芯片都有许多管脚,这些管脚和总线进行相连,也可以说,这些管脚引出总线。CPU 引出3种总线的宽度标志这个 CPU 的不同方面的性能:
  9. 地址总线宽度决定了 CPU 的寻址能力
  10. 数据总线的宽度决定了 CPU 和其它器件进行数据传送时的一次数据传送量
  11. 控制总线宽度决定了 CPU 对系统中器件的控制能力
  12. 内存地址空间:使用汇编语言编程时候,必须从 CPU 的角度考虑问题,对 CPU 来说,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受 CPU 的寻址能力限制,这个逻辑 CPU 就是我们所说的内存地址空间

习题:

(1)1个 CPU 的寻址能力为 8KB,那么它的地址总线的宽度为 13 位。

答:8KB = 8*1024 Byte = 2^3^ ✖ 2^10^ = 2^13^ Byte 所以13位。

(2)1KB 的存储器有 1024 个存储单元,存储单元的编号从 0 到 1023 。

答:一个存储字长为 8bit,1KB = 1024 Byte = 1024 * 8 bit 有1024 存储单元。

(3)1KB 的存储器可以存储 8192(2^13^) 个bit, 1024 个 Byte。

答:1KB = 1024 Byte = 1024 * 8 bit 。

(4)1GB 是 1073741824 (2^30^) 个 Byte、1MB 是 1048576(2^20) 个 Byte、1KB 是 **1024(2^10^)**个 Byte。

(5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64 (KB)、 1 (MB)、 16 (MB)、 4 (GB)。

答:16根:2^16^ = 2^10^ * 2^6^ 。2^10^ 是 1024 就是 1KB。然后乘 2^6^ = 64 就是 64 KB,后面依此类推。

(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:

1 (B)、 1 (B)、 2 (B)、 2 (B)、 4 (B)。

答:8根就是 8bit = 1B ,后面依此类推。

(7)从内存中读取 1024 字节的数据,8086 至少要读 512 次,80386 至少要读 256 次。

答:8086 数据总线宽度为16 1024 * 8 /16 = 512 80386 数据总线宽度为32 1024 * 8 /32 = 256

(8)在存储器中,数据和程序以 二进制 形式存放。

NTFS文件系统
第2章 寄存器

← NTFS文件系统 第2章 寄存器→

Theme by Vdoing | Copyright © 2023-2024 霜晨月
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式