汇编语言基础知识
计算机系统概述
硬件&软件
硬件
- 中央处理器CPU
- 控制器、运算器、寄存器
- 存储器(呈现的是存储器地址)
- 主存储器:RAM和ROM
- 辅助存储器:磁盘、光盘、U盘
- 外部设备(呈现出端口,即I/O地址)
- 输入和输出设备
软件
- 系统软件
- 应用软件
进制转换
十进制小数转换成二或十六进制:小数部分分别乘以各自的基数,记录整数部分,直到小数部分为0为止
二或十六进制数转换成十进制数
ASCII码
回车:\(0DH\)
换行:\(0AH\)
响铃:\(07H\)
数码\(0\sim 9\):\(30H\sim 39H\)
大写字母\(A\sim Z\):\(41H\sim 5AH\)
小写字母\(a\sim z\):\(61H\sim7AH\)
空格:\(20H\)
补码
8位二进制补码:\(-128\sim +127\)
16位二进制补码:\(-2^{15}\sim +2^{15}-1\)
32位二进制补码:\(-2^{31}\sim +2^{31}-1\)
微机的软件
应用软件:
- 文本编辑器
- 汇编程序
- 链接程序
- 调试程序
- 集成化开发环境
微型计算机系统
主存空间分配:
整个\(1MB\)主存空间从低位到高位地址可分为四个区域:
- 基本RAM区(00000H-9FFFFH):操作系统占掉一部分低地址,其他向用户程序开放
- 保留RAM区(A0000H-BFFFFH):为系统安排的“显示缓存存储区”
- 扩展ROM区(C0000H-DFFFFH):用于为系统不直接提供支持的外设安排设备驱动程序
- 系统ROM区(E0000H-FFFFFH):由系统占用,主要提供ROM-BIOS程序
8086微处理器
结构
总线接口单元BIU:负责读取指令和操作数
执行单元EU:负责指令译码和执行
- 地址总线是20位,8086有1兆存储单元,1兆是20位
- 数据总线16位,8086有16根数据线
寄存器
数据寄存器
AX:累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等
BX:基址寄存器,常用做存放存储器地址
CX:计数器,作为循环和串操作等指令中的隐含计数器
DX:数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
变址寄存器
SI:源变址寄存器
DI:目的变址寄存器
指针寄存器
SP为堆栈指针寄存器,指示栈顶的偏移地址,不能再用于其他目的,具有专用目的
BP为基址指针寄存器,表示数据在堆栈段中的基地址
SP和BP寄存器与SS段寄存器联合使用确定堆栈段中的存储单元地址
标志寄存器
指针指令IP
指令指针寄存器IP,指示代码段中指令的偏移地址
它与代码段寄存器CS联用,确定下一条指令的物理地址
计算机通过CS : IP寄存器来控制指令序列的执行流程
段寄存器
CS:指明代码段的起始地址
- \(CS : IP\)取得下一条要执行的指令
SS:指明堆栈段的起始地址
- \(SS:SP\)操作堆栈顶的数据
DS:指明数据段的起始地址
- \(DS:EA\)存取数据段中的数据
ES:指明附加段的起始地址
- \(ES:EA\)存取附加段中的数据
- 是串操作的目的区必须是附加段
数据地址对齐
字单元安排在偶地址(xxx0B)、双字单元安排在 模 4 地 址(xx00B)
存储器的分段管理
8086 CPU有20条地址线但数据总线是16位
最大可寻址空间为\(2^{20}=1MB\)
物理地址范围从\(00000H~FFFFFH\)
8086CPU将\(1MB\)空间分成许多逻辑段
- 每个段最大限制为64KB
- 段地址的低4位为0000B
这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址
逻辑地址:段基地址:段内偏移地址
- 段地址说明逻辑段在主存中的起始位置,8086规定段地址必须是模16地址:xxxx0H,省略低4位0000B,段地址就可以用16位数据表示,就能用16位段寄存器表达段地址
- 偏移地址说明主存单元距离段起始位置的偏移量,每段不超过64KB,偏移地址也可用16位数据表示
将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址
1MB空间的分段
指令的组成
操作码:
8086的寻址方式
立即数寻址
指令中的操作数存放在机器代码中
寄存器寻址
操作数存放在CPU的内部寄存器reg中
存储器寻址
指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中
直接寻址方式:指令中直接包含有效地址
1
2mov ax, [2000H]
;AX <- DS:[2000H]寄存器间接寻址方式:有效地址存放在基址寄存器BX或变址寄存器SI、DI中
寄存器相对寻址方式:有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX/BP或SI/DI
- BX/SI/DI寄存器默认在DS,对应BP寄存器默认在SS
基址变址寻址方式:有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:
- 有效地址=BX/BP+SI/DI
- 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀
相对基址变址寻址方式:有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:
- 有效地址=BX/BP+SI/DI+8/16位位移量
- 段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀
寻址的多种表示方式
1 | MOV AX,[BX][SI] |
数据寻址的组合
1 | reg, imm/reg/mem |