美文网首页
《汇编语言》笔记

《汇编语言》笔记

作者: Soup_1acc | 来源:发表于2020-11-15 18:33 被阅读0次

笔记
《汇编语言》 作者:王爽

第一章 基础知识

1.1 机器语言

什么是机器语言? 机器语言是机器指令的集合

什么是机器指令?

  • 机器指令展开来讲就是一台机器可以正确执行的命令,电子计算机的机器指令是一列二进制数字。

1.2 汇编语言的产生

机器语言太麻烦,产生了汇编语言

1.3 汇编语言的组成

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

  1. 汇编指令:机器码的记符,有对应的机器码。

  2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。

  3. 其他符号:如+、-、*、/ 等,由编译器识别,没有对应的机器码。

汇编语言的核心是汇编指令,它决定了汇编语言的特性。、

1.4 存储器

存储器就是内存,存放可供CPU执行的指令和数据。

存储器就是CPU的记忆,没有存储器磁盘上的数据或程序不读入内存就无法被CPU使用。

1.5 指令和数据

指令和数据是应用上的概念,在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。

1.6 存储单元

存储器被划分为若干个存储单元,一个存储单元能存储1Byte,即8个二进制位

1.7 CPU对存储器(内存)的读写

CPU读写时需要进行的信息交互

  • 存储单元的地址(地址信息)

  • 器件的选择,读或写的命令(控制信息)

  • 读或写的数据(数据信息)

CPU通过什么将地址、数据和控制信息传到存储器芯片中?

  • 在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。从物理上讲,就是一根根导线的集合。
  • 根据传输信息的不同,总线从逻辑上讲,又分为地址总线、控制总线和数据总线

1.8 地址总线

一根导线可以传送的稳定状态只有高电平或者是低电平,二进制表示为0和1。

假设一个CPU有十个地址总线,那么CPU最多可以寻找2的N次方个内存单元。

如图展示了一根具有十根地址线的CPU向内存发出地址信息11是地址线上传送的二进制信息。

[图片上传失败...(image-6142ad-1605436347163)]

1.9 数据总线

CPU与内存或其他器件之间的数据传送通过数据总线

数据总线的宽度决定了CPU和外界的数据传送速度

8根数据总线一次可传送一个8位二进制数据(一个字节),16根数据总线一次可传送两个字节

1.10 控制总线

CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。

有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。

内存读或写命令是由几根控制线综合发出的,其中有一根称为“读信号输出”的可控制线负责由 CPU向外传送读信号,CPU 向该控制线上输出低电平表示将要读取数据;有一根称为“写信号输出”的控制线负责传送写信号。

1.1 ~ 1.10 小结

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" cid="n59" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" lang="markdown"> 1.1~1.10 小 结
1. 汇编指令是机器指令的助记符,同机器指令一一对应。
2. 每一种CPU偶有自己的汇编指令集。
3. CPU可以直接使用的信息在存储器中存放。
4. 在存储器中指令和数据没有任何区别,都是二进制信息。
5. 存储单元从零开始顺序编号。
6. 一个存储单元可以存储8个bit,即8位二进制数。
7. 1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024M
8. 每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。一个CPU可以引出3种总线的宽度标志了这个CPU的不同方面的性能:
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量;
控制总线的宽度决定了CPU对系统中其他器件的控制能力。</pre>

检测点课后习题

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" cid="n61" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" lang="markdown"> 1. 15 错
2. 8192 0-8191 错
3. 8192 1024 √
4. 1073741824 1024 X 1024 X 1024 | 1045676 1024 X 1024 | 1024 √
5. 空
6. 1 1 2 2 4 √
7. 512 256 √
8. 二进制 √</pre>

1.11 内存地址空间(概述)

内存地址空间就是CPU可以通过地址总线寻址找到的内存单元集合。

1.12 主板

1.13 接口卡

CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。如显示器、音响、打印机等。

1.14 各类存储器芯片

RAM: 随机存储器,可读可写,但必须带点存储,断电后存储内容丢失。

ROM: 只读存储器,只能读取,不能写入,断电后内容不丢失。

1.15 内存地址空间

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


第二章 寄存器

