第一個啓動程序boot.bin

org 07c00h       ;告訴彙編編譯器,程序的段地址是07c00h
                          ;org指令明確告訴編譯器,我們的程序的段地址是7C00H
                          ;而不是原來的0000
 mov ax,cs        ;int 彙編指令 根據終端編號,int 10h顯示字符串。
                          ;bios中的現實字符串的。
 mov es,ax
 mov bp,msgstr                           ;es:bp 指向的內容就是我們要顯示的字符串的地址了。
 mov cx,13                                    ;顯示的長度
 mov dh,12                                   ;顯示的行號
 mov dl,36                                    ;顯示的列號
 mov bh,0                                     ;顯示的頁數
 mov al,1                                       ;顯示的是字符串
 mov bl,0ch                                  ;顯示的字符屬性
 mov ah ,13h                                ;明確調用13h子程序
 
 msgstr: db "hello my os !"

 int 10h

 times  510-($-$$)db 0    ;重複N次每次填充爲0
 dw 55aah
 jmp $ ;不斷的跳轉到當前位置,是個死循環;
 
 
現象:當把這段程序編譯後,寫入到虛擬軟盤,使用virtualpc 2007啓動該虛擬軟盤;
             只有hello my os  或者hello os 可以正確的打印到虛擬機中央,而改成 yatou
             os 就沒法顯示。
 
分析:經過阿燦兄(彙編高手)知,msgstr: db "hello my os !" 所寫的位置不對;
             被當成代碼執行了。所以出錯。
 
 結果:經改正OK!
           
改後代碼爲:
 
org 07c00h                           ;告訴彙編編譯器,程序的段地址是07c00h
                                               ;org指令明確告訴編譯器,我們的程序的段地址是7C00H
                                               ;而不是原來的0000
 mov ax,cs                             ;int 彙編指令 根據終端編號,int 10h顯示字符串。
                                               ;bios中的現實字符串的。
 mov es,ax
 mov bp,msgstr                     ;es:bp 指向的內容就是我們要顯示的字符串的地址了。
 mov cx,16                              ;顯示的長度
 mov dh,12                             ;顯示的行號
 mov dl,36                              ;顯示的列號
 mov bh,0                               ;顯示的頁數
 mov al,1                                 ;顯示的是字符串
 mov bl,0ch                            ;顯示的字符屬性
 mov ah ,13h                          ;明確調用13h子程序
 int 10h
 
 
 msgstr: db "hello yatou os !"
 times  510-($-$$)db 0            ;重複N次每次填充爲0
 dw 55aah
 
 jmp $                                       ;不斷的跳轉到當前位置,是個死循環;
 
                                        
霍霍!
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章