操作系统学习初步--用GNU汇编创建最简单的OS
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                操作系统学习初步--用GNU汇编创建最简单的OS
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                操作系統學習初步–用GNU匯編創建最簡單的OS
先貼上一段GNU匯編代碼:
.code16 .org 0x7c00 /*設置程序地址為0x7c00*/ movw %cs,%ax movw %ax,%ds movw %ax,%es call DispStr /*調用顯示字符串*/ forever: jmp forever /*loop forever*/ DispStr: movw $BootMessage,%bp /*ES:BP=字符串地址*/ movw $16,%cx /*字符串長度*/ movw $0x1301,%ax /*AH=0x13,AL=0x01*/ movw $0xC,%bx /*Page=0(BH=0)Black ground and red font(BL=0x0C,highlight) movb $0,%dl .word 0x10CD /*int 0x10,interrupt 0x10*/ ret BootMessage: .asciz "Hello,OS World!" Append: .rept 462 /*填充空間,使生成的二進制文件為512字節*/ .byte 0x90 .endr .long 0xaa55 /*結束標志*/創建一個編譯BAT,命令如下:
as -o boot.elf boot.as
objcopy -O binary boot.elf boot.bin
得到了一個31.5KB的 BOOT.BIN文件。這個程序為什么會這么大呢?原因在于.org指令,匯編器as會在生成的文件前加上0x7C00個NUL字符。那么我們再創建一個程序,將BOOT.BIN文件中的前0x7C00個字符去除,就得到了想要的512字節的BOOT.BIN文件。然后用*Floppywriter程序生成一個BOOT.IMG軟驅文件。在VBOX虛擬機中創建一個DOS系統,軟驅選擇BOOT.IMG,啟動,OK。
*Floppywriter程序從《自己動手寫操作系統》的光盤中有的。
*請注意匯編代碼里有一個 .word 0x10CD ,因為GNU匯編里不支持int中斷指令,所以用二進制碼直接代替。
總結
以上是生活随笔為你收集整理的操作系统学习初步--用GNU汇编创建最简单的OS的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: eclipse创建servlet,fil
- 下一篇: TTS语音播报
