汇编语言基础知识
笔记纯属记录个人学习过程使用,参考教程http://blog.fishc.com/category/assembly/page/8;欢迎转载
一:汇编语言入门
汇编语言是直接在硬件之上工作的编程语言,汇编课程的研究重点放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。
1.机器语言
机器语言:机器指令的集合。
机器指令:一台机器可以正确执行的命令。
例如:机器指令:01010000 对应的汇编语言为(PUSH AX)
电平脉冲:
S = 768 + 12288 – 1280
机器码:
101100000000000000000011
000001010000000000110000
001011010000000000000101
2. 汇编语言的产生
汇编语言的主体是汇编指令
汇编指令是机器指令的助记符。
机器指令: 1000100111011000
操作:寄存器 BX的内容送到AX中
汇编指令:MOV AX,BX
这样的写法与人类语言接近,便于阅读和记忆。
寄存器:简单的讲是CPU中可以存储数据的器件,一个CPU中有多个寄存器。
AX是其中一个寄存器的代号,
BX是另一个寄存器的代号。
计算机能读懂的只有机器指令,计算机执行用汇编指令编写的程序过程如图:
3. 汇编语言组成
汇编语言组成结构:
1、汇编指令(机器码的助记符,核心)
2、伪指令 (由编译器执行)
3、其它符号(由编译器识别)
存储器
CPU 是计算机的核心部件.它控制整个计算机的运作并进行运算,要想让一个CPU 工作,就必须向它提供指令和数据。
指令和数据在存储器中存放,也就是平时所说的内存。
在一台PC机中内存的作用仅次于CPU。
磁盘不同于内存,磁盘上的数据或程序(指令集)如果不读到内存中,就无法被CPU 使用。
指令和数据
指令和数据是应用上的概念。
在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
二进制信息:
1000100111011000
─> 89D8H (数据)
1000100111011000
─> MOV AX,BX (程序,指令)
存储单元
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号;
例如:
一个存储器有128个存储单元,
编号从0~127。
CPU对存储器的读写
CPU要想进行数据的读写,必须和外部器件(标准的说法是芯片)进行三类信息的交互:
1.存储单元的地址(地址信息)
2.器件的选择,读或写命令(控制信息)
3.读或写的数据(数据信息)
那么CPU是通过什么将地址、数据和控制信息传到存储芯片中的呢?
电子计算机能处理、传输的信息都是电信号,电信号当然要用导线传送。
在计算机中专门有连接CPU和其他芯片的导线,通常称为总线。
物理上:一根根导线的集合;
逻辑上划分为:
地址总线
数据总线
控制总线
总线在逻辑上划分的图示:
地址总线
CPU是通过地址总线来指定存储单元的。
地址总线上能传送多少个不同的信息,CPU就可以对多少个存储单元进行寻址。
那么,地址总线如何发送地址信息呢?
一个CPU有N根地址总线,则可以说这个CPU的地址总线的宽度为N。
这样的CPU最多可以寻找2的N次方个内存单元。
CPU与内存或其它器件之间的数据传送是通过数据总线来进行的。
数据总线的宽度决定了CPU和外界的数据传送速度。
我们来分别看一下它们向内存中写入数据89D8H时,是如何通过数据总线传送数据的:
8位数据总线上传送的信息
16位数据总线上传送的信息
控制总线
CPU对外部器件的控制是通过控制总线来进行的。在这里控制总线是个总称,控制总线是一些不同控制线的集合。
有多少根控制总线,就意味着CPU提供了对外部器件的多少种控制。
所以,控制总线的宽度决定了CPU对外部器件的控制能力。
控制总线上发送的控制信息
前面所讲的内存读或写命令是由几根控制线综合发出的:
其中有一根名为读信号输出控制线负责由CPU 向外传送读信号,CPU 向该控制线上输出低电平表示将要读取数据;
有一根名为写信号输出控制线负责由CPU向外传送写信号。
小结
(1)汇编指令是机器指令的助记符,同机器指令一一对应。
(2)每一种CPU都有自己的汇编指令集。
(3)CPU可以直接使用的信息在存储器中存放。
(4)在存储器中指令和数据没有任何区别,都是二进制信息。
(5)存储单元从零开始顺序编号。
(6)一个存储单元可以存储 8 个 bit (用作单位写成“b”),即 8 位二进制数。
(7)1B = 8b 1KB = 1024B 1MB = 1024KB 1GB = 1024MB
(8)每一个CPU芯片都有许多管脚,这些管脚和总线相连。也可以说,这些管脚引出总线。
一个CPU可以引出三种总线的宽度标志了这个CPU的不同方面的性能:
地址总线的宽度决定了CPU的寻址能力;
数据总线的宽度决定了CPU与其它器件进行数据传送时的一次数据传送量;
控制总线宽度决定了CPU对系统中其它器件的控制能力。
在汇编课程中,我们从功能的角度介绍了这三类总线,对实际的连接情况不做讨论。