- [035][x86汇编语言]第十四章 √√文件的OO的XX特权级
- x86:从实模式到保护模式(简略笔记)
- [013][x86汇编语言]从硬盘主引导扇区启动,显示hello
- [033][x86汇编语言]第十四章 子程序load_reloc
- [034][x86汇编语言]第十四章 内核程序c14_core.
- [036][x86汇编语言]第十四章 本章习题解答
- [049][x86汇编语言]控制转移到其他任务 jmp/call
- [060][x86汇编语言]第16章内核程序执行逻辑:load_
- [061][x86汇编语言]第16章 源码分析 过程[alloc
- [038][x86汇编语言]第十五章 中断描述符表 任务门描述符
8086有20根地址线,但并非全部都用来访问DRAM(内存条).
BIOS为0xF0000~0xFFFFF
内存条为00000~0x9FFFF
显存为0xB8000~0xBFFFF
:80*25,即25行,每行80个字符.
CPU加电后,第一条指令为0xFFFF0
,因为除了CS=0
外,其他寄存器都被置为0
,这条指令刚好落在BIOS的地址空间上,指令为跳转指令jmp 0xf000:0xe05b
.
在ROM-BIOS完成自己的使命之前,最后要做的一件事是从外存(硬盘)中读取更多的指令来交给处理器执行.从硬盘哪里呢?
第0面0道1扇区 -- Page 49
这个扇区称为主引导扇区(Man Boot Sector, MBR),会被加载到内存0x0000:0x7c00处,之后用一个跳转指令 jmp 0x0000:0x7c00
来跳到那里接着执行.
一个有效的主引导扇区,其最后两个字节的数据必须是 0x55
和 0xAA
。
各种指令对标志位的影响
指令 | 对标志位的影响 |
---|---|
add | OF,SF,ZF,AF,CF,PF |
and | OF=0,CF=0; SF,ZF,PF |
cbw | NO |
cld | DF=0; CF,OF,ZF,SF,AF,PF未定义 |
cwd | NO |
dec | 不影响CF; 影响OF,SF,ZF,AF,PF |
div/idiv | 未定义CF,OF,SF,ZF,AF,PF |
inc | CF不受影响,影响OF,SF,ZF,AF,PF |
mov/movs | NO |
neg | CF,OF,SF,ZF,AF,PF |
std | DF=1 |
sub | OF,SF,ZF,AF,PF,CF |
xor | OF=0,CF=0; 影响SF,ZF,PF,未定义AF |
用户程序头部起码要包含以下信息:
- 用户程序的尺寸,即以字节为单位的大小.
- 应用程序的入口点,包括段地址和偏移地址.
- 段重定位表.
处理IO设备的冲突,使用输入输出控制设备集中器(I/O Controller Hub, ICH)芯片,该芯片的作用是连接不同的总线,并协调各个I/O接口对处理器的访问.在PC上,这块芯片就是所谓的南桥.
8.3.5 通过硬盘控制器端口读扇区数据-P133
硬盘读写的基本单位是扇区。就是说,要读就至少读一个扇区,要写就至少写一个扇区,不可
能仅读写一个扇区中的几个字节。这样一来,就使得主机和硬盘之间的数据交换是成块的,所以硬
盘是典型的块设备。
从硬盘读写数据,最经典的方式是向硬盘控制器分别发送磁头号、柱面号和扇区号(扇区在某个柱面上的编号),这称为 CHS 模式。
实际上,在很多时候,我们并不关心扇区的物理位置,所以希望所有的扇区都能统一编址。这
就是逻辑扇区,它把硬盘上所有可用的扇区都一一从 0 编号,而不管它位于哪个盘面,也不管它属
于哪个柱面。
个人计算机上的主硬盘控制器被分配了 8 位端口,端口号从 0x1f0 到 0x1f7
。
0x0d
是回车,0x0a
是换行。
回车和换行的概念最早起源于老式打字机。那种打字机上有滚筒,用于使纸张上下卷动,每敲击一个按键,字车往右移动一格,位于下一个可打印的位置。在这种古老而不失先进性的设备上,将字车推到最左边,也就是一行的开始,叫做回车(Carriage Return);而拧一下滚筒,将纸上卷一行,叫做换行(Line Feed)。如果既回车,又换行,那么,字车将位于下一行的行首。这个过程通常叫做回车换行(CRLF)。------------------------
P149
8.4.4 屏幕光标控制
非屏蔽中断(Non Maskable Interrupt,NMI)
Intel 处理器规定,NMI 中断信号由0
跳变到 1
后,至少要维持4
个以上的时钟周期才算是有效的,才能被识别。
CMOS RAM --P165
RTC:集成了实时时钟电路(Real Time Clock,RTC)相关API在Page165
处理器在设计的时候就规定,当遇到修改段寄存器 SS 的指令时,在这条指令和下一条指令执行完毕期间,禁止中断,以此来保护堆栈。(P170
)
网友评论