王啄鬻 發表於 2022-3-16 08:24:00

《汇编语言》学习笔记——基础知识

<h1 id="0x01-基础知识">0x01 基础知识</h1>
<h2 id="11-机器语言">1.1 机器语言</h2>
<ul>
<li>机器语言是<strong>机器指令</strong>的集合。</li>
<li>机器指令是一列<strong>二进制数字</strong>,计算机将其转变为一列高低电平,使得计算机的电子器件受到驱动,从而完成运算。</li>
</ul>
<blockquote>
<p>上述计算机的功能由CPU(中央处理单元)来完成,是一种微处理器。</p>
</blockquote>
<ul>
<li>由于<u>硬件设计和内部结构不同</u>,就需要不同的电平脉冲控制,所以每一种微处理器<strong>都有自己的机器指令集</strong>,也就是<strong>机器语言</strong>。</li>
</ul>
<h2 id="12-汇编语言的产生">1.2 汇编语言的产生</h2>
<blockquote>
<p>由于机器语言难以辨别和记忆,汇编语言产生了。</p>
</blockquote>
<ul>
<li>汇编语言的主体的<strong>汇编指令</strong>。
<ul>
<li>汇编指令是机器指令便于记忆的书写格式。</li>
</ul>
</li>
</ul>
<pre><code class="language-assembly">操作:寄存器BX的内容送入AX。
机器指令:1000100111011000
汇编指令:mov ax, bx
</code></pre>
<ul>
<li>计算机只能读懂机器指令,故需要将汇编指令转换为机器指令。
<ul>
<li><strong>编译器</strong>负责将程序员写出的汇编程序编译为机器码,再由计算机最终运行。</li>
</ul>
</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/1791e8d277a54f0bb3f11b347d812973.png" alt="" loading="lazy"></p>
<h2 id="13-汇编语言的组成">1.3 汇编语言的组成</h2>
<ul>
<li>汇编指令(<font color="red"><strong>核心</strong></font>)
<ul>
<li>机器码的助记符,有对应的机器码。</li>
</ul>
</li>
<li>伪指令、其他符号(+、-、*、/)
<ul>
<li>由<strong>编译器</strong>执行,没有对应的机器码。</li>
</ul>
</li>
</ul>
<h2 id="14-存储器">1.4 存储器</h2>
<ul>
<li>CPU是计算机的核心运算部件,需要向其提供数据和指令。
<ul>
<li>数据和指令存放在存储器(内存)中,故需要了解如何在CPU和内存之间交换信息。</li>
</ul>
</li>
</ul>
<blockquote>
<p>磁盘的数据和程序需要先读入内存才能进而被CPU使用。</p>
</blockquote>
<h2 id="15-指令和数据">1.5 指令和数据</h2>
<ul>
<li>指令和数据是应用上的概念,本质都是二进制信息,没有区别。</li>
</ul>
<pre><code class="language-assembly">1000100111011000 -&gt; 89D8H(数据)
1000100111011000 -&gt; mov ax, bx(指令)
</code></pre>
<h2 id="16-存储单元">1.6 存储单元</h2>
<ul>
<li>存储器被分为若干个<strong>存储单元</strong>。
<ul>
<li>每个单元从0开始编号;</li>
<li>存储器的容量是以<strong>字节</strong>为最小单位计算的。</li>
</ul>
</li>
</ul>
<blockquote>
<p>磁盘的容量单位同内存一样。</p>
</blockquote>
<h2 id="17-cpu对存储器的读写">1.7 CPU对存储器的读写</h2>
<ul>
<li>
<p>CPU读写数据时必须和外部期间进行<u>三类信息</u>交互。</p>
<ul>
<li><strong>地址信息</strong>:存储单元的地址。</li>
<li><strong>控制信息</strong>:器件的选择、读或者写的命令。</li>
<li><strong>数据信息</strong>:读或者写的数据。</li>
</ul>
</li>
<li>
<p>CPU通过<strong>总线</strong>和其他芯片传输信息。</p>
<ul>
<li>总线就是一根根导线的集合。</li>
<li>从逻辑上分为:<strong>地址总线</strong>、<strong>控制总线</strong>和<strong>数据总线</strong>。</li>
</ul>
</li>
<li>
<p>CPU从内存中读/写数据的过程。</p>
<ul>
<li>CPU通过<strong>地址线</strong>发送要读写的地址;</li>
<li>CPU通过<strong>控制线</strong>发送读/写的命令;</li>
<li>内存和CPU通过<strong>数据线</strong>交互数据:
<ul>
<li>读:内存向CPU传输目的地址的数据。</li>
<li>写:CPU向内存传输要存入到目的地址的数据。</li>
</ul>
</li>
</ul>
</li>
</ul>
<h2 id="18-地址总线">1.8 地址总线</h2>
<ul>
<li>CPU是通过<strong>地址线</strong>来指定存储单元。</li>
<li>一个CPU有N跟地址线则称其地址总线的宽度为N。
<ul>
<li>此时CPU可以表示2的N次方个信息,故最多可以寻址2的N次方个内存单元。</li>
</ul>
</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/ac79586af9194fd08c0bda5fd1a75e17.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2gzdWh4OQ==,size_18,color_FFFFFF,t_70,g_se,x_16" alt="" loading="lazy"></p>
<h2 id="19-数据总线">1.9 数据总线</h2>
<ul>
<li>CPU和内存之间的数据传输是通过<strong>数据总线</strong>完成的。</li>
<li>数据总线的宽度决定了<strong>数据传输速度</strong>。
<ul>
<li>8根数据总线一次可以传送1个字节数据;</li>
<li>16根数据总线一次可以传送2个字节数据。</li>
</ul>
</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/44990c87ba9b49279a699698b2316d8d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2gzdWh4OQ==,size_20,color_FFFFFF,t_70,g_se,x_16" alt="" loading="lazy"><br>
<img src="https://img-blog.csdnimg.cn/5d995ba3df3a4ef7b72ad75dfc4b1d64.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2gzdWh4OQ==,size_15,color_FFFFFF,t_70,g_se,x_16" alt="" loading="lazy"></p>
<h2 id="110-控制总线">1.10 控制总线</h2>
<ul>
<li>CPU对外部器件的控制是通过<strong>控制总线</strong>完成的。</li>
<li>控制总线是<u>一些不同控制线的集合</u>。
<ul>
<li>控制总线的宽度决定了CPU<strong>对外部器件的控制能力</strong>。</li>
</ul>
</li>
</ul>
<h2 id="111-内存地址空间">1.11 内存地址空间</h2>
<ul>
<li><strong>地址总线宽度</strong>决定可寻址的内存单元,构成<u>CPU的内存地址空间</u>。</li>
</ul>
<h2 id="112-主板">1.12 主板</h2>
<ul>
<li>每个电脑都有个主板,放置核心器件和一些主要器件。
<ul>
<li>器件之间通过<strong>总线</strong>相连。</li>
<li>这些器件包括:<strong>CPU、存储器、外围芯片组、扩展槽</strong>等。</li>
<li>扩展槽上一般有<strong>RAM内存条和各类[接口卡](#1.13 接口卡)</strong>。</li>
</ul>
</li>
</ul>
<h2 id="113-接口卡">1.13 接口卡</h2>
<ul>
<li>CPU<strong>不能直接控制</strong>外部设备,比如显示器、音响、打印机等。
<ul>
<li>CPU<u>通过<strong>总线</strong>向<strong>接口卡</strong></u>发送命令,<strong>接口卡</strong>根据CPU的命令控制外设。</li>
</ul>
</li>
</ul>
<h2 id="114-各类存储器芯片">1.14 各类存储器芯片</h2>
<ul>
<li>每个电脑装有<strong>多个存储器芯片</strong>,这些芯片物理上是独立的。</li>
<li>从<strong>读写属性</strong>上分为<strong>随机存储器(RAM)</strong>和<strong>只读存储器(ROM)</strong>。
<ul>
<li>随机存储器:<strong>可读可写</strong>,掉电后内容丢失。</li>
<li>只读存储器:<strong>只读</strong>,关机后内容不丢失。</li>
</ul>
</li>
<li>从<strong>功能和连接</strong>上分为以下几类:
<ul>
<li><strong>主存储器</strong>
<ul>
<li>存放<strong>CPU使用</strong>的<u>绝大部分程序和数据</u>。</li>
<li>由装在<strong>[主板](#1.12 主板)上和扩展槽</strong>两个位置上的RAM组成。</li>
</ul>
</li>
<li><strong>装载BIOS(基本输入输出系统)的ROM</strong>
<ul>
<li>BIOS是由主板和各类接口卡厂商提供的<strong>软件系统</strong>,可以利用<strong>硬件设备</strong>进行最基本的输入输出。</li>
</ul>
</li>
<li><strong>接口卡上的RAM</strong>
<ul>
<li>某些接口卡需要对<u>大批量输入、输出数据</u>进行<strong>暂时存储</strong>,故在其上装RAM,例如显存。</li>
</ul>
</li>
</ul>
</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/96b4a5b512bb4cddae2cc65ca5c11bd7.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2gzdWh4OQ==,size_20,color_FFFFFF,t_70,g_se,x_16" alt="" loading="lazy"></p>
<h2 id="115-内存地址空间">1.15 内存地址空间</h2>
<ul>
<li>存储器的两个相同点
<ul>
<li>都和CPU<strong>总线相连</strong>。</li>
<li>CPU都是通过<strong>控制线</strong>发出读写命令。</li>
</ul>
</li>
<li>CPU操控存储器时,将它们<strong>都当作内存对待</strong>,把他们看作一个若干存储单元组成的<strong>逻辑存储器</strong>。</li>
</ul>
<p><img src="https://img-blog.csdnimg.cn/2855becfef8d4237b9f7628670afc2b6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAY2gzdWh4OQ==,size_20,color_FFFFFF,t_70,g_se,x_16" alt="" loading="lazy"></p>
<blockquote>
<p>每个<strong>物理存储器</strong>在<strong>逻辑存储器</strong>中占有<strong>一个地址段</strong>。</p>
</blockquote>
<ul>
<li>基于硬件系统编程时,必须知道系统中的<u>内存地址空间分配情况</u>。
<ul>
<li>向某个存储器读写数据时,必须知道其<u>第一个单元的地址</u>和<u>最后一个单元的地址</u>,才能保证读写到目的存储器。</li>
<li>不同计算机系统的内存地址空间<strong>分配情况不同</strong>。</li>
</ul>
</li>
</ul><br><br>
来源:https://www.cnblogs.com/cheuhxg/p/16011334.html
頁: [1]
查看完整版本: 《汇编语言》学习笔记——基础知识