Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

xym5366/xymOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

69 Commits

Repository files navigation

一帮气人有笑人无的,祝你们全家火葬场。😂

  • 启动扇区(nasm)。
  • 实模式进入保护模式(masm)。
  • 进入分页模式。
  • 实现CPU的多任务模式等。
  • 实现CPU其它功能。
  • 实现操作南桥,操作外设功能。
  • 如果有时间,考虑写一个用神经网络训练的系统内核,可以识别人类语言,直接转换成最优机器语言指令,来达到一个神经网络架构的可训练计算机操作系统。
  1. 2011年本人亲自收集的👉各种系统基础资料
  2. 网络上最早的权威系统制作编程技术基础资料集合。
  3. 走过路过不要错过,请珍惜本人的劳动成果。转载务必注明出处。
  4. 都是由本人亲自技术筛选,质量上乘,可谓居家旅行必备之良药。👓

谢谢捐助!🙏

alibaba2

xymOS系统制作手记

自制系统,空余时间少,少量代码 主要以nasm代码为主,版本暂时忘了,有空在详细介绍。

  • 首先在dos下使用命令nasm boot.asm -o boot.bin编译boot.asm文件为boot.bin纯二进制指令代码。
    • $为地址计数器,每一条汇编指令使得或数据定义指令都会在给$加上自身要用的内存单元数量 org 用来重置$的值 org X即表示重置$=X,于是下一个内存单元的地址将是X
    • $-$$得出此前占用的字节存储容量(由此判断$$为代码段起始处,证明$$的确为上一段的起始地址,懒的看手册,从csdn看到的),再用510减得出后面容量并填充0,留两字节填充aa55
    • $准确讲是模拟当前ip寄存器值,org是指定此处ip寄存器值。原因是磁盘里的机器指令并没有任何状态,拷贝到内存里才有实际状态,这两个就是来模拟将要在内存里状态的作用。
  • masm 实模式进保护模式代码(基于dos7.1保护模式操作系统masm5.0代码)
    • 注意,加载内核到内存中,此内核程序必须要符合实际内存地址(就是要拷贝到内存的地址,不可以随意拷贝到任意内存地址,必须固定和代码org、$、$$吻合)
    • 所以masm语法具体不详,此处org、$、$$语法为nasm语法。(nasm较早版本,具体版本忘了;)有时间再看看,最近很忙)
  • 发一段一个DOS的启动扇区
33C08EC08ED88ED0BC007CFC8BF4BF0006B90001F2A5EA670600008BD558A24F073C357423B410F6E405AE048BF0807C04007444807C0405743EC60480E8DA008A74018B4C02EB08E8CF00B9010032D1BB007CB80102CD13721E81BFFE0155AA7516EA007C000080FA817402B2808BEA4280F2B388164107BFBE07B90400C60634073132F6882D8A45043C0074233C05741FFEC6BE3107E87100BE4F0746468B1C0AFF7405327D0475F38DB77B07E85A0083C710FE063407E2CB803E750402740BBE42070AF6750ACD18EBACBE3107E83900E8360032E4CD1A8BDA83C360B401CD16B400750BCD1A3BD372F2A04F07EB0ACD168AC43C1C74F304F63C3172D63C3577D250BE2F07BB1B0653FCAC50247FB40ECD1058A88074F2C356B80103BB0006B9010032F6CD135EC6064F073FC30D8A0D0A4635202E202E202EA06469736B20320D0A0A44656661756C743A204631A00001000400060307070A0A630E640E6514801981198219831E9324A52B9F2F75335233DB36403BF24100446FF3487066F34F73B2556E69F84E6F76656CEC4D696E69F84C696E75F8416D6F6562E1467265654253C4425344E9506369F84370ED56656E69F8446F737365E33FBF800101000103512D11000000F44F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055AA
  • 反汇编以上16进制代码,并跟进单步调试,在虚拟机中:
0000:7c00: xor ax,ax ;33c0
0000:7c02: mov es,ax ;8ec0
0000:7c04: mov ds,ax ;8ed8
0000:7c06: mov ss,ax ;8ed0
0000:7c08: mov sp,0x7c00 ;bc007c
0000:7c0b: cld ;fc
0000:7c0c: mov si,sp ;8bf4
0000:7c0e: mov di,0x0600 ;bf0006
0000:7c11: mov cx,0x0100 ;b90001
0000:7c14: repne movsw word ptr es:[di], word ptr ds:[si] ;f2a5
... ; 重复执行0000:7c14移动0000:7c00数据到0000:0600内存地址 指令
0000:7c16: jmpf 0x0000:0667 ;ea67060000
....
0000:0667: cmp dl, 0x81 ;80fa81 启动扇区偏移第67字节处
0000:066a: jz .+2 (0x0000066e) ;7402
0000:066c: mov dl,0x80 ;b280
0000:066e: mov bp,dx ;8bea
0000:0670: inc dx ;42
0000:0671: xor dl,0xb3 ;80f2b3
0000:0674: mov byte ptr ds:0x0741, dl ;88164107
0000:0678: mov di,0x07be ;bfbe07
0000:067b: mov cx,0x0004 ;b90400
0000:067e: mov byte ptr ds:0x0734, 0x31 ;c606340731
0000:0683: xor dh,dh ;32f6
0000:0685: mov byte ptr ds:[di], ch ;882d
0000:0687: mov al, byte ptr ds:[di+4] ;8a4504
0000:068a: cmp al,0x00 ;3c00
0000:068c: jz .+35 (0x000006b1) ;7423
0000:068e: cmp al, 0x05 ;3c05
0000:0690: jz .+31 (0x000006b1) ;741f
0000:0692: inc dh ;fec6
0000:0694: mov si,0x0731 ;be3107
0000:0697: call .+113 (0x0000070b) ;e87100
...
0000:070b: cld ;fc
0000:070c: lodsb al, byte ptr ds:[si] ;ac
0000:070d: push ax ;50
0000:070e: and al,0x7f ;247f
0000:0710: mov ah, 0x0e ;b40e
0000:0712: int 0x10 ;cd10
...
c000:0152: pushf ;9c
;今天先干到这2018年1月18日 13:40

作者email: xym5366@hotmail.com

About

xymOS操作系统制作,自制操作系统,空余时间少,少量代码,不太会玩github敬请谅解。

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /