- 汇编语言
- 指令与数据
- 总线
机器指令难以辨别与记忆,于是汇编语言产生了。
来看一个例子:把寄存器 BX 的内容送到 AX 中。
机器指令: 1000100111011000汇编语言由 3 类指令组成:
汇编指令: mov ax,bx
(1) 汇编指令: 对应于机器码
(2) 伪指令: 编译器执行
(3) 其他符号: + - * / 等等,编译器执行,无对应机器码
汇编的核心在于汇编指令。
2.指令与数据
在内存或者磁盘上,指令与数据都是以二进制来存储。
那么计算机怎么知道一串的二进制数是数据呢,还是指令?实际上这是由我们告诉 cpu 哪些是数据,哪些是指令。
例如内存中的二进制数:
1000100111011000 -> 89D8H (当作数据处理)
1000100111011000 -> mov ax,bx (当作指令处理)
3.总线(bus)
cpu 在内存中找数据,需要指明对那里操作,是读还是写入。
这个工作由总线来完成,说白了,就是几根导线,这些导线专门连接 cpu 和 其他芯片。
总线分为 3 类:地址总线,控制总线,数据总线。
cpu 通过地址总线来寻址,每个内存单元对应一个数作为地址,可见,地址总线能过传送多大的数,就能够寻找到多大的内存单元。
一根导线只能穿送 1 与 0 (即高电平与低电平),所以 n 根地址线,就能够寻找到 2^n 个内存单元。
8086 有 20 根地址总线,所以能够寻找到 2^20 个内存单元,即 1048576 byte ,所以 8086 PC 支持的内存最大为 1MB (00000~FFFFF)。
数据总线用于传送回内存中的数据,8086 有 16 根数据线,一次可以送回 16 位 2 进制数,即一个字。
控制总线用于控制外部器件,一根控制线代表了一种控制,所以,控制总线的宽度决定了对外部设备的控制能力。
8086 PC 内存地址空间的分配为 :
00000~9FFFF 作为 RAM
A0000~BFFFF 作为 显存地址空间
C0000~FFFFF 作为 各类 ROM 地址空间
可见改写内存 C0000~FFFFF 的内容是没有用的,因为改的是 ROM 。
No comments:
Post a Comment