目录 1.制作真正的IPL IPL:启动区,启动程序装载器完整代码: ; haribote-ipl ; TAB=4 CYLS EQU 10 ; 声明CYLS=10 ORG 0x7c00 ; 指明程序装载地址 ; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code JMP entry DB 0x90 DB "HARIBOTE" ; 启动扇区名称(8字节) DW 512 ; 每个扇区(sector)大小(必须512字节) DB 1 ; 簇(clu…
1 制作真正的IPL IPL(Initial Program Loader),启动程序装载器,但是之前并没有实质性的装载任何程序,这次作者要开始装载程序了. 虽然现在开发的操作系统啥功能也没有,作者说轻轻松松做. 起始我觉得吧,有了启动程序加载器之后,相当于给了我们一个给CPU传送指令的入口,我们想让CPU干啥,就给它传指令和数据就可以啦.操作系统嘛,就是一个启动程序装载器调用的一个很大的.很复杂的函数而已,突然感觉自己有些升华了( ^_^ ). CPU就是一个干活很快的家伙,但是智商基本为0,…
目录 获取源码关注公众号<猿小龙> 1.用C语言实现内存写入(harib01a) C语言中如果使用了write_mem8函数,就会跳转到_write_mem8,此时参数指定的数字就存放在内存里,分别是:我们想要取得参数指定的数字0x1234或者0x56内容,只需要用MOV指令读入寄存器即可.naskfunc.nas代码 ; naskfunc ; TAB=4 [FORMAT "WCOFF"] ; 制作目标文件的模式 [INSTRSET "i486p"] ;…
先动手操作 软盘映像文件制作:先采用二进制编辑器编辑我们所需要的映像文件helloos.img 二进制编辑器下载链接:Bz - c.mos (vcraft.jp) 制作好之后,可以选择写入软盘,通过软盘启动电脑.操作步骤如下: (注意上图中的run.bat和install.bat代码中的人民币符号直接跳过,不使用它,全部字符为英文字符) 这里,为了方便大家体验,已将源码附在了文章里面,具体操作方法如下: 运行结果: 这样,我们就体验了一下简易的制作启动盘的过程,只不过功能较为简单,仅能显示"He…
1.介绍文本编辑器 这里,我们直接采用自己windows电脑自带的文本编辑器即可以完成制作要求 2.继续开发 下面先是对昨天使用的helloos.nas文件内容进行详细解释 ; hello-os ; TAB=4 ; 标准FAT12格式软盘专用的代码 Stand FAT12 format floppy code DB 0xeb, 0x4e, 0x90 DB "HELLOIPL" ; 启动扇区名称(8字节) DW 512 ; 每个扇区(sector)大小(必须512字节) DB 1 ; 簇…
<30天自制操作系统>笔记(06)——CPU的32位模式 进度回顾 上一篇中实现了启用鼠标.键盘的功能.屏幕上会显示出用户按键.点击鼠标的情况.这是通过设置硬件的中断函数实现的,可以说硬件本身的设计就具有事件驱动的性质,所以软件层面上才有基于事件的消息机制. 但上一篇没有说明中断的来龙去脉,本篇就从头到尾描述一下CPU与此相关的设置问题. Segment 32位的CPU使用32条地址线,能区分232=4G个内存地址.每个内存地址都有1Byte的内容. 分段,就是将4GB的内存分成很多块(blo…
30天自制操作系统-day3 前2天我们分别使用了直接使用二进制编辑器和简单的汇编指令生成了img文件,今天我们尝试一下使用稍微复杂一点的汇编指令 os.asm文件内容如下: ; hello-os ; TAB=4 ; 以下是FAT12标准软盘专用代码 DB 0xeb, 0x4e, 0x90 DB "HELLOIPL" ; 启动区名称 DW 512 ; 每个扇区的大小,必须是512字节 DB 1 ; 簇的大小,为一个扇区 DW 1 ; FAT的起始位置 DB 2 ; FAT的个数,必须为…
先给一个参考文献:The RAM reported by the System Properties dialog box and the System Information tool is less than you expect in Windows Vista or in Windows XP Service Pack 2 or later version 先说结论: 1.PAE允许操作系统在32位模式下使用大于4G的物理内存. 2.不管是否使用PAE,对于单个进程而言,32位系统下可见…
一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 (3)虚拟8086模式:这种方式可以使用户在保护模式下运行8086程序(比如cmd打开的console窗口,就是工作在虚拟8086模式) 有几点需要特别说明: (1)保护模式可分为16位和32位的,由段描述符中的D标志指明.对于32位代码段和数据段,这个标志总是设为1:对于16位代码和数据段,这个标…
其实最简单的方法就是在解决方案中,把平台设为 x86 就好了哈~   但是今天遇到一个第三方的软件,它调用的一个 dll 是 32位 的,可能它没有测试过在 64位 系统下运行的情况,它在编译时是按默认的配置设为了 Any CPU. 但是在 64位 系统中以默认 64位 模式运行时,再调用 32位 的 dll 就报异常了... 于是想到的一个办法就是让它在 64位 系统中,以 32位 模式运行就好了~   在网上搜了一下,没想到 .NET 本身就提供了这个修改工具,叫做 CorFlags.exe…