汇编语言的组成:至今有三类指令
1.汇编指令 机器码的助记符,有对应的机器码。
2.伪指令 没有对应的机器码,由编译器执行 ,计算机不执行。
3.其他符号 如+ - × / 由编译器识别, 没有对应的机器码。
内存(存储器):CPU要工作,就需要指令与数据,指令与 数据就需要内存给CPU,磁盘中的数据或指令先要加载到内存,然后内存再给CPU。
磁盘 -----> 内存------->CPU
指令与数据:他们在磁盘或内存中,是没有区别的,在应用上才有区别,在磁盘或内存上,都是二进制信息。
存储单元: 存储器是被划分为若干存储单元的,并以字节为最小单位(Byte = 8 bit),并且都进行了编号,这个编号可以看做是它的地址。
CPU对存储器的读写: CPU要去内存中拿数据,首先要会认路,才不会拿错,就需要指定内存单元地址;
在计算机中,不止只有存储器这一器件,所以CPU要指明对哪一器件。还要指明读或写。
即以下三点:
1.存储单元地址(地址信息)
2.器件选择,读或写的命令(控制信息)
3.读或写的数据(数据信息)
那,CPU是怎么将地址,数据,控制信息传到存储器芯片的呢????
原来CPU和其他芯片是有导线连接着的,我们称为 总线; 逻辑上分为三类 1.地址总线 2.数据总线 3.控制总线
| | 地址线------------------------> | |
| CPU | 数据线-------------------------> | 内存 |
| | 控制线------------------------> | |
读 1.CPU在地址线上发送地址信息。
2. CPU在控制总线发送内存读命令,选中存储器,并告知他,要从中读数据。
3. 存储器找到相应地址将其中的数据通过数据线送入CPU。
写:与读操作相似。
可是如何命令计算机进行读写呢???????
原来,计算机或微处理器要工作 ,需要向他输入 一定的驱动电平信号(也就是机器码啦)。
但机器码不宜记忆,就用汇编指令来表示。
如: MOV AX,[3] ---------传送3号单元的内容到AX 。
地址总线:CPU通过地址总线来指定存储单元,可见地址总线能传多少不同的信息,就可以知道CPU可以对多少内存单元寻址。
如果有N根地址线,那么CPU寻址范围是2的N次方个内存单元。
数据总线: CPU与内存或 其他器件之间的数据传输是通过数据总线,数据总线宽度决定了 CPU 与外界交换数据的数度
如 16根数据总线 一次可以传2字节。
控制总线:CPU控制外部器件的信息是通过控制总线传输。控制总线宽度决定了对外部器件提供多少种控制。
内存地址空间 :电脑上的各种存储器件,在物理上是独立的,但他们都通过总线与CPU相连,CPU对他们读写都是通过控制总线发出内存读写命令。
即,CPU操作他们,把他们都看做内存,把他们抽象成逻辑存储器,这个逻辑存储器就是内存地址空间,每个物理存储器都占有逻
辑存储器一段地址空间,在这段地址操作,就是对相应的物理器件操作。
寄存器:CPU是由运算器,控制器,寄存器等器件构成,这些器件靠内部总线相连(CPU内部),前面所说的总线就相当于,外部总线(CPU与主板上其他器件相连)
对程序员来说 CPU中最重要的是寄存器,因为寄存器可以由程序员通过指令读写,通过改变寄存器内容实现对CPU控制。
字在寄存器中存储:
字节:byte 一字节由8bit组成,可以在8位寄存器总存储
字 :word 一个字由两个字节组成,这两个字节分别称为高位字节与低位字节。一个字可以存在16位寄存器中
几条汇编指令:
通过汇编指令控制CPU工作。
MOV ax,18 将18送入寄存器AX中;
MOV ah,78 将78 送入寄存器AH中 ;
add ax,8 将AX中的数值加8;
mov ax,bx 将BX寄存器中的数据送入寄存器AX;
add ax,bx 将AX和BX中数据相加并存入寄存器AX中;
MOV指令可以有以下几种形式:
MOV 寄存器,数据
MOV 寄存器,寄存器
MOV 寄存器,内存单元
MOV 内存单元,寄存器
MOV 段寄存器,寄存器