像初中数学一样的微机课
Lesson 1
Ⅰ.各种进制
Binary(2) Octal(O) Decimal(D) Hexadecimal(H)
Ⅱ.二进制与十进制之间的转化
Lesson 2
Ⅰ.计算机中多字节数据的存储
小端存储:高高低低(高地址存高字节)
Ⅱ.算术运算与逻辑运算
Ⅲ.补码的运算
原码:首位为符号位 其余位为绝对值
反码:正数=原码 负数=符号位(1)+按位取反
补码:正数=原码 反码+1
n位补码的表数范围:
(1000 0000 - 0111 1111)
为什么最小的数是1000 0000?
按照道理来说 +0 和 -0在补码表示法中都为0000 0000,而1000 0000在补码表示中什么也不代表,由于在无符号数中1000 0000代表128,所以将1000 0000表示为-128,因为符号位为1。
Lesson 3
Ⅰ.8086内部寄存器
8086内部寄存器有:
- 8个通用寄存器
- 4个段寄存器
- 1个指令指针寄存器
- 1个标志寄存器
Ⅱ.通用寄存器
CPU在完成数据加工时临时存放数据(执行单元)
前四个数据寄存器可以分成高8位和低8位两个独立的寄存器 对其中某8位的操作并不影响另外对应8位的数据
AX BX CX DX(16位)
(AH AL BH BL CH CL DH DL)
SI DI BP SP (8位)
Ⅲ.段寄存器
DS 数据段寄存器(Data Segment)
CS 代码段寄存器(Code Segment)
ES 附加段寄存器(Extra Segment)
SS 堆栈段寄存器(Stack Segment)
用于CPU在计算20位的物理地址的时候,其中一部分的数据来源
这些段寄存器的内容与有效的地址一起,用于确定内存的物理地址。通常用DS确定数据段的基地址,CS确定代码段的基地址,ES确定附加段的基地址,SS确定堆栈段的基地址。
Ⅳ.指令指针IP
- 用于指示CPU下一条指令的偏移地址(总线接口)
- IP与CS联用,确定下一条指令的物理地址,控制指令序列的执行流程
- IP寄存器是一个专用的寄存器
Ⅴ.标志寄存器FLAG
标志寄存器反应指令的结果或者控制指令的形式
标志的分类
状态标志:用来记录程序运行的状态信息,许多指令的执行都将相应地设置它。
- CF(Carry Flag):进位标志 CF=1有进位 CF=0无进位
- ZF(Zero Flag):零标志 ZF=1表示为零
- SF(Sign Flag):符号标志 SF=1表示运算结果为负数
- PF(Parity Flag):奇偶标志 PF=1表示低8位有偶数个1
- OF(Overflow Flag):溢出标志 OF=1表示有符号数运算产生溢出
- AF(Auxiliary Flag):辅助进位标志 AF=1表示低4位有进位或者借位
控制标志:可由程序根据需要用指令设置,用于控制处理器执行指令的方式。
- DF(Direction Flag):方向标志 DF=1操作地址递减 DF=1表示操作地址递增
- IF(Interrupt Flag):中断允许标志 IF=1表示接受外部中断
- TF(Trap Flag):跟踪标志 TF=1表示单步运行 TF=0表示正常运行
总结:状态标志的值由指令执行后的结果决定,控制标志的值由特定指令设置或者清除。
进位标志CF 和 溢出标志OF 的应用场合?
进位标志只使用在无符号数运算内,溢出表示只使用在有符号数运算内。
Lesson 4
Ⅰ.数据在内存储器中的存储情况
- 字节:8位
- 字:16位
- 双字:32位
Ⅱ.8086CPU
- 20根地址线,最大可寻址空间为
MB,从00000H~FFFFFH
- 16根数据线(因为该CPU的机器字长为16位)
从逻辑地址转化到物理地址的公式:PA(Physical Address) = SA(Segment Address)×16+EA(Extra Address)
物理地址=段地址×16+段内偏移 (16表示每段的大小为16位)
1.为什么每段最大限制为64KB?
因为该CPU里只有16根数据线,所以每次访问数据的时候,最多访问16位,也就是
KB
2.为什么只能通过逻辑地址向物理地址转换?
因为一个物理地址可以对映多个逻辑地址。
解:设物理地址为P,段地址为S,段内偏移为E。
若逻辑地址已知,即S,E均为已知数,则可以求出P。
若物理地址已知,即P为已知数,此时只能得出一个一次函数:XXX = 16*S + E,逻辑地址不唯一。
Ⅲ.补充内容
最小模式和最大模式:
- 最小模式:在系统中只有一个微处理器。
- 最大模式:在系统中有两个或两个以上的微处理器(主处理器,协处理器)
周期:
- 指令周期:执行一条指令所需要的时间
- 总线周期:CPU与外部交换一次信息(通过总线)
- 时钟周期:时钟脉冲的重复周期
特殊地,8086CPU的总线周期至少由4个时钟周期组成,分别以T1,T2,T3,T4表示,一个总线周期完成一次数据传输,在T1期间由CPU输出地址,在T2,T3,T4期间传输数据。
Ⅳ.8086的引脚
- 地址总线
- 数据总线
- 控制总线
- 其他(时钟与电源)
-
~
:地址/数据复用引脚
-
~
:地址/状态总线复用
-
:高8位数据是否有效(低电频有效),=0时有效,=1时无效。用于在取数据时,确定所取数据的位数(8位、16位)。
-
:读信号(低电频有效),=0时表示正在读存储器/IO操作。
-
:表示部件是否能在规定的时间内完成数据传输,=L(低电频)时,需要插入一个或者几个等待时钟周期。
1.为什么数据总线为双向,地址总线只输出?
因为通过内存储器(或通过I/O设备)之间交换数据是双向的。而寻求某个内存单元的地址信号只能由CPU发出,所以为输出(单向)。
2.三态
高电频,低电频,高阻态(相当于连接为断开的情况,即等于没有连接在总线上,不影响其他器件的工作)
ⅤⅥⅦⅧⅨⅩⅪⅫ