Loading
0

刚刚学习汇编总结的基础知识

本次说一下跟我们cpu 底层有关的编程语言。汇编语言。

汇编为什么会产生?

我们先讲一下机器语言,机器语言是机器指令的集合,简单来说,机器语言就是机器可以读懂的语言,它是由二进制编写的,计算转变为高低电平,驱使电子器件驱动,进行运算。

早期的程序设计均使用机器语言,程序员用0和1编写程序代码打在纸带或者卡片上,1打孔,0不打孔。再通过卡片机或者纸带机输入计算机进行运算。但由于二进制编写的程序费事,而且打错一个0或者1就需要重新编写程序,所以非常麻烦,一个“hello world”的程序就需要几十行机器码,如果一个1写成0,那么错误又得去哪里找呢?程序员他们很快发现了机器语言的麻烦,阻碍了行业发展,于是汇编语言产生了。

例子1:

汇编语言 : mov ax,bx

机器语言 :1000100111011000

上面操作,把bx的数据送入ax中,

这两个都是寄存器,具体作用我们后面会说到。寄存器的作用主要是CPU用来存放数据的器件。

汇编语言的核心是汇编指令。

存储器

CPU是计算机的核心部件,控制计算机运作进行运算。想让CPU工作就需要提供指令和数据。指令和数据在存储器中存放。也就是我们说的内存。磁盘不同于内存,磁盘的程序或者数据读不到内存中,就无法被CPU利用我们先来了解一下CPU如何从内存中读取信息,以及写入内存。

指令and数据

指令和数据都是应用上的概念,两者没有区别,都是二进制信息。

1000100111011000 --> 89D8H(数据)

1000100111011000 --> mov ax,bx(指令)

储存单元

存储器被划分为若干份存储单元,每个单元都是从0开始编号,假如第一个存储器有100个存储器,编号为0-99.

一个存储单元可以储存多少信息呢?计算机最小单位为bit 8个bit组成一个Byte,也就是8个二进制单位,一个存储器有100个单元,那么他可以存储100个Byte

CPU对存储器的读写

CPU想进行数据的读写,必须和外部器件进行3类信息的交互

存储单元的地址(地址信息)

器件的选择,读或者写的命令(控制信息)

读或写的数据(数据信息)

他们是由三种不同类型的线来传输的。

CPU读取数据过程如下。

我们要读取3号单元里面的数据。

(1) 通过地址线将地址信息3发出。

(2)通过控制线发出内存读命令,选中存储器芯片,并在里面读取数据。

(3)存储器将3号单元里面的数据送入CPU。

接下来我将跟你说我们如何命令cpu在内存中读取数据。

机器码:101000010000001100000000

含义:从3号单元读取数据送入ax

汇编指令:mov ax,bx

含义:从3号单元读取数据送入ax

地址总线

我们知道了CPU通过地址总线来指定存储单元,可见地址总线能传送多少不同的信息,CPU就可以对多少个存储单元进行寻址。

假设一个cpu有10根地址总线,我们看一下寻址情况。10根导线可以传输10位二进制数据,而10位二进制数可以表示多少个不同的数据呢?2的10次方个,最小为0,最大为1023

一个cpu有N根地址线,我们说这个CPU的地址线宽度为N。这样他可以寻找2的N次方个内存单元。地址总线是用来寻址的。

数据总线

CPU与内存或者其他部件传输数据用到的是数据总线,数据总线宽度决定了CPU传输数据的速度。8086cpu有16根数据线,他可以传输16位数据。数据总线是用来传输数据的。

控制总线

CPU对外部器件的控制是控制总线进行的,总线是个总称,控制总线是一些不同控制线的集合,有多少控制总线,就说明CPU对外部器件有多少种控制方式。控制总线的宽度决定了对外部器件的控制能力。CPU读写命令是由几根控制线综合发出的,CPU在控制线上输出低电平表示要读取数据,有一根为“写信号输出”的控制线则负责传送写信号

本文由A1d4m's blog(www.ychack.com)提供,文章原创版权所有,转载请注明!