虚拟机-操作系统
ltbylc
这个作者很懒,什么都没留下…
展开
-
读书笔记《30天自制操作系统》day01
1. 计算机只知道01代码,计算机启动时从引导扇区开始执行,文件如下hellos.asm(2013.04.07 自己用二进制代码构筑一个引导扇区,具体构成见下图二) DB 0xeb, 0x4e, 0x90, 0x48, 0x45, 0x4c, 0x4c, 0x4f DB 0x49, 0x50, 0x4c, 0x00, 0x02, 0x01, 0x01原创 2012-12-10 23:23:46 · 3206 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day12~day13
1. 定时器是任务切换的重要中断响应程序,由8254芯片PIT生成中断,通过设定PIT可以指定定时器没隔多少秒就产生一次中断。2. 初始化,发送out指令。中断产生在IRQ0,由此可见这个中断的重要性了。10ms产生一次。#define PIT_CTRL 0x0043#define PIT_CNT0 0x0040void init_pit(){ io_out8(PIT_C原创 2012-12-20 22:31:08 · 1786 阅读 · 1 评论 -
读书笔记《30天自制操作系统》day10
1. 显示到屏幕上的图形界面信息要分层,比如最顶层是鼠标,中间是应用程序,最低是桌面。2. 移动鼠标和窗口应用可以看为是移动图层。3. 屏幕显示的原理是向显存内写信息,显存的地址在0x000a0000这个已经在前面见过了。/*一个图层结构体*/struct SHEET{ unsigned char* buf;/*图层内容地址*/ int bxsize,bysize;原创 2012-12-17 00:54:11 · 1196 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day14
1. VBE不使用VBE的画面模式时用AH=0;AL=画面模式号码;int 0x10;使用VBE画面模式时用AX=0x4f02;BX=画面模式号码(0x101:640*480*8bit彩色;0x103:800*600*8bit彩色;0x105:1024*768*8bit彩色;0x107:1280*1024*8bit彩色);int 0x10;MOV BX,0x4105MOV AX,0x原创 2013-04-14 18:13:30 · 1417 阅读 · 1 评论 -
读书笔记《30天自制操作系统》day11
1. 窗口的绘制,与鼠标绘制类似void make_window8(unsigned char *buf, int xsize, int ysize, char *title){ static char closebtn[14][16] = {/*这是个叉*/ "OOOOOOOOOOOOOOO@", "OQQQQQQQQQQQQQ$@", "OQQQQQQQQQQQQQ$@",原创 2012-12-17 14:49:01 · 1377 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day09
0.不同BIOS判断内存多大不尽相同,可以自己编写一个程序判断机器内存多大,主要方法就是写完后读出来比较就知道了。1. 寄存器EFLAGS第18位AC标志表示CPU是否为486以上,486以上CPU有缓存,自己编写程序判断内存有多大时应关闭缓存。2. 对CR0寄存器标志位进行改写实现关闭缓存功能#define CR0_CACHE_DISABLE/*...*/cr0=load_cr0原创 2012-12-16 11:21:19 · 1256 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day03
0. 自己试着在win7下用NASM和minGW改写汇编和C混合编程,结果受挫了。还是先使用作者提供的工具构建吧。1. 通过前2天的工作已经能使用NASM制作一个映像了,并且编写的汇编代码可以成为引导扇区代码。2. 引导扇区代码中可以调用BIOS中断,读取软盘上其它扇区到内存中,根据FAT12文件系统格式得知,保存到软盘内的第一个文件的文件名一定从19逻辑扇区开始,且该文件的内容从逻辑扇区原创 2012-12-13 22:59:11 · 4611 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day05
1. 将字库看成为保存像素的数组2. 将hankaku.txt读到数组,编译链接成为C可调用的数组,编译bat修改为..\z_tools\makefont.exe hankaku.txt hankaku.bin..\z_tools\bin2obj.exe hankaku.bin hankaku.obj _hankaku..\z_tools\obj2bim.exe @..\z_tool原创 2012-12-14 01:04:13 · 1926 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day08
1. 响应鼠标中断需要先激活鼠标控制电路,鼠标控制电路包含在键盘控制电路中。asmhead.nas中也有类似代码,等待键盘控制电路准备好。waitkbdout: IN AL,0x64 AND AL,0x02 JNZ waitkbdout RET#define PORT_KEYDAT 0x0060#define PORT_KEYSTA 0x0064原创 2012-12-14 23:36:41 · 1337 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day07
1. 在中断处理程序中负责显示不恰当,应该产生中断后把中断数据取出来放到FIFO中去。2. 当键盘产生中断后后中断处理程序应该向PIC的OCW2发出0x60+IRQ号码的out指令,说明在中断处理程序中已经知道这个事件了,接着发出in指令从0x0060寄存器读取键盘按键产生的信息,该键盘信息保存到FIFO缓冲区中。#define PORT_KEYDATA 0x0060struct FIF原创 2012-12-14 22:46:25 · 1311 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day06
1. 鼠标及键盘的响应功能,因为用到中断所以必须自32位保护模式下设置GDT和IDT,以前在asmhead中设置时用汇编代码设置,现在用C操作。2. GDT,IDT的补充知识,图片来自赵炯博士linux0.11内核分析书(1)实模式下寻址方式是:物理地址=段值*16+偏移地址(2)保护模式下也是用(段值:偏移量)形式表示地址,但是段与以前的段是不一样的,实模式下的段值仍可以看做是一个地原创 2012-12-14 22:10:19 · 3373 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day04
1. 调色板的使用步骤(1)屏蔽中断CLI(2)将想要设定的调色板号码写入0x03c8端口,接着按照RGB顺序写入0x03c9端口,继续设定接着写RGB(3)开放中断STI2. func.nas; naskfunc; TAB=4[FORMAT "WCOFF"] [INSTRSET "i486p"] [BITS 32] [FILE "naskfu原创 2012-12-14 00:16:13 · 2490 阅读 · 0 评论 -
读书笔记《30天自制操作系统》day02
1. 将第一天直接生成软盘映像的代码抽取出引导扇区部分,ipl.asm ORG 0x7c00 JMP entry DB 0x90 DB "HELLOIPL" DW 512 DB 1 DW 1 DB 2 DW 224 DW 2880 DB 0xf0 DW 9原创 2012-12-11 00:00:17 · 2454 阅读 · 0 评论