【8086汇编】基础知识篇

前言:什么是汇编

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


一、基础知识篇

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

1.机器语言

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

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

在这里插入图片描述

如果有哪里的‘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读取数据过程

在这里插入图片描述

​ (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次方个。

在这里插入图片描述

8.数据总线

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

​  那么如果数总线为8根,一字节就需要传输一次,两字节就需要传输两次。
在这里插入图片描述

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)在存储器中指令和数据没有区别,都以二进制存放

完结

创作不易,还请各位小伙伴多多点赞👍关注✨收藏⭐
请添加图片描述

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值