日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统学习初步--用GNU汇编创建最简单的OS

發布時間:2023/12/20 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统学习初步--用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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。