《汇编语言》- 读书笔记 - 第1章-基础知识

  • 1.1 机器语言
  • 1.2 汇编语言的产生
  • 1.3 汇编语言的组成
  • 1.4 存储器
  • 1.5 指令和数据
  • 1.6 存储单元
  • 1.7 CPU对存储器的读写
  • 1.8 地址总线
    • 主流CPU的寻址能力
  • 1.9 数据总线
  • 1.10 控制总线
  • 检测点 1.1
  • 1.11 内存地址空间(概述)
  • 1.12 主板
  • 1.13 接口卡
  • 1.14 各类存储器芯片
  • 1.15 内存地址空间
  • 1.1~1.10小结
  • 参考资料

1.1 机器语言

机器只认识 01,不同的机器对同一串01的理解还不一样。
(比如喇叭和显示器,具体怎么理解本质上是生产它的人为它定义的一套规则)
01适合机器识别,但不适合人类阅读。

1.2 汇编语言的产生

01这种机器语言人类用着不方便,但又要与机器沟通。
所以人类发明了一套与01对应的汇编语言
人类通过书写汇编指令来描述需求,再使用编译器翻译成机器能识别的01语言。

  1. 汇编指令机器指令一一对应,一个是给人看的,一个是给机器看的。
  2. 程序员—(编写汇编指令)—>编译器—(翻译成机器码)—>计算机。

1.3 汇编语言的组成

汇编语言发展至今,有以下3 类指令组成

组成 说明
汇编指令 机器码的助记符,有对应的机器码。是汇编语言的核心。
伪指令 没有对应的机器码,由编译器执行,计算机并不执行。(方便我们编写代码的临时工们)
其他符号 +-*/等,由编译器识别,没有对应的机器码。

1.4 存储器

CPU控制整个计算机运作并进行计算,需要从内存中读取指令和数据;内存在计算机中的作用仅次于CPU,磁盘上的数据或程序需要读入内存才能被CPU使用。

打个比方:内存就像我们手头的现金,硬盘类似于定期存款或固定资产。相信没有人在跟朋友涮完火锅结账时,对收银说:稍等我卖套房先。

1.5 指令和数据

程序本身就是一串01,把这串01当作一条指令,还是一段数据,取决于你如何使用它。
书中的例子:
1000100111011000 这串机器码。
当成数据来用它表示89D8H
当成指令来用它表示mov ax, bx

(剧透:CPU的寄存器有默认分工。DS:BX 用它时就当它是数据,CS:IP用它时就当它是指令。理论上它们可以指向同一个地方,重复利用这段01。详情见下一章吧)

1.6 存储单元

微机存储器的容量是以Byte(字节)最小单位来计算的。8 个 bit 组成一个 Byte(字节)。
一个存储单元可以存储一个Byte(字节),即 8 个二进制位。

存 储 单 元 中 文 名  说 明
bit 比特(位) 我们使用的物理存储设备上最小的信息单元称为1比特。它是一个二进制单元。要么表示0要么表示1
Byte 字节 Byte = 8bit 。8位组成一个字节。如:11110000, F0
KB 千字节 1KB = 1024B。由于字节是基础单位,所以KB也常简写为K
MB 兆字节 1M = 1024K。简写为M
GB 吉字节 1G = 1024M。简写为G
TB 吉字节 1T = 1024G。简写为T

我们的内存相当于一个只有1列的表格。并且从0开始到最大位置,为每个格子分配了序号。这就是内存的地址。
知道目标的数据的地址(在第几格)就可以去读写数据。

1.7 CPU对存储器的读写

CPU与外部器件交互(标准说法是芯片)进行数据交换,需要三根神经与之联通才能交流。
CPU与外部关联的神经就叫总线。总线由:地址总线+控制总线+数据总线三部分组成。
以向内存读取数据为例:

  1. 控制总线:发送控制命令,告诉内存,我要读取数据。
  2. 地址总线:发送地址信息,告诉内存,我要读取第几格
  3. 数据总线:接受内存返回来的数据。

1.8 地址总线

总线的物理层面就是导线(CPU针脚,内存的金手指与之相连)。
通过总线传输的是电平信息(高电平1或低电平0)。
总线不是独木桥而是多车道。一排01一次性杀过去,对面就会心一笑。。。
可见地址总线车道数量决定了它的寻址能力。
如果一个CPU的地址总线有10条车道 ,那么我们说这个CPU的地址总线宽度为10。
这个CPU最大可以寻找 210 = 1024 个内存单元。

10条车道每条或0或1进行排列组合,可以有1024种,每一种对应一个内存单元。
地址总线按照某一种组合把送信息过去,对面就知道CPU要找的是哪个单元了。

