有关《汇编语言》
一、基础知识
- 存储器被划分为若干个存储单元,每个存储单元从0开始编号
- 计算机的最小信息单位是bit(比特),也就是一个二进制位。8个bit组成一个Byte(字节)。微型机存储器的存储单元可以存储一个Byte。
- 微机存储器的容量是以Byte(字节)为最小单位来计算的,即一个存储器有128个存储单元则容量为128个Byte(字节)。也可以用其他单位来计算容量
- 1KB=1024B=2^10B 1MB=1024KB 1GB=1024MB 1TB=1024GB
- 一个CPU有N个地址总线则称它的宽度为N,最多可以查找2的N次方个存储单元,地址总线的宽度决定了CPU的寻址能力
- 数据总线的宽度决定了CPU与其它器件进行数据传输时的一次数据传输量,存储字长 = 数据线根数
- 控制总线的宽度决定了CPU对系统中其它器件的控制能力
存储单元 :CPU访问存储器的最小单位,每个存储单元都有一个地址。
存储字长 :存储器中一个存储单元(存储地址)所存储的二进制代码的位数。
存储容量 :存储容量是指主存能存放二进制代码的总位数
存储器容量计算公式:
按位计算 (b) : 存储容量 = 存储单元个数 x 存储字长
按字节计算(B): 存储容量 = 存储单元个数 x 存储字长 / 8
例题:一个存储器有16根地址线,8根数据线,求此存储器存储容量?
答:按位求取 2^16 x 8位 =64K x 8位
按字节求取 2^16 x 8位/8 = 64K x B = 64kB
分析:
存储单元与地址线的关系: 我们知道CPU访问存储器的最小单位是存储单元且每个存储单元都有一个地址,1 根地址线可以查找 2 个地址既2个存储单元,16根地址线则可以查找 2^16个存储单元。
存储字长与数据线的关系 : 我们知道存储字长是指存储器中一个存储单元(存储地址)所存储的二进制代码的位数,而二进制代码的位数是由数据线的根数决定的,也就是说: 存储字长 = 数据线根数
字节(B)与位(b)的关系 : 计算机里规定 1Byte = 8bit
所以存储器容量就有;两种表示方法 64K x 8位 = 64KB
我们常见的内存容量表示方法 是以字节为单位的。例如 1GB ,4MB, 512KB
1GB = 10^3MB =10^6KB = 10^9B = 10^9 x 8b
转自https://blog.****.net/dingjiawang6/article/details/72860759
二、寄存器
- AX、BX、CX、Dx这四个16位寄存器用来存放一般性的数据,称为通用寄存器,且可以分为独立的两个8位寄存器使用,如AX分为AH和AL。
- 一个字节Byte由8个bit组成,一个字Word由两个字节组成,即16bit
- 物理地址=段地址x16+偏移地址 (x16就是左移四位)
- 这里通过一个例题来理解一下物理地址的计算
给定地址段为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到____
此题解题背景默认为8080型CPU,地址总线为16根。(8080-16,8086-20,8088-20,80286-24,80386-32)
16根地址总线寻址能力:(2 ** 16) / 1024 = 65536(B) = 64(KB), 可以表示的存储单元个数为 0 ~ 2^n-1 个, 即 0 ~ 65535。
这里的 65535 为十进制数,转换为十六进制数为 0xffff (或 ffffH)
再来看CPU内存单元物理地址的划分方法:基础地址(段地址[SA] X 16)+ 偏移地址[EA] = 物理地址
此题中已经假设地址总线为16位,所以偏移地址变化范围是 0 ~ 65535,即 0000H ~ FFFFH
因为给定段地址为0001H,则CPU的寻址范围 (0001H×16 + 0000H )~ (0001H *16+ FFFFH ),
0001H * 16 为 0001H 左移一位,即 0010H,0010H + 0000H = 0010H, 0010H +FFFFH= 1000FH。
所以 CPU 寻址范围为 0010H 到 1000FH。
- CS:代码段寄存器 IP:指令指针寄存器
- 8086PC机中设CS内容为M,IP内容为N,CPU将从内存M×16+N取指令开始执行指令
- 修改CS和IP的内容