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

news2024/10/6 14:38:04

《汇编语言》- 读书笔记 - 第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 8086201MB
Intel 802862416MB
Intel 80386324GB
Intel Pentium324GB
Intel Pentium Pro3664GB
Intel Pentium II324GB
Intel Pentium III3664GB
Intel Pentium 43664GB
Intel Core Duo3664GB
Intel Core 2 Duo3664GB
Intel Core i3/i5/i748256TB
AMD Athlon/Duron324GB
AMD K6-2/K6-III324GB
AMD Athlon XP324GB
AMD Athlon 64401TB
AMD Phenom II X4/X648256TB

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

参考资料

百度百科:电平信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/526277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python基础教程】csv文件的写入与读取

✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:python基础教程 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 csv文件读写 csv的简单介绍…

MAC怎么获取文件路径 MAC获取文件路径的四种方法

MAC怎么获取文件路径介绍 方法一:最简单的方法 右键文件或者文件夹,选择显示简介 2在弹出来的窗口中找到位置,即为路径,在mac 10.10之前的系统是正常的路径,10.10开始是小箭头代替/显示,注意&#xff0c…

Git操作不规范,战友提刀来相见。

年终奖都没了,还要扣我绩效,门都没有,哈哈。 这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。 文末留言抽奖,聊聊你的年终奖。 问题描述 小A和…

2023年最新Python安装详细教程

目录 一、python官网 二、在官网的Downloads栏目,选择对应的操作系统 三、进入windows对应的页面,选择python版本 (1)选择python的稳定发布版本Stable Releases (2)下载python的安装程序Windows Installer 四、运行安装python的安装程序Windows Install…

【郭东白架构课 模块二:创造价值】25|节点四:架构规划之需求确认

你好,我是郭东白。 上节课我们讲了架构规划这个环节的第一个部分,也就是统一语义。那么这节课我们就来讲第二个部分——需求确认。 需求确认与统一语义的过程是密不可分的。需求确认是在统一语义赋能之下进行的,所以两者并不是先后顺序的关系…

【模拟IC】MOM 电容 和 MIM 电容的简介与比较

文章目录 一、MIM和MOM电容简介1、MIM (Metal-Insulator-Metal)电容2、MOM(Metal-Oxide-Metal)电容 二、 先进工艺下,MIM 和 MOM 电容的比较1、单位面积容值2、工艺实现和电压系数3、电容密度受频率的影响(稳定性)4、自谐振频率随面积的变化5、品质因数6…

ChatGPT火爆科研圈,登上《Nature》《Science》正刊

ChatGPT火出圈了,几乎涉及到各行各业的每个领域,科研圈更甚。 《Science》期刊主编H. HOLDEN THORP发表关于ChatGPT的社论: “ChatGPT is fun, but not an author”。 “ChatGPT 很好玩,但不是作者” 文章指出,许多担忧…

JavaWeb-CSS的盒模型与弹性布局

目录 CSS的盒模型边框内边距外边距块级元素水平居中 弹性布局常用的一些属性justify-contentalign-items CSS的盒模型 每一个HTML就相当于一个矩形的"盒子". 这个盒子由以下几个部分组成 边框 border内容 content(下图中间蓝色部分)内边距 padding外边距 margin 边…

【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

“未来的软件长什么样?” 一位妹子产品经理问我:“你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思。” 我看着眼前的产品经理,她是一位比较年轻干练的女强人类型,1.65的身材…

Mac软件打开提示:已损坏,无法打开。您应该将它移到废纸娄 怎么解决?

新入手的苹果电脑打开软件出现:“已损坏,无法打开。您应该将它移到废纸娄” 或 “已损坏,打不开。推出磁盘映像”。这个怎么解决? 第一部分: 1、点菜单栏搜索图标,输入:终端 ,找到后…

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C++ 大学B组题解

2022 第十三届蓝桥杯大赛软件赛省赛(第二场),C/C 大学B组题解 文章目录 第1题 —— 练习 (5分)第2题 —— 三角回文数 (5分)第3题 —— 卡片 (10分)第4题 —— 考勤刷卡 …

软考A计划-真题-分类精讲汇总-第九章(数据结构与算法基础)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Unity VR开发教程 OpenXR+XR Interaction Toolkit (一) 安装和配置

文章目录 📕前言❓什么是 OpenXR❓什么是 XR Interaction Toolkit 📕教程说明📕第一步:导入 OpenXR📕第二步:导入 XR Interaction Toolkit⭐导入 Starter Assets⭐添加 Preset⭐设置 Preset Manager 的 Fil…

VLAN(含配置命令行)

一、VLAN的概念及优势 虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得…

分布式计算实验4 随机信号分析系统

一、实验要求 利用MOM消息队列技术实现一个分布式随机信号分析系统,具体要求: 1.随机信号产生器微服务每隔100毫秒左右就产生一个正态分布的随机数字,并作为一个消息发布。 2.一个随机信号统计分析微服务,对信号进行如下分析&a…

【开发工具 - vscode】vscode配置C/C++运行环境

【开发工具 - VSCode】vscode配置C/C环境 准备工作第一步 下载vscode第二步 下载mingw第三步 将mingw添加至系统变量中第四步 打开VsCode安装一下必要的插件 正式开始配置第一步 新建个存放C/C文件的文件夹,并新建个cpp文件配置方法一 借助run code 插件的配置方法 …

c语言平方(c语言平方怎么打)

C语言中怎么求平方 a^6 是a和6的异或,并不是5的6次幂。 你的程序会如下计算: 5是101 ,6是110,你的答案你一定是011,也就是3~C语言中^是指抑或运算符,不是求幂的。你要求平方就 ba*a;6次方就乘6次。#include…

java调用chatgpt接口,实现专属于自己的人工智能助手

文章目录 前言导包基本说明请求参数响应参数创建请求和响应的VO类 代码编写使用最后说明 前言 今天突然突发奇想,就想要用java来调用chatget的接口,实现自己的聊天机器人,但是网上找文章,属实是少的可怜(可能是不让发吧)。找到了…

Unity鼠标带动物体运动的三种方法

目录 第一种:物体跟随鼠标移动。 第二种:鼠标拖动物体运动。 第三种:鼠标点到哪,物体运动到哪。 第一种:物体跟随鼠标移动。 描述:鼠标左键点击物体,将物体拾起,松开鼠标左键&…

每日一练蓝桥杯C语言:2020年真题题集(B组)

在这里我给大家推荐一款不错刷算法学习网站:点击这处链接牛客网;牛客网作为国内内容超级丰富的 IT 题库,各种东西看的我眼花缭乱,题库面试学习求职讨论大厂内推等等服务,堪称"互联网求职神器"。它好就好在不…