一个CPU有N根地址线,则可以说这个 CPU 的地址总线宽度N。这样的 CPU最多可以寻找2的N次方个内存单元。
寻址能力 = 2 ^ N
寻址能力是指CPU可以访问的最大的内存地址的范围。(从第0个内存单元到第2N个内存单元)

主流CPU的寻址能力

CPU型号 地址总线位数 最大寻址能力
Intel 8086 20 1MB
Intel 80286 24 16MB
Intel 80386 32 4GB
Intel Pentium 32 4GB
Intel Pentium Pro 36 64GB
Intel Pentium II 32 4GB
Intel Pentium III 36 64GB
Intel Pentium 4 36 64GB
Intel Core Duo 36 64GB
Intel Core 2 Duo 36 64GB
Intel Core i3/i5/i7 48 256TB
AMD Athlon/Duron 32 4GB
AMD K6-2/K6-III 32 4GB
AMD Athlon XP 32 4GB
AMD Athlon 64 40 1TB
AMD Phenom II X4/X6 48 256TB

1.9 数据总线

数据传送靠数据总线。数据总线的宽度决定了 CPU 和外界的数据传送速度。(还是拿车道比喻,肯定越多一次运的货越多呗。)
8 根数据总线(8条车道)一次可传送一个 8 位进制数据(即一个字节)。16 根数据总线一次可传送两个字节。

8088CPU 的数据总线宽度为 8,
8086CPU 的数据总线宽度为 16。
向内存中写入数据 89D8H 时:
图1.5 展示了8088CPU 要分两次;
图1.6 展示了8086CPU 只需要转一次。

1.10 控制总线

控制总线是一些不同控制线的集合,它决定了CPU对外部器件的控制能力。有多少根控制总线,就意味着 CPU 提供了对外部器件的多少种控制。
其中,“读信号输出”控制线用于传送读信号,“写信号输出”控制线用于传送写信号。

检测点 1.1

《汇编语言》- 读书笔记 - 检测点 1.1

1.11 内存地址空间(概述)

内存地址空间是CPU可寻址的内存单元范围,由地址总线宽度决定,如CPU地址总线宽度为10,则可寻址1024个内存单元。

1.12 主板

PC机的主板通过总线连接CPU存储器外围芯片组扩展插槽上的RAM内存条和各类接口卡

1.13 接口卡

CPU不能直接控制外部设备,而是通过总线向插在扩展插槽上的接口卡发送命令来间接控制外部设备。

1.14 各类存储器芯片

RAM:随机存储器。可读可写,断电清零。如:内存、显存。
ROM:只读存储器。只读不写,长久不变。如:CD、(显卡、网卡、板)各自的BIOS

注意:随机存储器中的“随机”是指想读哪读哪,不必按顺序从头逐个读取。而不是读到的内容随机。

1.15 内存地址空间

各种存储器都和CPU的总线相连,并且在CPU读写时被当作内存对待,组成逻辑存储器内存地址空间


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

图 1.9 告诉我们,
读取地址0~9FFFF的内存单元,实际上是读取主随机存储器中的数据;
向地址A0000B~FFFF的内存单元写入数据相当于向显存写入数据,可以显示在屏幕上。
C0000~FFFFF只读存储器,写入操作无效

内存地址空间
最终运行程序的是CPU,我们用汇编语言编程的时候,必须要从CPU 的角度考虑问题。对CPU来讲,系统中的所有存储器中的存储单元都处于一个统一的逻辑存储器中,它的容量受CPU 导址能力的限制。这个逻辑存储器即是我们所说的内存地址空间。

  • 0:200-0:2FF 这段地址无人使用。可用作练习。

1.1~1.10小结

  1. 汇编指令是机器指令的助记符,与机器指令一一对应
  2. 每一种CPU都有自己的汇编指令集。
  3. CPU可以直接使用的信息在存储器中存放。(这里注意逻辑存储器的概念,详见1.15 内存地址空间)
  4. 存储器指令数据没有任何区别,都是二进制信息
  5. 存储单元从零开始 顺序编号。(可以将整个内存看作一个一维数组)
  6. 一个存储单元可以存储8个bit,即8位二进制数(也就是一字节)
  7. 1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB
  8. 每一个 CPU 芯片都有许多管脚,这些管脚总线 相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:
    地址总线的宽度决定了CPU的寻址能力;
    数据总线的宽度决定了 CPU与其他器件进行数据传送时的一次数据传送量;
    控制总线的宽度决定了CPU对系统中其他器件的控制能力。
    在汇编课程中,我们从功能的角度介绍了3类总线,对实际的连接情况不做讨论。

