前言
(1)本人使用的是 王爽老师的汇编语言第四版和 学校发的微机原理教材配合学习。
(2)推荐视频教程 通俗易懂的汇编语言(王爽老师的书); 贺老师C站账号网址;
(3)文章配套资料: Github仓库链接;
(4)本文是介绍8086汇编语言。
汇编语言简介
汇编语言诞生
(1)我们都知道计算机是二进制的,上个世纪的程序员是使用01进行写程序,因为0101001010这种代码不适合人来看,稍微搞错了一个地方代码就出问题了。
(2)于是前人就想到了使用特定符号表示一段固定的二进制数据,也就是现在要讲的汇编语言。
(3)首先需要强调的是, 计算机是无法识别除了01以外的所有编程语言的!所以我们的汇编指令需要经过一个编译器将汇编代码转换为机器码,也就是01语言,最终计算机才可以执行指令。
(4)为什么是只能识别01呢?这个其实有一点点数模电知识就能够理解了,因为怕阅读此文章的人真的基础太差。还是赘述一遍。对于计算机而言,其他它也无法识别0和1,它真正能够识别的东西是叫做电压!我们初中物理学过,电压是相对的,我们将地球的电压看作是0V。所有计算机内部的控制单元都是与或非三个门电路组成,而这三个门电路其实又是三极管组成,三极管其实可以看成是一个水龙头,它有截至区,放大区(这个区域本文不谈),饱和区。当电压为0V的时候,处于截至区,输出低电平。当电压为5V的时候(以TTL电平为例),处于饱和区输出高电平。所以说,我们将点低电平称为0,高电平称为1。
汇编语言的组成
(1)汇编语言由三类指令组成:汇编指令,伪指令,其他符号。这一部分后面的文章会详细讲解。
(2)汇编指令:机器码助记符,由编译器执行,计算机并不执行。
(3)伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
(3)其他符号:入+,-,*,/等,由编译器识别,没有对应的机器码。
微型计算机简介
微型计算机构成
微型计算机是由 软件和 硬件所组成。结构框图如下
软件简介
(1)软件这个东西是个人认为比较抽象,软件就是各种程序的集合体。软件本质就是要依靠硬件来实现的,你可以将它理解为一个已经设置好的硬件模块,它能够执行规定的任务。
(2)软件分为系统软件和应用软件。
(3) 系统软件的核心就是操作系统,比如windows,Linux,mac这种。
(4) 应用软件是为例某种应用目的而编制的计算机程序。比如谷歌浏览器,qq,微信这些都是应用软件。
硬件简介
(1)硬件部分就很好理解了,它就是一个主机和一个外部设备。 主机可以通过IO口控制外部设备。
(2)主机由微处理器,内存储器和IO接口组成。 对于8086而言,微处理器就是我们常说的CPU,至于上图为什么写MPU,我也比较的懵,查了很多资料也没查明白。只是知道很多时候MPU就会被当成是CPU来讲,但是两者又有区别。这个区别很模糊,我也不明白。
微机硬件构成与工作原理
微型计算机的硬件组成
(1)因为外围设备都是通过CPU对IO的控制间接控制的,所以我将对IO的控制理解为对外围的控制。
(2) 微型计算机的硬件由微处理器、存储器、IO三大部分组成。而由于系统总线是开放的,所以微机的硬件也可以包括系统总线。(注意,看不懂没关系,先有一个了解)
(3)从计算机构成原理来看, 微型计算机也可以说是由运算器、控制器、存储器、输入设备和输出设备等五大部分组成。(运算器和控制器集成在微处理器中,输入输出设备就可以理解为IO)
微处理器(CPU)
(1) 8086CPU中可编程使用的有14个16伪寄存器。按照用途分为, 通用寄存器, 段寄存器, 控制寄存器。
(2) 通用寄存器:数据寄存器(AX,BX,CX,DX),指针寄存器(SP,BP),变址寄存器(SI,DI)。
(3) 段寄存器:CS(代码段寄存器),SS(堆栈段寄存器),DS(数据段寄存器),ES(附加段寄存器)。
(4) 控制寄存器:IP(指令寄存器),FLAG(标志寄存器)。
存储器
(1)作为计算机,只有CPU是无法执行任务的,还需要存储器。CPU你可以理解为你的脑袋灵不灵活,而存储器就是你的脑袋记忆力好不好。
(2)举个例子,最强大脑中,水哥的实力是毋庸置疑的。它能够将一大堆的水杯中选出题目所要的水杯。 这需要他的大脑首先能够记住着一些水杯,也就是需要有足够的存储器。而就算记住了,也无法找出所要的水杯,所以需要快速的分辨,这就是CPU。
三大总线结构
地址总线
根据上面存储器部分的讲解,我们对CPU与存储器之间的关系有了一个简单的了解。但是,又有问题了,CPU怎么知道该区存储器的哪个地方读取指令呢?这个时候就需要一个地址总线了。CPU的CS和IP寄存器将会告诉我们应该区内存的哪个地方读取指令,而CS和IP的值通过地址总线传输给存储器,找到存储指令的部分。
数据总线
我们现在读取到了存放指令的地方了,那么CPU还不知道呀。那么这个时候就需要数据总线将数据回传给CPU,告诉CPU,你应该做什么。
控制总线
(1)控制总线就两个寄存器,一个IP,一个FLAG。
(2)IP寄存器和CS寄存器配合,知道指令存放的位置(后面文章会详细讲解)。
(3)FLAG就是标志寄存器,比如数据有了进位信号,有符号数产生溢出,产生中断请求等等,寄存器中相应位就会置1,这样我们可以读取相应位,知道CPU的情况。