《汇编语言》— 基础知识(第一章)

1.1 机器语言

所谓机器语言则是直接能被机器理解和执行的语言。计算机的核心处理部件为CPU,然而CPU往往只能直接识别机器语言,机器语言为一系列用二进制0,1码代表的机器指令。当然指令集合的差别与具体的CPU有关,AMD与Intel的指令集显然是不同的。然而要直接用二进制的机器语言去描述一段程序或者解决一个问题往往是很困难的。

比如说,我们要做这样一个运算s=768+12288-1280:

        那么在8086cpu中其用机器语言表述的二进制代码为(机器码):

101110000000000000000011

        000001010000000000110000

        001011010000000000000101

 

        就这样一个简单的算术运算其机器码就让人头晕目眩,可想而知,如果直接用机器语言进行更为复杂程序的编写,其难度和对视力都是一个极大的考验。

 

1.2 汇编语言的产生

所以为了减轻程序员编程的难度,后来又相继发展了很多语言,比如汇编语言,C语言,C++以及java等语言。其中汇编语言属于低级语言,除此之外均为高级语言。汇编语言将机器语言中晦涩难懂的二进制代码用一些指令助记符进行表示,这样大大降低了程序员编写程序的难度。

比如,机器指令1000100111011000表示将寄存器BX的内容送到寄存器AX中,用汇编语言表述即为mov ax,bx 这样的表示方法不仅清晰易懂而且简洁。那么问题来了,计算机是不能识别mov指令的,那么在汇编程序与CPU之间就需要一个转化的工具,将简洁易懂的汇编语言转换为机器可以理解并执行的机器语言。这个转化工具即为汇编编译器。

       用汇编语言编写程序的过程如下:

   

 

1.3 汇编语言的组成

1.汇编指令:对应机器指令的助记符(核心)

2.伪指令:由汇编编译器识别,没有对应的机器指令

3.其他符号:如+-*/等,由编译器识别,没有对应的机器指令

 

 

1.4 存储器

CPU要完成一系列规定的操作,需要两个重要的元素,一是指令(做什么操作),另外一个是数据(对什么做操作) 。计算机中的很多地方都存储有我们需要的处理的数据,比如内存,比如硬盘,比如寄存器。但是这里要注意的是,CPU要取得需要处理的数据需要将硬盘上的传入内存才能拱CPU调用。

 

1.5 指令和数据

指令和数据都是在内存上的二进制信息,CPU赋予不同的二进制于数据或者指令的意义。例如:内存中二进制信息1000100111011000,计算机可以把它看作大小为89D8H的数据来处理,也可以理解为mov ax,bx.这里我们要明白一个概念就是内存上的指令和数据的区别是又计算机识别的,就其表现形式来说都是二进制代码,无差。

 

1.6 存储单元

计算机中的信息是按字节存储的,每个字节代表8位二进制位。对于128个存储单元的存储器来说,我们可以认为其容量为128字节。当然大容量的存储器还有以下一些换算关系:1KB=1023B 1M=1024KB 1G=1024MB 1TB=1024GB

 

1.7 CPU对存储单元的读写

计算机中的存储单元都是从零编号,每个存储单元都有自己的编号,我们可以称之为地址。这个地址唯一标识一个存储单元。CPU想要从某个存储单元中读取数据,那么就要通过该地址进行寻址。

计算机中包括三类总线:地址总线,数据总线,控制总线。CPU通过这三类总线与外部存储设备进行数据交互和控制。其中地址总线用于传输寻址存储器的地址,数据总线用于从寻址到的存储器进行读写数据,控制总线进行器件的选择和读写命令的控制。

图中地址总线传输三号地址进行寻址,控制总线发送内存读取命令对三号地址存储器中的信息进行读取,数据总线将三号地址存储器中的08传送的CPU。

对于8086CPU,下面的机器码,能够完成从三号内存地址单元读取数据。

机器码:     101000010000001100000000  含义:从三号地址内存单元读取数据到寄存器AX

        汇编指令:mov AX,[3]

 

1.8 地址总线

地址总线的位数决定了寻址空间的大小,比如16位地址总线,每位地址总线代表高低电平两个状态,那么16为地址总线代表了2^16种状态,2^16=65536byte 即65536/1024=64kB、

上图为对地址为1101000000的内存单元寻址示意。

 

1.9 数据总线

CPU通过数据总线和外部存储器进行数据传递,数据总线的大小决定了传输的速度,比如8位数据总线一次性可传输8位数据,16位数据总线一次性可传输16位数据。8088CPU数据总线为8位,8086CPU数据总线为16位。

举个例子,分别以8位和16位数据总线向内存中写入89D8如图所示:

 

1.10 控制总线

cpu通过控制总线对外部器件进行控制,有多少根控制总线就可以有多少总控制,比如对内存的读写代表两种控制命令。

 

1.11 内存空间概述,主板,接口卡

地址总线的位数决定了内存寻址空间的大小,比如10位地址总线,可寻址2^10=1024byte的地址。每台计算机都有主板,主板上的各种器件(CPU,内存,外围芯片,扩展槽)通过地址总线,控制总线和数据总线链接。在计算机中,CPU不能直接对外部设备进行控制,对外部设备直接控制的是接口卡,接口卡插在扩展槽上,扩展槽与CPU通过总线相连,进而CPU通过对扩展槽上的接口卡控制达到对外设控制的目的。

 

1.12 各类存储器芯片

存储器包括两大类随机存储器(RAM)和只读存储器(ROM).其中随机存储器用于存储CPU运行所需的程序和数据,不过掉电之后,RAM存储器中的数据和程序会丢失。只读存储器只能读取其中的数据不能改写其中的数据。

其中RAM包括主板上的RAM,扩展槽上的RAM和接口卡上的RAM(比如显存)

另外装有BIOS的ROM,例如主板上的ROM,显卡上的ROM等。

计算机中各类存储器的逻辑连接情况。

 

1.13 内存地址空间

虽然在1.12中介绍了很多存储器,但是他们都是通过地址总线与CPU相连的,另外CPU这些存储器读写的时候都是通过控制总线发送读写命令。很重要的一点是,CPU将对这些存储器统一编址,这样就可以在一个地址空间里对计算机中的所有存储器进行寻址。

图中内存地址的最前面一部分为主存储器的地址空间,紧接着为显存地址空间。我们可以根据寻址范围将需要读取和写入的数据写入或者读取。内存地址的大小收到地址总线的限制,前面已经提到过,对于N条地址总线的内存空间寻址范围为2^N。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值