在X86 CPU的三个模式:实模式,保护模式和虚拟的8086模式 实模式:直接读写真正的物理内存 <建立在实模式的系统称为纯DOS> 保护模式:保护内存,限制内存访问的权限; 虚拟的8086模式:在保护模式下模拟的一个实模式的运行环境 在操作系统启动的时候现在实模式下运行然后进入到保护模式... 在 ...
分类:
其他好文 时间:
2017-08-20 13:35:29
阅读次数:
203
8086 CPU一般是这样:CS寄存器初始化为0xF000,IP寄存器初始化为0xFFF0,所以按照CPU实模式地址计算法则,CPU执行的第一条指令地址是CS*10h+IP,即0xFFFF0处 对于80386以上的CPU: 第一点,80386及其以上的现代CPU(以下简称CPU)加电Reset之后并 ...
分类:
其他好文 时间:
2017-08-10 15:37:40
阅读次数:
212
早期的Inter芯片只支持1MB内存,采用实模式,采用16bit地址。后来随着技术进步,出现可以访问更多内存的 保护模式芯片,采用32bit地址。为了保持对前面芯片的兼容,Inter支持这两种模式。当芯片启动时,默认处于实模式, 然后OS控制进入保护模式。 实模式和保护模式的最大区别: 实模式下,程 ...
分类:
系统相关 时间:
2017-08-07 00:22:32
阅读次数:
234
1.启动BIOS,准备实模式下中断向量表和中断服务程序 在按下电源按钮的瞬间,CPU硬件逻辑强制将CS:IP设置为0xFFFF:0x0000,指向内存地址的0xFFFF0位置,此位置属于BIOS的地址范围。关于硬件如何指向BIOS区,这是一个纯硬件动作,在RAM实地址空间中,属于BIOS地址空间部分 ...
分类:
其他好文 时间:
2017-07-31 18:57:37
阅读次数:
536
程序的载入和运行(五)——《x86汇编语言:从实模式到保护模式》读书笔记25 前面几篇博文最终把代码分析完了。这篇就来说说代码的编译、运行和调试。 1.代码的编译及写入镜像文件 之前我们都是在命令行输入命令进行编译和写入。源文件少的时候还不认为麻烦,当源文件多了,就会认为特别麻烦。有没有简单的方法呢 ...
分类:
编程语言 时间:
2017-07-22 21:03:01
阅读次数:
262
lab2对lab1的改进: 1.在bootloader中,完成了对物理内存资源的探测工作(bootasm.S) 保存地址范围描述符结构的缓冲区: OS需要了解整个计算机系统中的物理内存如何分布的,哪些可用,哪些不可用。其基本方法是通过BIOS中断调用来帮助完成的。其中BIOS中断调用必须在实模式下进 ...
分类:
其他好文 时间:
2017-07-21 23:12:55
阅读次数:
257
8086CPU中寄存器总共为14个,且均为16位AX:累加寄存器CX:计数器寄存器DX:数据寄存器DS:数据段寄存器ES:附加段寄存器BX:基地址寄存器SI:源变址寄存器DI:目的变址寄存器CS:代码段寄存器IP:指令指针寄存器SS:栈段寄存器SP:栈指针寄存器BP:基指针寄存器FLAG:标志寄存..
分类:
其他好文 时间:
2017-07-21 21:53:14
阅读次数:
208
这学期学习了汇编,在自己电脑上发现,win7的dos不支持16位实模式。 对编程来说,不能执行程序是致命的。 在经过网上搜集资料后,得到一种解决的方法--使用dosbox软件执行 dosbox简单说,就是一个dos模拟程序,支持16位实模式。 1.首先下载一个dosbox安装程序并安装,以下给出地址 ...
逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分 ...
分类:
其他好文 时间:
2017-07-05 18:01:42
阅读次数:
214
存储器的保护(三) 改动本章代码清单,使之能够检測1MB以上的内存空间(从地址0x0010_0000開始,不考虑快速缓存的影响)。要求:对内存的读写按双字的长度进行。并在检測的同一时候显示已检測的内存数量。建议对每一个双字单元用两个花码0x55AA55AA和0xAA55AA55进行检測。 上面的文字 ...
分类:
编程语言 时间:
2017-07-04 13:28:27
阅读次数:
322