
自制操作系统
yiichan
这个作者很懒,什么都没留下…
展开
-
Bochs调试
要打开的是bochsdbg.exe。首先在起始页面设置一些基本数据,之后进入调试窗口。b 0x7c00 设置断点c continue,即为不断执行,到断点或终点停下r 显示通用寄存器内容sreg 显示段寄存器内容xp 显示指定内存地址处的内容,默认显示一个双字,可以指定显示的双字个数。如xp/2 0xb8000 ,会从0xb8000起显示两个双字q 退出调试过程u/n 0xXXXX 反汇编指令,用于对0xXXXX地址后的n条指令进行反汇编,得到这n条原创 2020-06-25 20:50:56 · 652 阅读 · 0 评论 -
30天自制操作系统:第8天:鼠标控制与32位模式切换
今天前半部分都是如何控制鼠标移动,将每次传送的三个字节处理成位置信息,最后指导鼠标指针移动。后面的部分,是关于一段一直未讲解的汇编代码的讲解。32位保护模式书中用一连串汇编代码完成了从实模式进入保护模式。代码段寄存器CS和指令指针寄存器IP构成下一条地址.16位实模式时,下一条地址=CS*16+IP。CS:IP相当于计算机组成原理中的PC。有一段汇编代码没看明白, JMP DWORD...原创 2020-01-27 19:41:40 · 379 阅读 · 0 评论 -
30天自制操作系统:第7天:FIFO与鼠标控制
第7天:FIFO与鼠标控制今天前半部分讲的都是键盘输出与缓冲区的问题,后半部分才是鼠标移动问题。缓冲区FIFO实现在按键盘上一个键时,键盘会以中断形式发送给CPU数据。在现阶段的设计中,一次只发送一字节,但是在按一些键时,会发送两位字节,此时另一字节如果不暂存,就丢失了;在有些情况,会碰到键盘中断发送的数据不能马上被CPU使用,此时就要用到缓冲区。缓冲区用来缓存暂未处理的数据,比如缓存上...原创 2020-01-20 19:24:30 · 416 阅读 · 0 评论 -
30天自制操作系统:第6天:分割编译与终端处理
第6天:分割编译与终端处理Makefile首先说一下Makefile$(arg) 大概相当于${arg},即预设的这个变量arg的值,像下面TOOLPATH = ../z_tools/MAKE = $(TOOLPATH)make.exe -rdefault : $(MAKE) img相当于一连串的变量值的代换。Makefile文件允许定义规则,来处理有相同特...原创 2020-01-18 20:32:49 · 296 阅读 · 0 评论 -
30天自制操作系统:第5天:结构体、文字显示与GDT/IDT初始化
第5天:结构体、文字显示与GDT/IDT初始化今天的任务大多是C语言结构体、指针、箭头符号的讲解。文字显示用了输出字符串的方法,每输出16个字节表示一个字符(每个字节用01表示显示与否,并排表示,构成一个字符,像马赛克拼图一样)。接着又是分段、中断的内容,在操作系统和计算机组成原理中都讲过了,就不赘述了。其中有两个概念:GDT: global(segment) descriptor ...原创 2020-01-16 21:38:43 · 398 阅读 · 0 评论 -
30天自制操作系统:第4天:C语言与画面显示的练习
第4天:C语言与画面显示的练习英特尔电脑CPU家谱8086->80186->286->386->486->Pentium->PentiumPro->Pentium Ⅱ->…286及以前CPU是16位的,386及以后CPU是32位的。一段汇编程序_write_mem8: ; void write_mem8(int addr, int dat...原创 2020-01-15 20:50:51 · 278 阅读 · 0 评论 -
30天自制操作系统:第3天:进入32位模式并导入C语言
第3天:进入32位模式并导入C语言一些BIOS命令AH=0x00 调用显卡模式,此后可以通过设置AL来进行显卡设置AH=0x02 读盘AH=0x03 写盘AH=0x04 校验AH=0x0c 寻道AL=处理对象的扇区数CH=柱面号DH=磁头号DL=驱动器号磁盘讲解C0-H0-S1 柱面0,磁头0,扇区1。磁头在一个磁盘的正反面,共两个,相当于正反盘面;柱面、磁头都从...原创 2020-01-14 18:47:21 · 359 阅读 · 0 评论 -
30天自制操作系统:第2天:继续开发
第2天:继续开发汇编语言讲解ORG:ORG 0x7c00 指明程序在内存中的装载地址,把下面的程序装载到内存的这个地址。有了这个符号,$符号的意义也就变了,代表将要读入的内存地址。JMP:相当于C语言的goto语句,跳转。JMP entry 意为跳转到标号entry代表的地址继续执行。MOV: move,其实相当于赋值语句。MOV AX,0 相当于AX=0;MOV SS,AX...原创 2020-01-13 15:36:43 · 349 阅读 · 0 评论 -
30天自制操作系统:第1天:从计算机结构到汇编程序入门
第1天:从计算机结构到汇编程序入门先是用一个二进制文件编辑器手写了一个二进制文件,再解释了一通CPU内部的数据表示和二进制,再写了一点汇编程序。汇编语言讲解DB指令意为“define byte”,也就是往文件里直接写入1个字节的指令。DB指令也可以用来写字符串,如DB “hello, world”RESB指令意为“reserve byte”,如果想从现在地址开始空出10个字节来,...原创 2020-01-13 15:35:56 · 278 阅读 · 0 评论