这一次咱们开始本人实现一个简略的操作系统,当然本人也是在看他人的视频进行学习,心愿本人能从这个试验中学习到操作系统相干的常识
<!--more-->
环境配置环境配置VMwareArchLinuxVSCodenasmbochsqemugdbVSCode近程连贯这个步骤就大家自行百度下把
boot.asm[org 0x7c00]; 设置屏幕模式为文本模式,革除屏幕mov ax, 3int 0x10; 初始化段寄存器mov ax, 0mov ds, axmov es, axmov ss, axmov sp, 0x7c00; 0xb8000 文本显示器的内存区域mov ax, 0xb800mov ds, axmov byte [0], 'H'; 阻塞jmp $; 填充 0times 510 - ($ - $$) db 0; 主疏导扇区的最初两个字节必须是 0x55 0xaa; dw 0xaa55db 0x55, 0xaa编译nasm -f bin boot.asm boot.bin创立硬盘镜像bximage -q -hd=16 -func=create -sectsize=512 -imgmode=flat master.img配置bochsrc# configuration file generated by Bochsplugin_ctrl: unmapped=true, biosdev=true, speaker=true, extfpuirq=true, parallel=true, serial=true, iodebug=true, pcidev=false, usb_uhci=falseconfig_interface: textconfigdisplay_library: x,options="gui_debug"memory: host=32, guest=32romimage: file="/usr/share/bochs/BIOS-bochs-latest", address=0x00000000, options=nonevgaromimage: file="/usr/share/bochs/VGABIOS-lgpl-latest"boot: diskfloppy_bootsig_check: disabled=0floppya: type=1_44# no floppybata0: enabled=true, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14ata0-master: type=disk, path="../build/master.img", mode=flatata0-slave: type=noneata1: enabled=true, ioaddr1=0x170, ioaddr2=0x370, irq=15ata1-master: type=noneata1-slave: type=noneata2: enabled=falseata3: enabled=falseoptromimage1: file=noneoptromimage2: file=noneoptromimage3: file=noneoptromimage4: file=noneoptramimage1: file=noneoptramimage2: file=noneoptramimage3: file=noneoptramimage4: file=nonepci: enabled=1, chipset=i440fx, slot1=none, slot2=none, slot3=none, slot4=none, slot5=nonevga: extension=vbe, update_freq=5, realtime=1, ddc=builtincpu: count=1:1:1, ips=4000000, quantum=16, model=bx_generic, reset_on_triple_fault=1, cpuid_limit_winnt=0, ignore_bad_msrs=1, mwait_is_nop=0cpuid: level=6, stepping=3, model=3, family=6, vendor_string="AuthenticAMD", brand_string="AMD Athlon(tm) processor"cpuid: mmx=true, apic=xapic, simd=sse2, sse4a=false, misaligned_sse=false, sep=truecpuid: movbe=false, adx=false, aes=false, sha=false, xsave=false, xsaveopt=false, avx_f16c=falsecpuid: avx_fma=false, bmi=0, xop=false, fma4=false, tbm=false, x86_64=true, 1g_pages=falsecpuid: pcid=false, fsgsbase=false, smep=false, smap=false, mwait=trueprint_timestamps: enabled=0debugger_log: -magic_break: enabled=1port_e9_hack: enabled=0private_colormap: enabled=0clock: sync=none, time0=local, rtc_sync=0# no cmosimagelog: -logprefix: %t%e%ddebug: action=ignoreinfo: action=reporterror: action=reportpanic: action=askkeyboard: type=mf, serial_delay=250, paste_delay=100000, user_shortcut=nonemouse: type=ps2, enabled=false, toggle=ctrl+mbuttonspeaker: enabled=true, mode=systemparport1: enabled=true, file=noneparport2: enabled=falsecom1: enabled=true, mode=nullcom2: enabled=falsecom3: enabled=falsecom4: enabled=false将boot.bin写入到主疏导扇区dd if=boot.bin of=master.img bs=512 count=1 conv=notruncbochs中运行bochs -q -f bochsrc若bochs中显示出一个H,则表明配置环境胜利,下一节,咱们将对刚刚那个boot.asm进行代码解说
...