目录
前言:
汇编语言的产生
汇编语言的组成
内存
指令和数据
cpu对内存的读写操作
地址总线
数据总线
控制总线
内存地址空间
前言:
汇编语言是直接在硬件之上工作的 编程语言,我们首先了解硬件系统的机构,才能有效地应用汇编语言对其编程,学习汇编语言,会更加深刻的理解计算机组成原理 操作系统,对于汇编语言的学习可以培养底层编程的意识和思想以及深入理解机器工作的基本原理;
汇编语言的产生
谈及汇编语言的产生,就不得不涉及到机器语言
机器语言:机器语言是机器指令的集合,机器指令即为一台机器可以正确执行的命令;
电子计算机的机器指令是一系列二进制数字,例如:1000100111011000
cpu(central processing unit,中央处理单元)cpu是一种微处理器,由于硬件设计和内部结构不同,需要使用不同的电平脉冲信号控制不同的微处理器使其工作;
(注:本文随后所述以8086cpu为重点论述对象)
机器语言的缺点:由于书写和阅读机器码程序,要记住所有抽象的二进制代码,而且机器码的晦涩难懂和不易查错,因此诞生了汇编语言,汇编语言主体是汇编指令,汇编指令是机器指令的助记符;
示例:
操作: 将寄存器BX的内容送到AX中
机器指令:1000100111011000
汇编指令: mov ax,bx
汇编语言的组成
汇编语言编写程序的过程:
当汇编语言诞生之后,程序员通过汇编指令编写源程序,将汇编指令送到编译器翻译成机器指令,由计算机最终执行;
汇编语言的组成:
1. 汇编指令: 机器码的助记符,有对应的机器码。
2. 伪指令 : 没有对应的机器码,由编译器执行,计算机不执行
3. 其他符号:+ - * / 等,由编译器识别,没有对应机器码;
内存
cpu是计算机的核心部件,控制整个计算机的运作并进行运算,想让cpu工作,必须向cpu提供指令和数据,指令和数据在内存中存放;磁盘上的数据或者程序如果读不到内存当中,无法被cpu使用
指令和数据
在内存或者磁盘上,指令和数据没有任何的区别,都是二进制信息;
cpu在工作时将有的二进制信息看做指令,有的二进制信息看做数据,为同样的信息赋予不同的意义;
例如:
1000100111011000 计算机既可将其看作为大小为89D8H的数据处理,又可以看做汇编指令
mov ax,bx执行
cpu对内存的读写操作
CPU要从内存中读取数据,首先要指定存储单元的地址,即首先要确定它要读取哪一个存储单元中的数据;
CPU在读写数据时需要指明,要对哪一个器件进行操作,进行哪种操作,从中读取数据还是写入数据;
CPU想要进行数据的读写,必须和芯片进行3类信息的交互
- 存储单元的地址(地址信息)
- 器件的选择,读/写的命令(控制信息)
- 读/写的数据(数据信息)
CPU通过导线以电信号的形式将 地址信息 控制信息 数据信息传输到内存中;
总线: CPU和其他芯片的导线称之为总线,总线从物理上来说就是一根根导线的集合;
总线从逻辑上划分为3类 地址总线 数据总线 控制总线;
CPU从三号单元读取数据过程如下:
地址总线
CPU通过地址总线指定存储器单元,地址总线能传递多少不同信息,CPU就可以对多少个存储单元进行寻址;
假设一个CPU有N个地址线,即CPU地址总线的宽度为N,最多可以寻找2的N次方个内存单元;
数据总线
CPU与内存之间的数据传送是通过数据总线来进行的,数据总线的宽度决定了CPU和外界的数据传送速度;
例如:8 根数据总线一次可以传送一个字节;
16根数据总线一次可以传送两个字节;
控制总线
CPU对外部器件的控制是通过控制总线来进行,有多少根控制总线,意味着cpu对外部器件的多少种控制,控制总线的宽度决定了cpu对外部器件的控制能力;
内存地址空间
存储器从读写属性上可以分为俩类:
1. RAM (随机存储器)正常工作状态下就可以随时快速的向存储器里写入数据或者从中读取数据,但是必须带电存储,关机后存储的内容丢失;
2. ROM(只读存储器)正常工作状态下只能从中读取数据,不能快速地随时修改或重新写入数据,断电后数据不会丢失;
内存地址空间是有若干个存储单元组成的逻辑存储器,一般划分为3类
- 主储存器的地址空间(一般由装在主板上的RAM和插在扩展插槽上的RAM组成);
- 显存的地址空间(显卡上的RAM)
- 各类ROM地址空间(一般由显卡上的ROM 网卡上的ROM 主板上的ROM组成);
示例: 8086PC机内存地址空间分配
注:
1. 从地址0-9FFFF的内存单元中读取数据,实际在读取主随机存储器中的数据;
2. 向地址A0000-BFFFF的内存单元中写数据,就是向显存写入数据,这些数据会被显卡输出到显示器上;
3. 向地址C0000-FFFFF的内存单元写入数据是无效操作,等于在修改只读存储器中的内容;