汇编语言
- 机器语言
CPU:执行机器指令,进行运算。(中央处理单元),是一种微处理器。
每一种微处理器都有自己的机器指令集,也就是机器语言。
- 汇编语言:
主体:汇编指令,是机器指令便于记忆的书写格式
- 寄存器
CPU中可以存储数据的器件,一个CPU中有多个寄存器。
不同
CPU
寄存器数量,结构不同,下面说的都是
8086CPU
8086CPU
的构造
每个寄存器都是
16
位的,可以存放
2Byte
寄存器的分类:
1.
通用寄存器:
AX, BX, CX, DX
。存放普通数据,也有特殊用途。
注:为了保证兼容性,通用寄存器可以把
2Byte
分成
2
个
1Byte
使用。高位是
xh
,地位是
xl
2.
指针和变址寄存器:
BP,SP,SI,DI
。
3.
指令指针寄存器:
IP
4.
段寄存器:
CS,DS,ES,SS
5.
状态条件寄存器:
PSW
- 编译器:程序员用汇编语言写出源程序,再用汇编编译器将其编译为机器码
- 汇编语言的组成
- 汇编指令:机器码的助记符,有对应的机器码。
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
- 其他符号:如+,-,*,/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
- 存储单元:8个bit组成一个Byte。一个存储单元可以存储128个Byte。
存储单元的编号
一般用B来代表Byte
- CPU对存储器的读写
要和外部器件进行下面三类信息的交互
- 存储单元的地址
- 器件的选择,读或写的命令(控制信息)
- 读或写的数据(数据的信息)
总线
地址总线
功能:
CPU
告诉内存,我要访问的内存地址单元的编号是什么
寻址能力:因为
CPU
是计算机的核心,所以数据存放在内存的位置要保证
CPU
能访问到,因此地址
总线数量决定了寻址能力。寻址能力
=2^(
地址总线数量
)×1B(
一个单元存放
1B
的内容
)
数据总线
功能:
CPU
与内存之间传输数据
最大可传输数据:数据总线的数量决定了
CPU
一次性最大可传输数据。我们知道
1Byte=8bit
,所以
8
根数据总线就是
1B
控制总线
功能:传送指令信号
最大指令数量:每一条指令在不同
CPU
中有不同的编号,比如某个
CPU
中,
1
代表
add
,
2
代表
sub
。控制总线传送指令,实质就是传送指令编号。我们还知道计算机是
2
进制的,所以最大指令数
量
=2^(
控制总线数量
)
小结
第二章 寄存器
8086CPU的寄存器都是十六位的,可以存放两字节。
AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,被称为通用寄存器。
这四个寄存器都可分为两个可独立使用的8位寄存器来用:
- AX可分为AH和AL
- BX可分为BH和BL
- CX可分为CH和CL
- DX可分为DH和DL
- 字在寄存器中的存储
8086CPU一次性可以处理以下两种尺寸的数据
- 字节:记为Byte,一个字节由8个bit组成,可以存在8位寄存器中
- 字:几位word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节
-
几条汇编指令
写汇编指令或寄存器的名称时可不区分大小写
- 物理地址:所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这一个唯一的地址称为物理地址。
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址
- 16位结构描述了CPU具有以下几个方面的结构特性
- 运算器一次最多可以处理16位的数据
- 寄存器的最大宽度为16位
- 寄存器和运算器之间的通路为16位
对于16位CPU,能一次性处理、传输、暂时存储16位的地址。
CPU
寻址
8086CPU
的地址线数量是
20
,但是我们知道寄存器的大小都是
16
,
CPU
寻址要解决的问题就是如何通过
16
位输出
20
位的信息
解决办法:说
2
次。
CPU
中有一个地址加法器,其他部件分别告诉它段地址和偏移地址,地址加法器就计
算
“
段地址
×16+
偏移地址
=
物理地址
”
,再把这个物理地址告诉输入输出控制电路
重要寄存器的功能说明(这里说的是
CPU
默认的功能)
CS
:指令段地址
deIP
:指令偏移地址
DS
:访存时的段地址
SS
:栈顶的段地址
SP
:栈顶的偏移地址(入栈出栈只改变
SP
的值)
CX
:循环次数
查看CPU和内存,用机器指令和汇编指令编程
Debug:
Debug是Dos,Windows都提供的实模式程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况何在机器码及跟踪程序的运行。
- Debug功能:
- r:查看,改变CPU寄存器的内容
- d:查看内存中的内容
- e:改写内存中的内容
- u:将机器中的机器指令翻译成汇编指令
- t:执行一条机指令
- a:以汇编指令的格式在内存中写入一条机器指令
第三章 寄存器(内存访问)
CPU要读写一个内存单元时,必须先给出这个内存单元的地址,在8086PC中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址。
- 字的传送
在mov指令中给出16位的寄存器就可以进行16位数据的传送了
eg: