【8086汇编】基础知识篇

简介: 前言:什么是汇编​   汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。其实仅从课程关系的角度讨论汇编语言的重要性未免片面,概括地说,如果你想从事计算机科学方面的工作的话,汇编语言的基础是必不可缺的。原因很简单,我们的工作平台、研究对象都是机器,汇编语言是人和计算机沟通的最直接的方式,它描述了机器最终所要执行的指令序列。想深入研究英国文化,不会英语行吗?汇编语言是和具体的微处理器相联系的,每一种微处理器的汇编语言都不一样,只能通过一种常用的、结构简洁的微处理器的汇编语言来进行学习,从而达到学习汇编的两个最根本的目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。

前言:什么是汇编

 汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。其实仅从课程关系的角度讨论汇编语言的重要性未免片面,概括地说,如果你想从事计算机科学方面的工作的话,汇编语言的基础是必不可缺的。原因很简单,我们的工作平台、研究对象都是机器,汇编语言是人和计算机沟通的最直接的方式,它描述了机器最终所要执行的指令序列。想深入研究英国文化,不会英语行吗?汇编语言是和具体的微处理器相联系的,每一种微处理器的汇编语言都不一样,只能通过一种常用的、结构简洁的微处理器的汇编语言来进行学习,从而达到学习汇编的两个最根本的目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。这两个目的达到了,其他目的也就自然而然地达到了。举例来说,你在学习操作系统等课程时,对许多问题就会有很通透的理解。(本篇文章参考王爽老师的汇编语言(第三版))

一、基础知识篇

 汇编语言是直接在硬件上工作的编程语言,要想了解汇编,我们首先要了解硬件系统结构,本章对仅仅对硬件的一部分进行讲解,后续用到的我们后面再讲

1.机器语言

 机器语言是机器指令的集合,机器指令就是可以被机器执行的命令,计算机的机器指令是就是一列二进制数字,计算机将其转变为高低电平,是计算机进行运算。

 但是机器语言有很大的弊端,就是不容易阅读和记忆,比如在显示器上输出”welcome to masm“机器码如下:

ab5064f42ffd43319bee0bc915accedc.png

如果有哪里的‘1‘不小心被写成’0’,根本无法查找

  • 所以为了便于阅读和记忆,汇编语言产生了,汇编语言为汇编指令组成,,汇编指令是机器指令便于记忆的书写格式

2.汇编语言的组成

汇编语言由以下三类指令组成

 (1)汇编指令

 (2)伪指令

 (2)其他符号

3.存储器

CPU是计算机的核心部件,它控制整个计算机的运作并进行运算,要想让CPU工作,就必须向他提供指令和数据,指令和数据存储在存储器中,也就是我们说的内存,离开内存,再好的CPU也无法工作,就像大脑,没有记忆再聪明也无法思考,硬盘于内存不同,硬盘上的数据如果想被CPU使用,就必须先读取到内存中,要想灵活的使用汇编语言,我们要先了解CPU是如何从内存中读取和写入信息的。

4.指令和数据

 指令和数据都是应用上的概念,在内存或磁盘上,指令和数据本质上没有任何区别,都是由二进制信息组成,在CPU工作的时候,把一些信息看成指令处理,一些数据看成数据处理。

例如,内存中的二进制信息 1000100111011000,计算机可以把它看作大小为89D8H的数据来处理,也可以将其看作指令mov ax,bx来执行。


100o100111011000一> 89D8H(数据)

1000100111011000-> mov ax,bx(程序)

5.存储单元

 存储器被分成若干个存储单元,每个存储单元从0开始编号(从0开始是因为从 0 开始对机器友好,从 1 开始对人友好。不论是几进制都是从0开始的),每个存储单元是一个Byte,即8个bit,一个存储器有128个存储单元,它可以存储128个Byte,对于大容量的存储器我们还可以用以下单来计量。


1kb=1024Byte 1MB=1024kb 1GB=1024MB 1TB=1024GB

6.CPU对存储器的读写

存储器被划分为多个存储单元,存储单元从零开始顺序编号,这里的编号可以看作存储单元在存储器中的地址,就像每个房子都有自己的门牌号。


 CPU想要读取数据,首先要指定存储单元的地址,也就是想要读取哪个位置的数据。


 但是在一台计算机中,不只有存储器这一种器件,CPU在读写数据时还要指明要对哪一个期间进行操作,是要读取数据还是写入数据


 可见,CPU如果想要进行数据的读写,必须和外部器件进行下面三类信息的交互


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

选择读或写(控制信息)

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

CPU是怎么讲地址、数据、控制信息传到1存储器中的呢,计算机能处理传输的信息都是电信号,传输电信号当然要用导线,在计算机中有专门连接CPU和其他芯片的导线,又称为总线,就是一根根导线的集合,总线分为三类,地址总线、控制总线、数据总线。

CPU读取数据过程

3ae27072bb4e44e8bfe472e0b2bc9232.png

(1) CPU通过地址总线将地址信息发送给内存

(2)CPU通过控制总线发出读取命令,告诉内存我要读取

(3)存储器将对应地址位置的数据通过数据总线发送给CPU

CPU写入过程与上面类似

(1)CPU通过地址总线将地址信息发送给内存

(2)CPU通过控制总线发出写入命令

(3)CPU通过数据总线将数据传给地址对应的内存

7.地址总线

 CPU是通过地址总线来指定存储器单元的,可见地址总线上能传送多少不同的信息,CPU就可以找到多少对应的地址。

假设CPU有十根地址总线,我们知道,在计算机中,每根导线传送的状态只有两种,高电平或者低电平,二进制表示也就是0或者1,十根总线代表能传送是十位二进制数据,十位二进制数据可以组成多少个不同的组合呢?2的10次方个,最小数为0,最大数为1023.所有如果有n根地址总线,可寻找的内存单元就为2的n次方个。

