BOOT.S程式詳解

來源:互聯網
上載者:User

先上代碼。這段代碼在我的BOCHS上跑著沒問題。

*************************************************************************************************************************

  1 !
  2 !boot.s -- bootsect.s 的架構程式。用代碼0x07替換msag中1字元,然後在螢幕第一行上顯示
  3 !
  4
  5 .globl begtext,begdata,begbss,endtext,enddata,endbss     !全域識別碼,供ld86連結使用
  6 .text                                                    !本文段
  7 begtext:
  8 .data                                                    !資料區段
  9 begdata:
 10 .bss                                                     !未初始化資料區段
 11 begbss:
 12 .text                                                    !本文段開始
 13 BOOTSEG = 0x07c0                                         !BIOS載入bootsect代碼的原始段地址。這裡注意是0x07c0這是段基底位址暫存器,在轉換位物理地址是根據16位段寄存器來                                                              表示20位匯流排定址的技術,應該是左移4位,即0x7c00,這就是BIOS載入boot.s到記憶體的位置
 14
 15
 16 entry start                                              !告知連結程式,程式從strat標號處開始執行
 17
 18 start:
 19         jmpi  go,BOOTSEG                                 !段間跳轉。BOOTSEG指出跳轉段的地址,標號go是位移地址 ???????????????
 20 go:     mov   ax,cs                                      !段寄存器cs值-->ax,用於初始化資料區段寄存器ds和es,ax是16位通用寄存器,cs段寄存器,經過上一條指令段寄存器的值
                                                              已經從0x0000變為0x07c0。
 21         mov   ds,ax                                      !ds資料區段寄存器,
 22         mov   es,ax                                      !es附加段寄存器,
 23         mov   [msg1+17],ah                               !0x07-->替換字串1個點符號,喇叭會鳴一聲??????????????????
 24         mov   cx,#20                                     !共顯示20個字元,包括斷行符號分行符號,dx可用於通用寄存器,還常用來儲存計數值,如在移位指令,迴圈和串處理指示中                                                               用作隱含的計數器。
 25         mov   dx,#0x1004                                 !字串顯示在螢幕第17行,第5列處
 26         mov   bx,#0x000c                                 !字元顯示內容(紅色)
 27         mov   bp,#msg1                                   !指向要調用的字串(中斷調用要求)
 28         mov   ax,#0x1301                                 !寫字串並移動游標到串結尾處
 29         int   0x10                                       !BIOS中斷調用0x10,功能0x13,子功能01
 30                                                          !Write string (EGA+, meaning PC AT minimum)    AH=13h  AL = Write mode, BH = Page Number, BL = Color, CX =                                                              String length, DH = Row, DL = Column, ES:BP = Offset of string這段是在外國網站找到的資料這樣就能解釋24-29.。網址http://en.wikipedia.org/wiki/INT_10H
                                                              行賦值的作用
 31 loop0:  jmp   loop0                                      !死迴圈
 32
 33 msg1:   .ascii "Loading system..."                       !調用BIOS中斷顯示的資訊。共20個ASCII碼字元。
 34         .byte  13,10                                     !在ASCII中13表示斷行符號,10表示換行,這裡注意斷行符號的作用是使游標移動到行的開始
 35
 36
 37 .org    510                                              !表示以後語句從地址510(0x1FE)開始存放
 38         .word 0xAA55                                     !有效開機磁區標誌,供BIOS載入開機磁區使用。
 39
 40 .text
 41 endtext:
 42 .data
 43 enddata:
 44 .bss
 45 endbss:
 *******************************************************************************************************

其間很多疑問已在程式的注釋中表明,還有兩個問題沒有解決,上面註明???。

第一個是你如果把go該變成為制定 的值還是會正確運行,第二個是ah替換字串最後一個位元組就會響聲????

 

 

其實這個程式的理解還遠不止這麼多,我覺得對於初學者最關鍵的是要搞明白兩個值,0x07c0還有 0xAA55

這才是這段程式最神奇的地方。:-)呵呵呵。

關於0x07c0這個值看這篇文章:

http://blog.csdn.net/ccccdddxxx/archive/2011/06/07/6529721.asp

相信看完就理解的差不多啦

關於0xAA55這個值我也不是很清楚;

http://www.linkedin.com/answers/technology/software-development/TCH_SFT/648541-63552830

看完依然不清出。嘿嘿

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.