1

我在程序集中创建了一个引导加载程序,它输出“Hello World”。我想在这个引导加载程序中插入一个背景图像。那么如何修改这段代码呢?非常感谢。

bits 16 ;
org 0x7c00 ; 

jmp main ; 



Message db "Welcome Home, booting from low-level 16-bit...", 0x0 
MessageB db "Chaturaka's own bootloader program written in x86 assembly language.", 0x0
AnyKey db "Press any key to reboot...", 0x0 

;
Println:
    lodsb ;
    or al, al
    jz complete
    mov ah, 0x0e    
    int 0x10 ;
    jmp Println ;   
complete:
    call PrintNwL

;   
PrintNwL: 
    mov al, 0   ; 
    stosb       ; 


    mov ah, 0x0E
    mov al, 0x0D
    int 0x10
    mov al, 0x0A 
    int 0x10
    ret

;
Reboot: 
    mov si, AnyKey
    call Println
    call GetPressedKey 

    ;

    db 0x0ea 
    dw 0x0000 
    dw 0xffff 

;
GetPressedKey:
    mov ah, 0
    int 0x16  ;
    ret 

;
main:
   cli ;

   mov ax,cs              
   mov ds,ax   
   mov es,ax               
   mov ss,ax                
   sti ;

   mov si, Message 
   call Println 

   mov si, MessageB
   call Println 

   call PrintNwL
   call PrintNwL

   call Reboot 

   times 510 - ($-$$) db 0 ;
   dw 0xAA55 ;

希望你能回答这个问题。

4

2 回答 2

0

查看 osdev WIKI,获取有关操作系统和引导加载程序开发的许多有用信息。 在这里,您可以找到有关在保护模式下绘制屏幕的宝贵信息。

于 2013-05-01T07:58:19.287 回答
0

这些是您需要执行的步骤:

  • 设置图形模式(例如模式 0Dh 或模式 13h)。
  • (可选)如果您的图像不使用默认调色板,请设置调色板。
  • 从磁盘加载图像数据并将其写入视频内存,通常从段 0A000h 开始。
于 2013-05-01T07:32:47.690 回答