参考资料

百度百科:电平信息

《汇编语言》- 读书笔记 - 第1章-基础知识相关推荐

  1. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  2. 【读书笔记】Python编程-基础知识和案例讲解,“笨办法”学Python 3_2020.02.15

    [概述] --书名:"笨办法"学Python 3 --作者:泽德 A.肖 --日期:2020年02月15日 --大事件记录: 截至2月14日24时,据31个省(自治区.直辖市)和新 ...

  3. Python基础教程学习笔记:第一章 基础知识

    Python基础教程 第二版 学习笔记 1.python的每一个语句的后面可以添加分号也可以不添加分号:在一行有多条语句的时候,必须使用分号加以区分 2.查看Python版本号,在Dos窗口中输入&q ...

  4. 《图解TCP/IP》读书笔记一:网络基础知识

    1.5.4 OSI参考模型中各个分层的作用 应用层 为应用程序提供服务并规定应用程序中通信相关的细节. 包括文件传输.电子邮件.远程登录(虚拟终端)等协议. 表示层 将应用处理的信息转换为适合网络传输 ...

  5. 汇编怎么从内存地址写入连续的数字_汇编语言 第一章 基础知识

    系列文章见:Neptune 第一章 基础知识 1.1 机器语言 机器语言是机器指令的集合,机器指令展开来讲就是一台机器可以正确执行的命令. 由图可见,机器语言是十分晦涩难懂和不易查错的. 1.2 汇编 ...

  6. 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)

    鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一) 第零章 计算机概论 0.1 电脑:辅助人脑的好工具 0.1.1 计算机硬件五大组成部分 0.1.2 一切设计的起点: C ...

  7. 《Go语言圣经》学习笔记 第三章 基础数据类型

    <Go语言圣经>学习笔记 第三章 基础数据类型 目录 整型 浮点数 复数 布尔型 字符串 常量 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记, ...

  8. 《Linux内核设计与实现》 第八周读书笔记 第四章 进程调度

    20135307 张嘉琪 第八周读书笔记 第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有 ...

  9. 《Spring实战》读书笔记-第4章 面向切面的Spring

    <Spring实战>是学习Spring框架的一本非常经典的书籍,之前阅读了这本书,只是在书本上写写画画,最近整理了一下<Spring实战>的读书笔记,通过博客的方式进行记录分享 ...

最新文章

  1. 2018-4-7 进化类算法------1、遗传算法(GA)
  2. Java代码在计算机中的三个阶段与反射
  3. django如何调用php接口,使用django集成第三方api开发接口注意事项
  4. SpringMVC常见面试题(5个最常见面试题,回答超详细)
  5. VS2005中ReportViewer 本地模式下报表呈现 入门示例
  6. java signal handler_JAVA优雅停机的实现
  7. Ubuntu13.10上android+idea+scala+sbt环境搭建
  8. Python-1-基础
  9. Android中多次点击开发者模式的实现
  10. 第7章第37节:七图排版:一张背景六张拼合布局 [PowerPoint精美幻灯片实战教程]
  11. win10电脑任务栏软件图标变成白色解决办法
  12. workman php 视频,利用workerman实现webrtc实时音视频通话
  13. 膨胀卷积(Dilated convolutions)(又叫空洞卷积、扩张卷积)
  14. Unity子物体脱离父物体,解除父子关系,子物体不随父物体移动
  15. CentOS7.9 通过 kubeadm1.23.5 安装 K8S
  16. c++ uchar float转换
  17. Java面试题3(jsp)
  18. 一套政务OA系统,助力高效线上办公
  19. 制作一个评选优秀老师和学生的系统,系统根据提示输入类别(老师或学生), 如果是老师则输入姓名和论文数,学生则输入姓名和考试成绩,输入若干人员信息后使用结束符完成输入,程序根据输入的数据列出优秀老师和优
  20. 转载:提高脑力70法

热门文章

  1. git 项目代码上传到服务器上,git 上传代码到服务器
  2. 广州看房网:认购书中的定金可以退吗?
  3. 十大优质国内黄金交易app下载平台排行榜(2022版速览)
  4. Html5个人笔记总结
  5. [转] 毕业生必须知道:干部身份、三方协议、派遣证(不因无知而后悔)
  6. gearman mysql_gearman mysql持久化
  7. 不同网段间打印机共享的方法几种
  8. jsp 页面使用if,else逻辑判断
  9. 和ts一般怎么玩_RW惜败微博TS:渡劫大师尽力了,就连KPL官方解说都对其感到惋惜...
  10. MySQL高级篇知识点——索引优化与查询优化