一、基础知识
1、汇编语言由三类指令组成
- 汇编指令:机器码的助记符,有对应的机器码。
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行。
- 其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
汇编语言的核心是汇编指令,它决定了汇编语言的特性。
2、指令和数据
指令和数据是应用上的概念,在内存或磁盘上,指令和数据没有任何区别,都是二进制信息。
二、硬件组成
1、主板
主板上由核心器件和一些主要器件,这些器件通过总线相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接口卡。
2、存储器
- 存储单元从零开始顺序编号。
- 一个存储单元可以存储8个bit,即8位二进制数。
2.1、各类存储器芯片
2.1.1、随机存储器
用于存放CPU使用的绝大部分程序和数据,主随机存储器一般由俩个位置上的RAM组成,装在主板上的RAM和插在扩展插槽上的RAM。
2.1.2、装有BIOS的ROM
BIOS是主板和各类接口卡(如显卡、网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上插有存储相应BIOS的ROM。
2.1.3、接口卡上的RAM
某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的是显示卡上的RAM,一般称为显存。
2.2、内存空间
所有物理存储器被看作一个由若干个存储单元(内存单元)组成的逻辑存储器,每个物理存储器在这个逻辑存储器中占有一个地址段,即一段地址空间。cpu在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据。
8086PC机内存地址空间分配情况。
2.3、CPU对存储器的读写
- 地址总线:它的宽度决定了cpu的寻址能力。
- 数据总线:它的宽度决定了cpu与其他器件进行数据传送时的一次数据传送量。
- 控制总线:它的宽度决定了cpu对系统中其他器件的控制能力。
3、接口卡
CPU不能直接控制外部设备(显示器、音响、打印机),但可以直接控制扩展插槽上的接口卡,因此对外部设备的控制,可以通过扩展插槽上的接口卡间接控制。
4、寄存器(8086)
8086CPU有14个寄存器,每个寄存器都有一个名称。AX、BX、CX、DX、SI、DI、SP、BP、CS、SS、DS、ES、PSW。
4.1、通用寄存器(AX、BX、CX、DX)
为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,因此8086CPU的AX、BX、CX、DX、这个四个寄存器都可以分为俩个可独立使用的8位寄存器来用。
4.1.1、8086CPU给出物理地址的方法
物理地址=段地址x16+偏移地址
本质含义:基础地址(段地址x16)+偏移地址=物理地址
4.1.2、段的概念
内存并没有分段,段的划分来自于CPU,由于8086CPU用”基础地址+偏移地址=物理地址“的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。
注意俩点:1.段的起始地址是16的倍数。2.段的最大长度为64KB。
4.2、段寄存器(CS、DS、SS、ES)
4.2.1、CS和IP
CS为代码段寄存器,IP为指令寄存器,它们指示了CPU当前读取指令的地址。假设CS为M,IP为N,则当前要读取指令的地址为Mx16+N单元开始。
4.2.2、修改CS、IP的指令
mov为传送指令,它能够修改大多数寄存器的值,但不能修改CS、IP寄存器的值,可以通过转移指令JMP指令来修改。
例如:jmp 2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将从2AE33H处读取指令。
如果只想修改IP的内容,可用形如”jmp某一合法寄存器“的指令完成,如jmp ax。