f9a2449d2df7424bb5a412a587545b10.png

8.数据总线

 CPU与内存或其他期间之间的数据传输都是通过过数据总线进行的,数据总线的宽度决定了CPU和外界的数据传送速度,一根数据总线代表每次可以传送一位二进制数据,八根数据总线能传送八位二进制数据,也就是一个字节。

 那么如果数总线为8根,一字节就需要传输一次,两字节就需要传输两次。

37ee5de3a600407ea668d72b9ee01171.png

9.控制总线

 CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。

小结

(1)汇编指令是机器指令的助记符,同机器指令一—对应。


 (2)每一种CPU都有自己的汇编指令集。(1)汇编指令是机器指令的助记符,同机器指令一—对应。


 (3) CPU可以直接使用的信息在存储器中存放。


 (4)在存储器中指令和数据没有任何区别,都是二进制信息。


 (5)存储单元从零开始顺序编号。


 (6)一个存储单元可以存储8个bit,即八位二进制数


 (7)1Byte=8bit 1KB=1024B 1MB=1024KB 1GB=1024MB.


 (8)每一个 CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。CPU 可以引出3种总线的宽度标志了这个CPU的不同方面的性能:

地址总线的宽度决定了CPU的寻址能力;

数据总线的宽度决定了CPU与其他器件进行数据传送时的一次数据传送量:控制总线的宽度决定了CPU对系统中其他器件的控制能力。

在汇编课程中,我们从功能的角度介绍了3类总线,对实际的连接情况不做讨论。

课后习题

王爽老师规定,要想学习下一章那么必须先学会此章的课后习题,否则不许向后学习。

(1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为 ___


(2)1KB的存储器有____ 个存储单元。存储单元的编号从 __ 到 __


(3)1KB的存储器可以存储__ 个bit,__ 个Byte.


(4)1GB、1MB、1KB分别是___Byte.


(5) 8080、8088、80286、80386的地址总线宽度分别为16 根、20 根、24根、32根,则它们的寻址能力分别为: __ (KB)、__ (MB)、 __ (MB)、__ (GB).


(6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为:__ (B)、 __ (B)、__ (B)、__ (B)、__ (B).


(7)从内存中读取1024字节的数据,8086至少要读__ 次,80386至少要读__ 次。


(8)在存储器中,数据和程序以___形式存放。

课后习题答案

(1) 13

(2) 1024 0 1023

(3) 8192 1024

(4) 1073741824(2^30) 1048576(2^20) 1024(2^10)

(5) 64 1 16 4

(6) 1 1 2 2 4

(7) 512 256

(8) 二进制

讲解:

(1)1KB=1024B 8KB=8192B=2^n n=13


(2)1存储单元为1Byte,1KB=1024B,也就是1024个存储单元,存储单元编号从0开始,数1024个也就是0到1023


(3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。


(4)1GB=1073741824B(即2^30 )1MB=1048576B(即2^20 )1KB=1024B(即2^10)。


(5)CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。


(6)每八根可以传输八个二进制数据,也就是八个bit,8bit=1Byte以此类推


(7)8086数据总线是16根,每次可传输16bit也就是2Byte,1KB=1024Byte 1024/2=512


同理1024/4B=256


(8)在存储器中指令和数据没有区别,都以二进制存放


这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。


(6)每八根可以传输八个二进制数据,也就是八个bit,8bit=1Byte以此类推


(7)8086数据总线是16根,每次可传输16bit也就是2Byte,1KB=1024Byte 1024/2=512


同理1024/4B=256


(8)在存储器中指令和数据没有区别,都以二进制存放

完结

创作不易,还请各位小伙伴多多点赞👍关注✨收藏⭐




2e0eb2a651124964abeda3220505dcc8.gif

相关文章
|
4月前
|
存储 安全 数据安全/隐私保护
Windows 32 汇编笔记(一):基础知识
Windows 32 汇编笔记(一):基础知识
|
6月前
|
安全 NoSQL Linux
《ARM汇编与逆向工程 蓝狐卷 基础知识》
《ARM汇编与逆向工程 蓝狐卷 基础知识》
99 0
|
Java 数据库 Python
浅浅的学习一下汇编技术入门基础知识,隔壁家的小孩都学哭了。
我们的计算机知识就像一座金字塔,底层是数学,上面是数字电路,然后是汇编,再往上是操作系统、网络,数据库、高级编程语言、框架等等…我们不可能精通这个金子塔的每一层, 但是想走的更远就必须要了解这个金字塔的底层。因此,学习汇编并不是为了用汇编在应用层设计程序,而是为了深刻理解机器运行程序的机理。就像对于人来说不能没有常识一样,尽管常识不能直接挣钱吃饭,但它影响谈吐,影响你的判断力和决断力,决定着你接受新事物和新知识的程度。汇编就是计算机语言里面的常识和基础。
浅浅的学习一下汇编技术入门基础知识,隔壁家的小孩都学哭了。
|
6月前
|
存储 Unix 编译器
汇编语言----X86汇编指令
汇编语言----X86汇编指令
222 2
|
1月前
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
|
1月前
|
编译器 C语言 计算机视觉
【ARM汇编速成】零基础入门汇编语言之指令集(二)
【ARM汇编速成】零基础入门汇编语言之指令集(二)
135 0
|
6月前
|
存储 机器学习/深度学习 移动开发
汇编语言指令系列
汇编语言指令系列
630 0
几组汇编指令的比较
几组汇编指令的比较
|
4月前
|
存储 机器学习/深度学习 芯片
8086 汇编笔记(十二):int 指令 & 端口 & 直接定址表
8086 汇编笔记(十二):int 指令 & 端口 & 直接定址表