汇编语言 学习记录 - 01 - 基础概念

汇编语言

要使用计算机,就得用计算机“能够理解”的语言,即计算机语言。一台机器只认识本种机型的机器语言——指令系统,对于其余语言的程序,首先由编译器或解释器完成高级语言到机器语言的翻译工作,再由硬件系统来执行翻译后的程序。若要充分发挥机器硬件资源的作用,提高程序代码的效率,就必须直接使用机器的低级语言。绝大多数的汇编语言程序都是对各种高级高级语言的补充,即增加了许多被编译程序原作者遗漏了的功能。

基本汇编语言程序

汇编语言(Assembly Language/Assembler Language)是一种面向机器的程序设计语言,它是机器语言的符号化描述,而高级语言是面向问题的,甚至于面向对象。汇编语言因不同类型的机器而有不同的语法规则。汇编语言的一个执行语句,对应一条机器语言指令,反之亦然。用汇编语言书写的程序,称为汇编语言源程序或汇编语言程序。汇编语言源程序也和其它高级语言的源程序一样,必须由翻译程序翻译成代码程序(即机器语言的程序),方才能在机器中执行,此代码程序称为相应源程序的目标程序。
汇编程序(Assembler)是把源程序转变为相应目标程序的翻译程序,这个转变过程称为汇编。汇编程序的翻译过程(汇编)相当于直译,其语言和机器语言有着一一对应的关系;而高级语言的翻译过程(编译)相当于一个意译过程,没有直接对应的关系。

不同的微处理器对应不同的汇编语言,所谓基于某种机型的汇编语言,实际上是指基于某种机型的汇编程序,按照汇编程序能够理解的程序格式来书写程序,才能被该汇编程序汇编成该种机型对应的机器代码,然后才能在该种机器上运行。在诸多汇编程序中,最为流行的是Microsoft公司所开发的宏汇编程序(MacroAssembler,MASM),它是基于Intel系列机的,它不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。

机器语言与机器指令

机器语言是机器指令的集合。
机器指令是一台机器可以正确执行的命令。
机器指令由一串二进制数表示,计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。
例: 01010000 其电平脉冲为:

现代计算机是指由CPU(Central Processing Unit,中央处理单元)和其它受CPU直接或间接控制的芯片、器件、设备组成的计算机系统。CPU是一种微处理器。每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器都有自己的机器指令集,也就是机器语言。

汇编语言与汇编指令

汇编语言的主体是汇编指令。
汇编指令和机器指令的差别在于指令的表示方法上:

  • 汇编指令是机器指令便于记忆的书写格式
  • 汇编指令是机器指令的助记符
机器指令:1000100111011000
操作:将寄存器BX的内容送到AX中
汇编指令:MOV AX, BX

汇编语言的组成:

  1. 汇编指令:机器码的助记符,有对应的机器码;
  2. 伪指令:没有对应的机器码,由编译器执行,计算机并不执行;
  3. 其它符号:如+ - * /等,由编译器识别,没有对应的机器码。

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

计算机主板组成

主板上有:

  • CPU
  • 总线
  • 内存(条)
  • 扩展槽(接外部设备)


CPU 是计算机的核心部件,它控制整个计算机的运作并进行运算。要想让一个CPU工作,就必须向它提供指令和数据。指令和数据在存储器(内存)中存放,离开了内存,再好的CPU也无法工作。

指令和数据

计算机中的数据和指令,存储在内存或磁盘上,都是二进制信息。
像比如二进制信息1000100111011000,它可以是数据,还可以是指令,由CPU决定(根据表示形式)。

1000100111011000 ─> 89D8H (数据)
1000100111011000 ─> MOV AX,BX (指令)

数据如何表示?

  • 1000100111011000B (二进制)
  • 89D8H (十六进制)
  • 104730O(八进制)
  • 35288D(十进制)

存储器

存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,每个存储单元可存储1个字节(Byte),即8个二进制位(8bit)。
例如一个存储器有128个存储单元,编号从0~127,可以存储128个Byte;

数据量:
8bit = 1B(Byte)
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB

CPU对存储器的读写

CPU要从内存中读写数据,首先要指定存储单元的地址(要先确定它要操作哪一个存储单元上的数据),并且,还需指明要对哪一个器件进行操作(一台微机中,不止存储器这一种器件),进行哪种操作,或读或写。
即CPU要进行数据读写,必须和外部器件(芯片)进行以下信息的交互:存储单元的地址(地址信息);器件的选择,读或写的命令(控制信息);读或写的数据(数据信息)。

总线

电子计算机能处理、传输的信息都是电信号,电信号用导线来进行传送。
在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。
物理上:一根根导线的集合;
逻辑上:划分为地址总线(单向)、数据总线(双向)、控制总线(双向)。

1)CPU通过地址线将地址信息3号发出;
2)CPU通过控制线发出内存读命令,选中存储器芯片,并通知它,将要从中读取数据;
3)存储器将3号单元中的数据08通过数据线送入CPU。

要让一个计算机或微处理器工作(进行数据的读写),应向它输入能够驱动其进行工作的电平信息(机器码)。

地址总线

CPU是通过地址总线来指定存储单元的。地址总线宽度,决定了可寻址的存储单元大小。
N根导线可以传送N位二进制数据(bit),N位二进制数据最多可以表示 2^N 个不同的数据(Byte),也就意味着最多可寻找 2^N 个内存单元。

N根地址总线(宽度为N),对应寻址空间 2^N Byte。

数据总线

CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
数据总线的宽度决定了CPU和外界的数据传送速度。(8根数据总线一次性可传送8位二进制数据,即一个字节;16根就可以一次性传送16位二进制数据,即2个字节)
例:向内存中写入数据 89D8 时的数据传送:

控制总线

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

内存地址空间

内存地址空间:CPU地址总线宽度为N,寻址空间为2NB。
例如:8086CPU的地址总线宽度为20,那么可以寻址1MB个内存单元,其内存地址空间就是为1MB。

从CPU角度看地址空间分配

每一台PC机中,都有一个主板,主板上有CPU、存储器、外围芯片组、扩展插槽(一般插有RAM内存条和各类接口卡)等,它们通过总线相连。CPU对外部设备都不能直接控制,如显示器、音箱等,CPU通过总线向接口卡发送命令,接口卡根据命令控制外设进行工作。

同时,一台PC机,装有多个存储器芯片,从物理连接上看:都是独立的、不同的器件;从读写属性上看,分为随机存储器(Random Access Memory,RAM)和只读存储器(Read Only Memory,ROM)。RAM可读可写,但必须带电存储,关机后存储的内容丢失;ROM只能读不能写入,关机后其中的内容不丢失。

这些存储器又从功能和连接上分:

  • 随机存储器
    用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上的RAM组成,装在主板上的RAM和插在扩展插槽上的RAM。
  • 装有BIOS(Basic Input/Output System,基本输入/输入系统)的ROM
    BIOS是由主板和各类接口卡(如显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM。
  • 接口卡上的RAM
    某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的就是显示卡上的RAM,一般称为显存(将需要显示的内容写入显存,就会输出在显示器上)。

以上存储器,在物理上都是独立的器件,但是,CPU在操控它们时,都将它们当作内存看待,将之总的看作一个由若干个存储单元组成的逻辑存储器,即内存地址空间。

如有错误,欢迎评论指正🤝

posted @ 2022-06-16 22:15  Zerimon  阅读(147)  评论(0编辑  收藏  举报