[請益] 8086 system bios

看板ASM (組合語言)作者 (.)時間9年前 (2016/02/04 03:13), 9年前編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
就我所知道 8086 system bios的位置 應該是從 f0000開始 http://files.osdev.org/mirrors/geezer/osd/ram/index.htm http://duartes.org/gustavo/blog/post/how-computers-boot-up/ 典型會有64KB ,因此範圍從f0000到fffff 但我正在觀摩的一個專案 8086tiny https://github.com/adriancable/8086tiny 它把bios image載入到 // Load BIOS image into F000:0100, and set IP to 0100 read(disk[2], regs8 + (reg_ip = 0x100), 0xFF00); 等於是從 F0100 才開始載入 並且載入不是64KB是 ff00 byte 實際上令我納悶的一點是 它提供的bios檔也沒那麼大 7.48 KB (7,665 位元組) 而已 目前還在思考作者為啥會這樣寫 有人能明白嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.70.74.143 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1454526787.A.71E.html

02/04 10:50, , 1F
x86 reset是到FFFF:0000,在8086上等於是FFFF0
02/04 10:50, 1F

02/04 10:51, , 2F
他不一定要是完整的64K BLOCK,只要你能正確的MAP MMU
02/04 10:51, 2F

02/04 10:52, , 3F
任何位址都是可以執行的,另外,小型機器很可能對ROM
02/04 10:52, 3F

02/04 10:53, , 4F
做不完全解碼來操作,所以BIOS很可能在MAP時可以有很多
02/04 10:53, 4F
不太清楚什什麼叫"做不完全解碼來操作"

02/04 10:54, , 5F
VIEW作為進入點。這樣的優點是一塊ROM可以對應很多的區
02/04 10:54, 5F

02/04 10:54, , 6F
塊做不同用途而不避黏很多科IC
02/04 10:54, 6F
目前觀察結果 再看另一款模擬器叫FAKE86 http://fake86.rubbermallet.org if (!loadrom (0xFE000UL, biosfile, 1) ) return (-1); 總之得到的結論應該是模擬器各自的非典型行為 按照慣例 區段在 F0000~FFFFF 進入點是FFFF0 不過模擬器的進入點卻未必相同 可能是這樣吧 不然找不到別解釋.... ※ 編輯: erspicu (60.248.56.181), 02/04/2016 17:27:45

02/04 23:27, , 7F
狼主真是軟硬通吃阿,拜服、拜服。
02/04 23:27, 7F
文章代碼(AID): #1Mib53SU (ASM)
文章代碼(AID): #1Mib53SU (ASM)