16位Boot直接操作显存显示白色字符和红色字符

SECTION .text 
        org 0x7c00
        mov ax,cs
        mov ds,ax
        mov ss,ax
        mov fs,ax
        mov es,ax
        mov sp,0x7c00
        mov ax,0xb800
        mov gs,ax


        mov ax,0600h
        mov bx,0700h;
        mov cx,0;
        mov dx,0184fh;
        int 10h;


        mov ax,0200h;
        mov bx,0000h;
        mov dx,0000h;
        int 10h;
        
        ;以下显示白色字符串"Hello,"和红色字符串"OS"
         mov byte [gs:0x00],'H'
         mov byte [gs:0x01],0x07
         mov byte [gs:0x02],'e'
         mov byte [gs:0x03],0x07
         mov byte [gs:0x04],'l'
         mov byte [gs:0x05],0x07
         mov byte [gs:0x06],'l'
         mov byte [gs:0x07],0x07
         mov byte [gs:0x08],'o'
         mov byte [gs:0x09],0x07
         mov byte [gs:0x0a],','
         mov byte [gs:0x0b],0x07
         mov byte [gs:0x0c],"O"
         mov byte [gs:0x0d],0x04
         mov byte [gs:0x0e],'S'
         mov byte [gs:0x0f],0x04
         jmp $               ;无限循环
         times 510-($-$$) db 0
         db 0x55,0xaa

bximage -hd=30 -func=create -imgmode="flat" -q boot.img创造一个大小为30M模式为flat的硬盘,bximage不是Linux原生程序,需要安装bochs才能使用。
sudo nasm -f bin mbrGraphicsCard.asm -o mbrGraphicsCard.bin生成mbrGraphicsCard.bin文件。
sudo dd if=mbrGraphicsCard.bin of=boot.img bs=512 count=1 conv=notrunc将mbrGraphicsCard.bin写入到boot.img文件里边。
sudo bochs -f bochsrc开始模拟,输入“c”之后按回车键开始模拟运行。
16位Boot直接操作显存显示白色字符和红色字符_第1张图片
运行结果如下图:
16位Boot直接操作显存显示白色字符和红色字符_第2张图片
此文章为4月Day 8学习笔记,内容来源于极客时间《操作系统实战 45 讲》。

你可能感兴趣的:(操作系统实战45讲,linux)