【汇编语言】基础知识点梳理,新手友好(参考王爽老师的《汇编语言》第四版)

预备知识

        1,汇编语言其实是和具体的微处理器(也就是CPU)相联系的,因为每一种微处理器内部的硬件结构和设计不同,所以需要不同的电平脉冲控制。因此每一种微处理器对应的机器指令集并不不同,汇编语言也都不一样。因此我们学习汇编语言,学习的其实是一种通用的、常用的微处理器的汇编语言。比如典型的intel8086处理器,和80386的汇编语言不一定完全一样,但是很多逻辑和语法是类似的。

      学习目标:  获得底层的编程体验,和理解机器运行程序的机理。

多数教程都是以intel的8086处理器来作为学习对象(因为这个芯片非常典型),来了解汇编语言,所以此文也是如此。

第一章:基础知识

1.1硬件知识的重要性

因为汇编语言是一种直接在硬件之上工作的编程语言,所以我们欲了解汇编语言,就必须对它工作的基础,也就是硬件系统有一定的了解。(需同步学习《微机原理与接口》,《计算机组成原理》等课程)

1.2汇编语言的发展

机器语言:机器指令的集合。同理:

汇编语言:汇编指令的集合,而汇编指令是机器指令便于记忆的书写格式。

机器语言其实就是一系列二进制数字,计算机将之转变为一列高低电平,来驱使计算机的电子器件。所以机器语言其实才是真正意义上最“底层”的语言。

但是因为机器语言不利于记忆和使用,为了解决这个问题,早期程序员们用一些助记符来表示一串0,1代码,于是汇编语言应运而生。

推理:编程语言就是这样一步一步发展出来的,从机器语言到汇编语言,再到高级语言,如BASIC,C,然后再到JAVA,Python这种高级编程语言。其实都是对指令的进一步抽象,使其更符合人的语言记忆和表达习惯,越接近人的自然语言,都是为了让人类更好使用罢了。

(所以你会发现,如果对于一个英语好或以英语为母语的人来说,即使他没学过任何编程语言,但是给他一段简单的Python代码,他都能把意思猜个八九不离十。我个人感觉Python代码就是用英语白话文写的句子。在编程世界里,他们直接写日常用语就可以指挥计算机运算和输出,简直就是“言出法随”。)

汇编语言的编译器,作用:将  汇编语言  编译成  机器码(0,1代码)  ,因为计算机只看得懂0,1代码。所以对于不管是什么语言,我们最终都得翻译成机器语言,计算机才能理解,这就是为什么写代码需要编译器了。

1.3指令和数据,存储器

要想让一个CUP工作,我们只需要给它两样东西。指令 和 数据,这些都在存储器(内存)中存放。CUP通过三根线和【内存】相连接。

这里有两点需要注意:

        1,在内存或磁盘(也是存储东西的)上,指令和数据没有任何区别,都是二进制信息。它到底是指令还是数据,看你自己给它赋予的意义。

        2,内存,也就是存储器的一种。一般来说,一个存储器被划分成若干个存储单元,一个存储单元存放1个字节(Byte),也就是说一个存储单元有8位(bit)。如果一个存储器有128个存储单元,也就是有128B的存储空间。

        3,三根线的来源:地址总线,数据总线,控制总线。

1.4三根线的介绍:地址总线、数据总线和控制总线

        地址总线:

地址总线的位数确定了CPU可以寻址的内存单元的数量。比如8根线,可以有2的8次方的组合情况。00000000到11111111,可以访问256个内存单元,也就是说,通过这八根线,可以对256个内存单元(每个内存单位可以存放一个字节的信息)编号和访问,从0~255。

        数据总线:

数据总线的宽度决定了CPU和外界(比如内存或其他器件)传输信息的速度,也是一次能处理的二进制数的位数。例如8086CUP的数据总线的宽度为16位,即一次可以传输16个二进制数。所以8086CPU是16位字长的。8088只有8根数据线,所以一次只能传输8位数据,是8位的CPU。多少位的CPU,数据总线就有多少根,一次性能处理的数据就有多少位。

        控制总线:

控制总线只是一个总称,它是一些不同控制线的集合。多少根控制总线就意味着CPU对外界有多少种控制,因此控制总线决定了CPU对外界的控制能力。

8086CPU的数据总线是16根,所以它是16位的。但是它的地址总线是20根,所以可寻址(或者说 定位)2的20次方B的内存单元(一个内存单元的大小 是 1B),所以装载了8086CPU的PC机的内存大小为1MB。80386CPU的地址总线宽度为32,则内存地址空间最大为4GB。

内存地址空间:对主板上各个物理存储器(ROM、RAM)整体的抽象映射,一一对应的关系。比如,如果我们想向显示器上输出一段信息,这一定要把这个信息写到显存对应的内存地址空间中。

练习题:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值