汇编语言 第一章 笔记
汇编基础知识
汇编语言的组成
汇编指令
伪指令
一些符号
存储器
概念: 也就是我们平常所说的运行内存;指令和数据在内部存储器中存放;磁盘上的数据不读取到内存中,无法被CPU使用。 目的: 想要编写出优秀的汇编程序,首先我们要了解CPU从内存中如何读取与写入数据。所以内存是汇编重点关注的部分。
必要扩展: 一类是内部存储器,一断电就会把记住的东西丢失;一类是外部存储器,断了电也能存住。 内部存储器:也就是内存,存储信息速度快,断电后存储内容全部丢失。 外部存储器:主要是磁盘,它所存储的信息不受断电的影响,但是它的速度相对于内存就慢得多了。磁盘的存储信息不受断电的影响,存取速度相对于内存慢得多了。 磁盘又分为两类: 一类是硬盘,一类是软盘。
指令和数据
概念: 在内存或者磁盘上,指令和数据都是二进制信息,没有任何区别;区分称呼为指令和数据是为了安全和逻辑结构清晰;
必要扩展: 二进制和汇编指令是一一对应关系,也就是说,一条二进制信息对应唯一一条汇编指令。 疑问: 指令和数据都是应用上的概念。汇编语言,通过编译器编译,最后送给CPU的都是二进制数,那么CPU在一堆纷繁复杂的二进制,0110000110001中如何区分指令和数据呢? 每台机器的指令,其格式和代码所代表的含义都是硬性规定的,故称之为面向机器的语言,也称为机器语言。二进制,作为一种机器码,计算机可以直接识别,不需要进行任何翻译。 计算机硬件主要通过不同的时间段来区分指令和数据,即:取指周期(或取指微程序)取出的既为指令,执行周期计算机加载的第一条肯定是指令,然后根据这条指令去取二进制数,如果这条指令要取操作数,那么取出来的就是操作数;如果这条指令要取下一条指令,那么取出来得就是指令。 把指令和数据分开放是为了安全和逻辑结构清晰。 虽然指令和数据存放的格式一样,但是访问他们的时机不同。在取指令时期,cpu通过指令流取指令,存放在指令寄存器, 然后解释并执行指令;在执行指令时期,cpu通过数据流取数据, 存放在数据寄存器。 所以指令流取的是指令,数据流取的是数据。
存储单元
概念: 一个存储单元 = 一个字节(Byte) 一个字节 = 8个 比特(b) 一个比特 = 一个二进制位 字节是微机的最小存储单位。
CPU对存储器的读写
概念: cpu与外部器件的交互需要知道,要交互哪个器件,数据地址在哪,操作的对象(数据),是读是写。传输介质是导线。
总线
概念: CPU与器件(芯片)通过电信号在导线上传输信息。这些导线的集合就称呼为总线。
地址总线
传输地址信息的导线。
控制总线
其中包含器件选择、命令控制信息 。一台微机中,不只有内存这一种器件,CPU在发出控制指令时还需指明目标器件。
数据总线
数据的交互导线。如果是读,则是元器件通过导线把数据送入CPU;如果是写,则是CPU把数据送入到器件。
交互步骤
存储单元的地址(地址信息); 器件的选择,读或写的命令(控制信息); 读或写数据的传输(数据信息); eg: CUP 通过 地址总线 向内存发送代表3号地址的地址信息; CPU 通过 控制总线 向内存发送读取命令信息,选中存储器芯片,并通知它打开该存储单元的门电路; 内存 发出地址对应的数据信息 通过数据总线 送入CPU ;
地址总线
概念: CPU是通过地址总线来指定存储单元的,也就是说,地址总线能传达多少个不同的信息,CPU就能对多少个存储单元进行寻址。
总结: 内存的地址编号是从0开始,由高往低按小到大编号,而读的时候,是从低往高读。
数据总线
概念: CPU 和器件的数据总线数量决定着传输速度。 8088数据总线宽度是8位,也就是一次可以传输一个字节;8086是16位,也就是一次可以传输2个字节。
扩展: 为什么32位系统是X86,不是32呢,而64位又是x64呢? intel的8086,80286,386~586而得名(命名规则), amd开发的大部分cpu也是基于x86架构的,x86架构的特点是cpu的寄存器是32位的。 它的64位体系结构最早由AMD推出,被称为“AMD64”。后来,它也被英特尔采用,被称为“英特尔64”。也称为“x86-64”、“x64”。
控制总线
概念: 控制总线和上面两种线不同,不再是所有线一起作用。控制总线是一些不同控制线的集合。有多少根控制线,就以为CPU对外部器件多少种控制。比如对某个器件只提供读的控制线。所以控制总线的宽度体现对外部器件的控制能力。 控制线更多的是以器件划分圈子。
1.1-1.10 小结
-
汇编指令是二进制指令的助记符,他们之间是一一对应的关系。
-
每一种CPU都有自己的汇编指令集
-
CPU可以直接使用的数据在存储器(也就是内存)中
-
在内存或者CPU中,指令和数据没有区别,本质都是二进制。之所有有不同的称呼,是从功能的角度区分的。而区分的准绳,就是CPU访问他们时所处的时间段。取指周期时,取的是指令;执行周期时,取的是数据。
-
存储单元从0开始编号,一个存储单元就是一个字节。
-
CPU的总线从功能的角度可以如下分类:
-
地址总线 :其宽度决定了CPU的寻址能力。比如8088的8位,8086的16位,就是说8根地址总线的寻址能力是0-255 。
-
控制总线 :其宽度决定了CPU对器件(芯片)的控制能力,比如有的器件只有1根代表读的控制线。
-
数据总线 :其宽度决定了CPU与器件的一次数据传送能力,比如8根线,代表一次可传输一个字节。
-
检测
-
首先明确8KB的寻址能力是什么意思。1根导线分为高电平和低电平,可以表示2个存储单元的地址,也就是2B的寻址能力,以此类推,3根导线可以表示8个地址,10根导线,可以表示1024个存储单元地址。那8KB=1024X8 B就需要 13根导线。主要是得明白寻址能力的单位是B,表示一个存储单位。
用原文的话说:一个CPU有N根地址线,则可以说这个CPU的地址总线宽度位N。这样的CPU最多可以寻找2的N次方个存储单元。也就是说,地址是存储单元的地址。还是得理解透彻概念。
-
1024 ; 0-1023
-
1024x8 bit ; 1024 Byte
-
1GB = 1024MB ; 1MB= 1024KB ; 1KB=1024Byte ;1B = 8bit
-
64KB 、1M 、16M 、4GB 寻址能力
-
1 、1 、2、2、 4 传送数据能力。8根线一次能传1个字节。分批传输的时候,注意传输顺序和在内存当中的放置。主要是地址编号和读的问题。
-
512 、256 、
-
二进制
内存地址空间
概念: 一个CPU的地址总线宽度位10 ,那么可寻址到1024个存储单元,这1024个单元就构成了内存地址空间。
主板
概念: 主板上有核心器件与主要器件,他们沟通总线(地址总线、控制总线、数据总线)相连。
接口卡
概念: 主要是连接外部设备,显示器、音响、打印机。CPU对外部设备不能直接控制,而是通过接口卡来控制。
各类存储器芯片
概念: 从读写属性上分类,分为RAM 随机存储器 和 ROM 只读存储器 。
-
随机存储器:主随机存储器主要有主板上的内存条和插槽处的内存条组成
-
只读存储器: 装有BIOS的ROM器件。比如,主板上有bios ,接口卡上的某些外接设备上也有bios的ROM。
-
接口卡上的RAM : 大数据量的传输 ,比如显卡,有大容量的显存 。
内存地址空间
概念: 器件和CPU总线相连,并且CPU对他们的读写都是通过控制总线发出命令。这些器件的存储单元在逻辑上组成了CPU的逻辑存储器。这个逻辑存储器就是内存地址空间。
内存地址空间的大小,取决于CPU地址总线宽度,最基本单位是B(字节)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了