-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnote.txt
More file actions
137 lines (118 loc) · 5.87 KB
/
note.txt
File metadata and controls
137 lines (118 loc) · 5.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
寄存器
AX——累加寄存器
CX——计数寄存器
DX——数据寄存器
BX——基址寄存器
SP——栈指针寄存器
BP——基址指针寄存器
SI——源变址寄存器
DI——目的变址寄存器
AL——累加寄存器低位
CL——计数寄存器低位
DL——数据寄存器低位
BL——基址寄存器低位
AH——累加寄存器高位
CH——计数寄存器高位
DH——数据寄存器高位
BH——基址寄存器高位
ES——附加段寄存器
CS——代码段寄存器
SS——栈段寄存器
DS——数据段寄存器
FS——无名
GS——无名
TR——任务寄存器 使CPU记住当前在运行哪一个任务 任务切换时TR会自动变化 英特尔规定为tr赋值时要把GDT编号乘以8
IP——指令指针寄存器 保存下一条指令所在地址
EIP——扩展指令指针寄存器 IP寄存器的32位扩展
MOV 赋值
JMP 跳转 普通情况下的JMP为near模式 切换任务的JMP为 far模式 需要指定地址与偏移量
ADD 加
IMUL 乘法
SUB 减法
CMP 比较
JZ 结果为0就跳转
JN 结果不为0则跳转
JE 相等就跳转
JNC 进位标致是0时跳转
JAE 大于等于时跳转
JBE 小于等于时跳转
JBE 小于时跳转
HLT 让CPU待机
INT 软件中断指令
ORG 指定程序开始的地址
EQU equal相当于C语言#define
RET 子程序返回
NOP 让cpu休息一个时钟周期
LTR 为TR寄存器赋值的指令
WORD 16位(2字节)
DWORD 32位(4字节)
[*] 内存位置*
naks与c语言函数连接,函数名前加_
GLOBAL 全局
LOCAL 局部
16色颜色编号
#000000:黑 #00ffff:浅亮蓝 #000084:暗蓝
#ff0000:亮红 #ffffff:白 #840084:暗紫
#00ff00:亮绿 #c6c6c6:亮灰 #008484:浅暗蓝
#ffff00:亮黄 #840000:暗红 #848484:暗灰
#0000ff:亮蓝 #008400:暗绿
#ff00ff:亮紫 #848400:暗黄
GDT 段描述符表(全局描述表)
IDT 中断描述符表(每个表项叫做一个门描述符)
accessRight低8位
00000000(0x00):未使用的记录表
10010010(0x92):系统专用,可读写的段,不可执行
10011010(0x9a):系统专用,可执行的段,可读不可写
11110010(0xf2):应用程序用,可读写的段,不可执行
11111010(0xfa):应用程序用,可执行的段,可读不可写
accessRight高4位
高4位为扩展访问权,由GD00组成 G为Gbit标志位 D为模式位 1代表32位模式 0代表16位模式(即使D为0也不能调用BOIS)
所以设计程序中accessRight高4位与低8位直接为4位无效位 xxxx0000xxxxxxxx(x为有效位)
IRQ interrupt request 中断请求
主PIC
IRQ0 Time(系统计时器) 不能更改
IRQ1 Keyboard(键盘) 不能更改
IRQ2 Redirect IRQ9(重定向 从PIC) 不能更改
IRQ3 COM2、COM4(串行设备通讯端口) 内置调制解调器(首选)等串行外设
IRQ4 COM1、COM3(串行设备通讯端口) 串行外设
IRQ5 LPT2(并行设备通讯端口) 并口打印机(首选)、声卡等并行外设(许多电脑没有LPT2端口所以一般分配给声卡)
IRQ6 FDD(软驱)
IRQ7 LPT1(并行设备通讯端口) 并口打印机(首选)、声卡等并行外设
从PIC
IRQ8 CMOS Alert(系统CMOS即时时钟) 不能更改
IRQ9 Redirect IRQ2(重定向至IRQ2) 不建议分配,但可以分配给MPU-401 MDI(混音器)
IRQ10 未分配 网卡(首选)等外设
IRQ11 未分配 SCSI控制器(首选)或AGP显卡
IRQ12 PS/2Mouse鼠标 PS/2鼠标(首选)等外设
IRQ13 数学协处理器 如FCU 不能更改
IRQ14 Primary IDE(主IDE) 主IDE硬盘(首选)等IDE外设
IRQ15 Secondary IDE(第二IDE) 第二IDE硬盘(首选)等IDE外设
PIC programmable interrupt control 意为可编程中断控制器 是将8个中断信号集合成一个中断信号的装置
分为与CPU直连的主PIC(master PIC)负责IRQ0~IRQ7,与主PIC第2号IRQ连接的从PCI(salve PCI)负责IRQ8~IRQ15
IMR interrupt mask register 中断屏蔽寄存器 其8位分别对应8路IRQ信号
如果其某一位为1则证明该位对应的IRQ信号被屏蔽,PIC就将忽略该信号
ICW
ICW为initial control word 意思为 初始化控制数据 ICW共有4个编号为1~4 共4字节数据
识别ICW
4条ICW命令依次写入
ICW1必须写入偶地址端口(A0=0)
ICW2必须写入奇地址端口(A0=1)
ICW3只有在ICW1中的SNGL=0即级联时写入
ICW4只有在ICW1中IC4=1时才写入
OCW OCW为operate control word 意思为 操作控制数据 OCW共有3个编号为1~3
识别OCW
三条OCW命令次序上没有要求
但OCW1写入偶地址端口,2、3写入奇地址端口
D4、D3位为00时为OCW2,为01时为OCW3
KBC Keyboard Controller键盘控制电路(包含鼠标控制电路)往往cpu处理数据的速度远大于外部设备处理数据的速度
如果CUP不等待外设就绪就发送指令会使一些指令得不到执行,这时便需要键盘控制电路
当从0x0064中读到的数据的倒数第二位为0是表明键盘控制电路准备就绪
binfo->leds 第4位 ScrollLock
binfo->leds 第5位 NumLock
binfo->leds 第6位 CapsLock
激活鼠标
首先要将键盘控制电路模式改为支持鼠标的模式之后向鼠标发送激活指令激活鼠标
鼠标第一字节
鼠标第一字节的高四位在鼠标移动时会在0~3范围内发生改变,而第四位在鼠标按键时会在8~F发生改变
根据CPU说明书 0x00至0x1f都为异常中断号 所以IRQ中断是从0x20开始的
常用异常号:0x00除0异常 0x06非法指令异常(试图执行CPU无法理解的机器语言指令) 一般异常中断号0x0d 栈异常中断号0x0c