一个典型的CPU由运算器、控制器、寄存器等器件构成,在CPU中:

  • 运算器进行信息处理;

  • 寄存器进行信息存储;

  • 控制器控制各种器件进行工作;

  • 内部总线连接各种器件,在他们之间进行数据的传送。

对汇编程序员来说。CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。

8086CPU内部有14个寄存器,分别是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW

2.1 通用寄存器

AX、BX、CX、DX这四个存器通常用来存放一般性的数据,被称为通用寄存器。

为了保证向前兼容,8086CPU的AX、BX、CX、DX这四个寄存器都可分为两个可独立使用的8位寄存器来用。

  • AX可分为AH和AL

  • BX可分为BH和BL

  • CX可分为CH和CL

  • DX可分为DH和DL

2.2 字在寄存器中的存储

对于8086CPU来说,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。

2.3 几条汇编指令

mov ax, 001AH - 转移指令

add ax, bx - 求和指令

检测点2.1

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" cid="n104" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;" lang="markdown"> 1)
1. f4a3H AX
2. 31a3H AX
3. 3123H AX
4. 6246H AX
5. 826CH BX
6. 6264H CX
7. 826CH AX
8. 04D8H AX
9. 0482H AX
10.6C82H AX
11.D882H AX
12.D888H AX
13.D810H AX
14.6264H AX

mov ax, 2H
add ax, ax
add ax, ax
add ax, ax</pre>

2.4 物理地址

所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间都有唯一的地址,我们将这个唯一的地址称为物理地址。

CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。

不同的CPU可以有不同的形成物理地址的方式。

2.5 16位结构的CPU

16位结构(16位机,字长位16位等说法一样)的CPU

  • 运算器一次最多可以处理16位的数据

  • 寄存器的最大宽度为16位

8086是16位结构的CP,这也就是说,在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位的CPU,能一次处理、传输、暂时存储16位的地址。

2.6 8086CPU给出物理地址的方法

8086CPU有20位地址总线,可以传送20位地址,CPU是16位结构,在内部一次性处理、传输、暂时存储的地址为16位。寻址能力只有64KB无法达到1MB。

8086CPU 采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。

当8086CPU要读写内存时:

(1)

相关文章

  • 汇编语言 学习笔记(三)

    汇编语言学习笔记 四、汇编语言程序格式 语句基本格式 汇编语言程序中的语句由 4 项组成,格式如下: 名字(nam...

  • 汇编语言之基础

    本系列为学习<汇编语言> 王爽版 的学习笔记 [TOC] 汇编语言是什么? 汇编语言是直接在硬件之上工作的编程语言...

  • 笔记——第一章

    @(读书笔记)[汇编语言,计算机] 基础知识 为什么要有汇编语言 CPU——电平脉冲(高低平)——二进制数字——机...

  • 汇编语言 Ch1-基础知识 笔记

    汇编语言 Ch1-基础知识 笔记 ![](http://picture-repository-of-heamon7...

  • 汇编指令与C语言对比

    这两天在巩固基础,重拾汇编语言,对于汇编语言的思考,记录在此,仅仅是自己的思考笔记,可能有错误的地方,欢迎提意见。...

  • 《汇编语言》笔记

    学习完王爽的《汇编语言》确实有一种豁然开朗的感觉,书中很多实践例题,感觉是他带着我们一步一步做实验,非常容易理解,...

  • 汇编语言笔记

    CPU 对存储器的读写:CPU 通过地址总线将地址信息 3 发出CPU 通过控制线发出内存读/写命令,选中存储器芯...

  • 《汇编语言》笔记

    笔记《汇编语言》 作者:王爽 第一章 基础知识 1.1 机器语言 什么是机器语言? 机器语言是机器指令的集合 什么...

  • 汇编语言探索(一)

    · 汇编语言 汇编语言的意义:汇编语言的产生是为了取代麻烦的机器语言。汇编语言的组成:有以下3类指令组成(汇编语言...

  • [035][x86汇编语言]第十四章 √√文件的OO的XX特权级

    ■ 学习笔记 《x86汇编语言:从实模式到保护模式》https://www.jianshu.com/p/d481c...

网友评论

      本文标题:《汇编语言》笔记

      本文链接:https://www.haomeiwen.com/subject/acznbktx.html