汇编语言:基础

一篇前言

这是一系列的汇编语言学习的读书笔记,以及一些自己的理解系列文章。我想我会在循序渐进的学习中,写下对汇编的点点滴滴,一方面是给自己立一个短期的小目标,另一方面,如果您有缘看到了这一系列的文章,希望对您有所帮助。

机器语言和汇编语言

虽然我们在写程序的时候使用的是诸如C,C++等高级语言,但最终会通过编译器转换成二进制的机器语言,机器语言实际上是一堆二进制指令的集合,计算机会将它转换成高低电平驱动硬件工作,实际上计算机非常的笨蛋,只能认识高低电平,所以,我们用二进制来代替高低电平,例如我们要计算s = 768 + 12288 - 1280,机器码如下:

101110000000000000000011
000001010000000000110000
001011010000000000000101

这种机器码非常难以书写,修改和记忆,早起的程序员很快就发现了这些问题,于是他们就发明了汇编语言。
  汇编语言实际上是机器语言的另一种书写格式。
比如:机器指令:1000100111011000表示把寄存器 bx的内容放到ax中去,而对应的汇编指令可以写成mov ax,bx。这样的写法更容易记忆和理解。
寄存器:简单的理解就是一种cpu内部用来存放数据的东西。
  可是计算机只认识01这样的机器代码,那怎么让计算机认识更贴近人类语言的汇编语言呢?这时候就需要一个翻译的中间程序,把汇编语言翻译成01这样的机器指令,我们把它叫做编译器。下图展示了这个翻译过程,实际上我们今天使用的java,c等高级语言也会先翻译成汇编,再由汇编翻译成机器指令。



那么,汇编语言由哪些东西组成的呢?

  • 汇编指令:和机器码一一对应的汇编指令。像mov
  • 伪指令:没有对应的机器指令,由编译器执行,计算机不执行。
  • 其他符号:像+,-,*,/等,由编译器识别,也没有对应的机器码。

存储器

  cpu是计算机的核心部件,cpu要想工作,就必须要给它指令和数据,指令和数据在存储器中存放,也就是我们平时所说的内存。这里要注意,磁盘或者硬盘不同于内存,我们平时的程序是放在硬盘上的,如果想要运行程序,必须将程序的指令和数据加载到内存中。

指令和数据

  指令和数据在内存和磁盘上是没有区别的,都是一堆01的二进制数据。
比如:1000100111011000
作为数据是:89D8H (H代表16进制数据)
作为指令是:mov ax,bx

存储单元

存储器(这里所说的存储器,就是我们所说的内存,但不单指内存条,还有显存等硬件的内存)被划分为N个,就是很多个存储单元,你可以把它想象成一个个的小格子,每一个存储单元的大小是1个字节,也就是可以存放8个0101。它们从0开始编号,拥有自己的地址。
例如,下图是一个拥有128个存储单元的存储器的内存单元布局,0~127


计算机对存储器的读写

前面,我们讲cpu要想工作,必须有存储器提供指令和数据,我们知道存储器被划分为一个个的存储单元,数据在每一个存储单元中,cpu要想对存储器的内容进行访问至少要满足下面3个要求:
1、 存储单元的地址:cpu要知道内存单元的地址(也就是要知道我即将读取哪一个内存单元中的内容)。
2、 控制器信息:cpu是要读数据还是写数据
3、 数据信息:我们要写入或者读取的数据信息。

那么cpu又是通过什么将地址,控制信息,数据信息传递给存储器的呢?

我们知道cpu是通过高低电平驱动计算机硬件进行工作的,而传递这些电信号,需要导线,在计算机中连接cpu和其他各种芯片的导线,我们称为数据总线。

  • 物理上数据总线是一根根导线的集合
  • 逻辑上分为
    • 地址总线
    • 控制总线
    • 数据总线
      下图描述了cpu读取一次数据的过程

      1、cpu通过地址总线发送地址03到存储器中
      2、存储器通过地址03锁定3号内存单元
      3、cpu通过控制总线发出命令到存储器中
      4、存储器将内存单元03中的数据08通过数据总线送入cpu
      由上图可以了解到cpu是如何读取内存中的数据的,那么我们又怎么指挥cpu去读这个数据呢?
      要让cpu干活,应该向它输入驱动它工作的电平信息,也就是机器码。如下:
      机器码:1010000100000010000000
      含义:从3号内存单元读取数据到寄存器ax中
      机器码难遇记忆和理解,我们也可以用汇编指令来表示:
      mov ax,[03]
      含义:从3号内存单元读取数据到寄存器ax中

地址总线

cpu是通过地址总线来指定要操作的内存单元,那么地址总线上一次能传送的多少个不同的信息,多少个0101,决定了cpu能够对多少个内存单元进行寻址。

  • 我们平常说的16/32/64位计算机就是指计算机的寻址能力。
  • 地址总线上发送的信息.png

数据总线

cpu和存储器之间传输数据的总线,数据总线的的宽度,决定了一次能够传输数据的大小,8根数据总线一次可传输8bit(位),即一个字节大小,16根数据总线一次可传输16bit的数据,即2个字节大小。


8位数据总线上一次传输的信息.png

    
16数据总线上一次传输的信息.png

由此可见:数据总线的宽度决定了cpu与外界传输数据的速度。

控制总线

cpu对外部芯片的控制,是通过控制总线来完成的,这里控制总线只是个总称,控制总线是很多根不同控制线的集合。多少根控制总线,就决定了cpu能对多少个外部芯片的控制。

小结一下

以上呢都是一些枯燥的内容,但对于理解汇编又尤为重要的基础,我们稍作总结:

  • 汇编指令只是为了我们便于书写,理解,记忆机器指令的助记符,它和机器指令0101是一一对应的。
  • 每一种cpu有自己的汇编指令集。
  • cpu能够直接使用的数据或者指令呢,必须要加载到内存中,也就是说cpu只能够使用内存中的数据。(内存,高速缓存)
  • 在存储器中(内存中)指令和数据是没有区别的,其本质都是0101的二进制。
  • 存储器被划分为一个个的内存单元,内存单元从0开始编号,即为内存地址。
  • 一个存储单元可以存储8个bit,即位1个字节,8个0或1.
  • cpu引出了3种总线,标志着cpu不同方面的性能
    • 地址总线:标志着cpu的寻址能力
    • 数据总线:标志着cpu的传输速度的能力
    • 控制总线:决定了对外部芯片的控制能力。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,402评论 6 499
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,377评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,483评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,165评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,176评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,146评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,032评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,896评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,311评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,536评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,696评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,413评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,008评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,815评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,698评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,592评论 2 353

推荐阅读更多精彩内容