一. 为什么学习汇编
- 汇编语言仍然在发挥不可替代的作用
- 效率
- 运行效率: 开发软件核心部件, 快速执行和实时响应
- 开发效率: 做合适的事, 开发效率无敌
- 底层: 计算机及外围设备的驱动程序
- 操作系统的内核
- 嵌入式系统
- 效率
- 在学习计算机中起到独特作用
- 便于加深对计算机原理和操作系统课程的理解
- 感知体会和理解机器的逻辑功能
- 学会底层程序的调试和错误分析方法
二. 机器语言与机器指令
- 机器语言是机器指令的集合
- 机器指令是一台机器可以正确执行的命令
- 之前机器指令由一串二进制数表示, 010101010
三. 汇编语言与汇编指令
汇编语言的主体是汇编指令
-
汇编指令和机器指令的差别在于指令的表示方法上
- 汇编指令是机器指令便于记忆的书写格式
- 汇编指令是机器指令的助记符
机器指令:
1000100111011000
操作: 将寄存器BX 内容送到AX 中
汇编指令:
MOV AX BX
汇编语言程序示例
四. 计算机的组成
CPU 是计算机的核心部件, 它控制整个计算机的运作并进行计算. 想让一个CPU 工作就必须向它发送指令和数据
指令和数据在存储器(内存) 中存放, 离开内存, CPU 也无法工作
1. 指令和数据表示
两者都是存储在内存或磁盘中, 都是二进制数据
一串二进制数据是数据还是指令, 取决于CPU 怎么看待的
2. 存储单元
存储器被划分为若干存储单元, 每个都是从0 开始顺序编号
一个存储器有128 个存储单元, 编号0~127
内存空间很大, 8086 有20 条数据线, 寻址空间为, 为1MB
3. 总线
连接CPU 和其他芯片的导线, 通常称为总线
物理上就是一根根导线的集合
逻辑上划分为: 地址总线, 数据总线, 控制总线
CPU 是通过地址总线来指定存储单元的
地址总线宽度, 决定了可寻址的存储单元大小
N 根地址总线, 宽度为N, 对应寻址空间为
CPU与内存或其他器件之间的数据传送是通过数据总线来进行的
数据总线的宽度决定了CPU 和外界的数据传送速度
CPU 通过控制总线对外部器件进行控制
控制总线是一些不同控制线的集合
宽度决定了CPU 对外部器件的控制能力
4. 性能图
CPU | 地址总线宽度 | 寻址能力 | 数据总线宽度 | 一次传送数据 | 读取1KB数据次数 |
---|---|---|---|---|---|
8080 | 16 | 64KB | 8 | 1B | 1024 |
8088 | 20 | 1MB | 8 | 1B | 1024 |
8086 | 20 | 1MB | 16 | 2B | 512 |
80286 | 24 | 16MB | 16 | 2B | 512 |
80386 | 32 | 4GB | 32 | 4B | 256 |
五. CPU 对存储器的读写
和外部器件进行三类信息交互
- 存储单元的地址(地址信息)
- 器件的选择, 读或者写命令(控制信息)
- 读或写数据(数据信息)
例子:
机器码: 101000000000001100000000
16 进制: A00300
汇编指令:
MOV AL,[3]
含义: 从3 单元读取数据送入寄存器AL
六. 内存地址空间
CPU 地址总线宽度N, 寻址空间为B
8086CPU 地址在宽度为20, 可以寻址1MB 个内存单元, 其内存地址空间为1MB
将各类存储器看做一个逻辑存储器, 统一编址
所有物理存储器被看做一个由若干存储单元组成的逻辑存储器
每个物理存储器在这个逻辑存储器中占有一个地址段, 即一段地址空间
CPU 在这段地址空间中读写数据, 实际上就是在相对应的物理存储器中读写数据
七. 环境搭建
使用DOS 模拟环境
工具DOSBox
文件和目录
1. 目录
2. 安装DOSBox
默认即可
3. 运行及挂载
4. 工具介绍
- masm.ext 汇编
- link.exe 连接
- Debug.exe 调试
- edit.com 和edlin.com 编程程序