汇编 - 基础知识

文章目录

  • 前言
  • 1. 组成
  • 2. 指令和数据
  • 3. 存储器读写
  • 4. 地址总线
  • 5. 数据总线
  • 6. 控制总线
  • 7. 计算机组成
    • 7.1存储器芯片
  • 8. 内存地址空间
  • 总结


前言

  汇编语言是直接在硬件之上工作的编程语言, 首先了解硬件系统的结构, 才能有效地应用汇编语言对其编程; 值得注意的是, 汇编指令是机器指令便于记忆的书写格式. 此处的汇编语言版本为8086CPU的MASM宏汇编版本


1. 组成

  1. 编译器: 将汇编指令转换为机器指令的翻译程序
编写
编译
运行
程序员
汇编指令
编译器
机器码
计算机
  1. 汇编程序组成:
    • 汇编指令: 机器码的助记符
    • 伪指令: 没有对应的机器码, 起引导编译器的作用, 计算机不执行
    • 其他符号: 没有对应的机器码, 如+、-、*、/等, 由编译器识别
      核心是汇编指令

2. 指令和数据

  1. 寄存器位于CPU内, 寄存器暂存两个字节的数据作为中转, 提供给CPU运算;
    值得注意的是, 指令和数据则位于存储器中, 即内存中. 切记指令不存储在CPU中, 而是存储在内存中
  2. 在内存中, 指令和数据没有区别
    ; 明显的, 解析角度不同, 意义不同
    1000100111011000 -> 89D8H (数据)
    1000100111011000 -> mov ax, bx (程序)
    
  3. 存储器被划分为若干个存储单元, 从0开始编号, 一个存储单元存储8个bit, 即1个Byte, 以字节为单位
  4. 2 10 2^{10} 210 = 1024, 1B = 8b, 1KB = 1024B, 1MB = 1024KB, 1GB = 1024GB, 1TB = 1024GB

3. 存储器读写

  1. CPU对存储器的读写, 需要按顺序进行下面3类信息的交互:
    • 向内存发送, 存储单元的地址(地址信息)
    • 向内存发送, 读或写的命令(控制信息)
    • 内存返回, 读或或写的数据(数据信息)
  2. 连接CPU和其他元器件的导线称之为总线, 存储器读写交互的3类信息通过它传递, 分为地址总线, 控制总线, 数据总线
    • 举例, CPU从3号单元中读取数据的过程如下, 注意, 数据总线居中汇编 - 基础知识_第1张图片

4. 地址总线

  1. CPU通过地址总线, 指定存储器单元
  2. 一根导线可以表示一个0或1, 故N根地址总线(即地址总线宽度为N), 可以寻址 2 N 2^N 2N次方个内存单元
    • 如图汇编 - 基础知识_第2张图片

5. 数据总线

  1. 数据总线的宽度决定了CPU和外界的数据传输速度.
  2. 8根数据总线一次传送一个字节的数据, 16根数据总线传送两个字节
    • 假设传送89D8 这个数据, 若数据总线宽度为16, 则一次传送; 宽度为8, 则分两次, 先传高八位, 后传低八位, 即先D8, 后89

6. 控制总线

  控制总线是一些不同控制线的集合, 有多少根总线, 就意味着CPU提供了对外部器件的多少种控制.

7. 计算机组成

  1. 主板上有核心器件和一些主要器件, 通过总线相互连接, 包括CPU, 存储器, 外围芯片组, 扩展插槽, 其中扩展插槽一般插有RAM内存条和个内接口卡
  2. 接口卡和各种外设相连, CPU通过总线控制接口卡, 从而控制外设

7.1存储器芯片

  1. 从读写属性上看分为: 随机存储器(RAM)和只读存储器(ROM)
    • 随机存储器可读可写, 但需带电存储, 关机后存储内容即丢失
    • 只读存储器只能读取不能写入, 内容不会丢失
  2. 从功能和连接上看分为:
    • 随机存储器: 存储大部分程序和数据, 主要为主板和扩展插槽上的RAM
    • 装有BIOS的ROM, BIOS(Basic Input/Output System, 基本输入 / 输出系统)
      • BIOS属于底层的软件系统, 可以进行基本的输入输出
      • 有多种BIOS, 比如主板上的系统BIOS, 显卡上的BIOS, 以及网卡上的BIOS
    • 接口卡上的RAM: 某些接口卡需要对大批量输入, 输出数据进行暂时存储, 其上装有RAM, 如显卡上的RAM又被称为显存
    • 如图
插有
插有
插有
连接
连接
插有
CPU
主存储器RAM
装有系统BIOS的主存储器
扩展插槽
内存条RAM
显存RAM
装有显卡BIOS的ROM
显示器
装有网卡BIOS的ROM

8. 内存地址空间

   CPU在操控各类存储器芯片时, 将它们视为一个总的逻辑存储器, 即内存地址空间 每个物理存储器在这个逻辑存储器中占有一段地址空间, CPU在这段地址空间中读写数据, 实质上是在相应物理存储器中读写数据

  1. 00000H~9FFFFH为主随机存储器的地址空间
  2. A0000H~BFFFFH为显存地址空间
  3. C0000H~FFFFFH为各个ROM的地址空间

向显存输出一段信息, 必须把这段信息写入显存对应的地址空间

明显的, 只读寄存器对应地址空间的数据只能读取, 不能写入

总结

在存储器(内存)中指令和数据没有区别, 解析不同, 意义不同

一根地址总线控制一个存储单元, 一个存储单元存储8个bit, 即一个字节

1B = 8b, 1KB = 1024B, 1MB = 1024KB, 1GB = 1024GB, 1TB = 1024GB

在操作中, 将各类存储器视为一个逻辑存储器

还请大家动动发财的小手, 给我点点赞, 蟹蟹

你可能感兴趣的:(汇编语言,汇编)