汇编语言(第3版)- 学习笔记 - 第1章-基础知识

这篇具有很好参考价值的文章主要介绍了汇编语言(第3版)- 学习笔记 - 第1章-基础知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1 机器语言

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

1.2 汇编语言的产生

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

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

汇编语言(第3版)- 学习笔记 - 第1章-基础知识

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开始到最大位置,为每个格子分配了序号。这就是内存的地址。
知道目标的数据的地址(在第几格)就可以去读写数据。

汇编语言(第3版)- 学习笔记 - 第1章-基础知识

1.7 CPU对存储器的读写

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

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

1.8 地址总线

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

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 只需要转一次。

汇编语言(第3版)- 学习笔记 - 第1章-基础知识汇编语言(第3版)- 学习笔记 - 第1章-基础知识

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

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

汇编语言(第3版)- 学习笔记 - 第1章-基础知识

1.15 内存地址空间

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

汇编语言(第3版)- 学习笔记 - 第1章-基础知识
在图 1.8 中,所有的物理存储器被看作一个由若干存储单元组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU 在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
汇编语言(第3版)- 学习笔记 - 第1章-基础知识
图 1.9 告诉我们,
读取地址0~9FFFF的内存单元,实际上是读取主随机存储器中的数据;
向地址A0000B~FFFF的内存单元写入数据相当于向显存写入数据,可以显示在屏幕上。
C0000~FFFFF只读存储器,写入操作无效

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

空闲内存-可做练习 0:200-0:2FF

  • 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类总线,对实际的连接情况不做讨论。

参考资料

百度百科:电平信息文章来源地址https://www.toymoban.com/news/detail-430263.html

到了这里,关于汇编语言(第3版)- 学习笔记 - 第1章-基础知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 8086 汇编语言知识点梳理

    机器语言是机器指令的集合 机器指令是一台机器可以正确执行的命令 机器指令由一串二进制数表示 汇编语言的主体是汇编指令 汇编指令是机器指令便于记忆的书写格式 汇编指令是机器指令的 助记符 汇编指令:机器码的助记符,有对应的机器码 伪指令::没有对应的机器

    2024年02月08日
    浏览(46)
  • 单片机----汇编语言入门知识点

    目录 汇编语句的格式 汇编语句的两个基本语句 子程序的调用 查表程序设计 1.x和y均为单字节数的查表程序设计 2.x为单字节数y为双字节数的查表程序设计 3.x和y均为双字节数的查表程序设计 分支转移程序设计 1.单分支选择结构 2.多分支选择结构 循环程序设计 (1) 计数循环控

    2024年04月28日
    浏览(40)
  • 基础汇编语言编程

    目录 什么是汇编语言? 工程搭建 新建工程 环境设置  测试是否成功  正式学习汇编语言 数据处理指令 填充,加,减,乘  思考:我们可以看到R0寄存器可以存放8位十六进制数,那么0x12345678能不能用mov存入? 与,或,异或,左移,右移 思考:UART通信过程中为什么数据位规

    2024年02月08日
    浏览(32)
  • 64位AT&T汇编语言学习第一课:汇编和链接

    源文件 exitTest.s 内容如下: 源文件里边放的就是源代码,而我这里源代码是使用汇编语言写的,都是一些人类都可以阅读的字符。之后需要经过汇编器的汇编,变成目标文件(里边存放的是机器语言)。我这里使用的汇编器是GAS汇编器,命令是 as ,命令格式是 as 源文件名

    2024年01月17日
    浏览(42)
  • 嵌入式:ARM汇编语言程序设计基础教程

    ① 合理地分配存储器资源,将前述的目标系统‘数据结构模型’表示到各存储器单元。 ② CPU寄存器数量有限,在程序中,大多数操作都要使用寄存器;并且有的操作使用特定的寄存器(如堆栈操作使用SP/R13等),程序中要合理分配各寄存器的用途。 用计算机语言,对数据结

    2023年04月23日
    浏览(75)
  • 8086汇编语言寄存器清零学习

    mov ax, 0      这样应清零了; sub ax, ax     这样也清了; xor ax, ax     这样也清零了;自己跟自己异或,异或是同则结果为0、不同结果为1;自己和自己,每一位都是相同的,异或后结果为0; and ax, 0     和0相与,这样也清零了; 自己写代码用 xor ax, ax ,用这个就对了,都

    2024年02月11日
    浏览(36)
  • 从零学习开发一个RISC-V操作系统(四)丨RISC-V汇编语言编程

       本系列是博主参考B站课程学习开发一个RISC-V的操作系统的学习笔记,计划从RISC-V的底层汇编指令学起,结合C语言,在Ubuntu 20.04上开发一个简易的操作系统。一个目的是通过实践操作学习和了解什么是操作系统,第二个目的是为之后学习RISC-V的集成电路设计打下一定基础

    2024年01月25日
    浏览(32)
  • 汇编基础知识

    1.汇编工程流程: 汇编指令---编译器---机器码---计算机 2.汇编语言组成:         1.汇编指令      2.伪指令   3.其他符号 3.存储器:          存放指令与数据的容器,也叫内存.         存储器被划分为多个单元,并且从0开始按钮顺序编号,这些编号视为存储器的存储单元的地

    2024年02月06日
    浏览(31)
  • ARM 汇编基础知识

            我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编,因为 Cortex-A 芯片一 上电 SP 指针还没初始化, C 环境还没准备好,所以肯定不能运行 C 代码,必须先用汇编语言设置好 C 环境,比如初始化 DDR 、设置 SP 指针等等,当汇编把 C 环境设置好了以后才可

    2024年02月09日
    浏览(33)
  • 深度学习基础知识笔记

    怎么样提特征 (1)无人驾驶, 计算机视觉 (2)人脸识别 移动端-计算量太大,速度慢,卡。 参数:成千上百万的。 (3)医学 (4)变脸 (5)图像自动上色 有监督的问题, 1 分类: 挑战:照射角度,形状改变,部分遮挡,背景混入 套路:收集数据给定标签,训练分类器

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包