汇编语言基础知识:基本概念

描述

汇编语言:基本概念

1 机器语言和汇编语言

1.1 机器语言

机器指令展开来讲就是一台机器可以正确执行的命令。电子计算机的机器指令是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。早期的程序设计均使用机器语言。程序员们将用0、1 数字编成的程序代码打在纸带或卡片上,1打孔,0 不打孔,再将程序通过纸带机或卡片机输入计算机,进行运算。

机器语言难于辨别和记忆, 给整个产业的发展带来了障碍。于是汇编语言产生了。

1.2 汇编语言

汇编语言的主体是汇编指令。汇编指令和机器指令的差别在于指令的表示方法上。汇 编指令是机器指令便于记忆的书写格式

例如:机器指令1000100111011000表示把寄存器BX的内容送到AX 中。汇编指令则写成mov ax,bx。这样的写法与人类语言接近,便于阅读和记忆。

「编译器」 是能够将汇编指令转换成机器指令的翻译程序,程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码,由计算机最终执行。

2 CPU对存储器的读写

2.1 概述

CPU要从内存中读数据,首先要指定 「存储单元的地址」 。另外还要指明它要对 「哪一个器件」 进行操作,进行 「哪种操作」 ,是从中读出数据,还是向里面写入数据。

即CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行下面3类信息的交互。

  • 存储单元的地址(地址信息);
  • 器件的选择,读或写的命令(控制信息);
  • 读或写的数据(数据信息)。

在计算机中专门有为CPU和其他部件之间提供信息(地址信息、控制信息、数据信息)的传输通道,通常称为总线。总线从物理上来讲,就是一根根导线的集合。根据传送信息的不同,总线从逻辑上又分为3类,地址总线、控制总线和数据总线。8086CPU有20条地址总线、16条控制总线和16条数据总线。

要让一个计算机或微处理器工作,应向它输入能够驱动它进行工作的电平信息(机器码)。例如:传送3 号单元的内容入AX

  • 机器码:10100001 00000011 00000000
  • 对应的汇编指令:MOV AX,[3]

2.2 地址总线

「地址总线(AB)」 用来传递地址信息。因地址总是从CPU送出去的,所以地址总线通常是单向的。假设,一个CPU有10根地址总线,如图所示,它发出地址信息11时10根地址线上传送的高低电平信号的二进制信息就为11对应的二进制数00 0000 1011。

编译器

一 个 CPU有 N 根地址线,则可以说这个CPU的地址总线的宽度为N这样的CPU最多可以寻找次方个内存单元。8086CPU的20根地址线(A19A16,A15A0)可以全部用来给外部存储器提供地址,所以8086可寻址的外部存储器地址空间达字节即1MB。

2.3 数据总线

「数据总线(DB)」 用来传输数据。数据总线是双向的,即数据既可以从CPU送到其他部件,也可以从其他部件送到CPU。

数据总线的宽度 决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据(即一个字节),16根数据总线一次可传送两个字节。

例如,8086有16根数据线,可一次传送16位数据,所以可一次传送数据89D8H;而 8088只有 8 根数据线,一次只能传8 位数据,所以向内存写入数据89D8H时需要进行两次数据传送。

编译器

编译器

2.4 控制总线

「控制总线(CB)」 用来传输控制信号。其中包括CPU送往存储器和输入/输出接口的控制信号,还包括其他部件送到CPU的信号。有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。所以,控制总线的宽度决定了CPU对外部器件的控制能力。

3 各类存储器芯片

3.1 随机存储器和只读存储器。

一台PC机中,装有多个存储器芯片,这些存储器芯片从物理连接上看是独立的、不同的器件。从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)。

「随机存储器」 可读可写,但必须带电存储,关机后存储的内容丢失; 「只读存储器」 只能读取不能写入, 关机后其中的内容不丢失。下展示了 PC系统中各类存储器的逻辑连接情况。

编译器

3.2 内存地址空间

CPU在操控存储器的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的一个逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。下图展示了CPU将系统中各类存储器看作一个逻辑存储器的情况

编译器

内存地址空间的大小受CPU地址总线宽度的限制。8086CPU的地址总线宽度为20, 可以传送 个不同的地址信息,即可以定位个内存单元,则8086PC的内存地址空间大小为1MB。下图展示了 8086PC机内存地址空间分配的基本情况。

编译器

从地址0〜9FFFF的内存单元中读取数据,实际上就是在读取主随机存储器中的数据;向地址AOOOO-BFFFF的内存单元中写数据,就是向显存中写入数据, 这些数据会被显示卡输出到显示器上;我们向地址C0000〜 FFFFF的内存单元中写入数据的操作是无效的,因为这等于改写只读存储器中的内容。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分