免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1229 | 回复: 0

[原]linux下bochs创建最简单的OS(二) [复制链接]

论坛徽章:
0
发表于 2009-05-21 15:16 |显示全部楼层
接自 linux下bochs创建最简单的OS 一篇
作者:帅得不敢出门   C++爱好者灌水天堂群 3503799   转载请保留此信息
org 07c00h
                                                                                
LABEL_START:
        mov ax,cs
        mov ds,ax
        mov es,ax
        mov ax,0b800h
        mov gs,ax
        mov ah,0ch
        mov al,'H'
        mov [gs:0],ax
        jmp $
times 510-($-$$) db 0
dw 0xaa55
这个代码是直接操作视频缓冲区显示字符的,只能显示单个H
我们要让他显示Hello World OS
org 07c00h
                                                                                
LABEL_START:
        mov ax,cs
        mov ds,ax
        mov es,ax
        mov ax,0b800h
        mov gs,ax
        mov si,HelloWorld
        xor di,di
PutStr:
        mov ah,0ch  ;黑底红字 注:颜色代码见下对照表
        lodsb ;Loads [SI] into AL and increases SI by one
        or al,al
        jz ToEnd
        mov [gs:di],ax
        add di,2
        jmp PutStr
ToEnd:
        jmp $
HelloWorld db 'Hello World OS',0
times 510-($-$$) db 0
dw 0xaa55
这样便可满足需求了。
颜色代码对照表
1    2 3 4    5     6 7 8
BL   R G B    I     R G B
闪烁 字符底色 加亮 字符颜色
再进一步,我们现在只是在右上角显示,如果要在当前光标位置显示呢,我们现在修改第一个代码来实现
第二个代码(注释请看linux下bochs创建最简单的OS一篇)是:
org 07c00h
mov        ax, cs
mov        ds, ax
mov        es, ax
call        DispStr
jmp        $ ;
DispStr:
mov        ax, BootMessage
mov        bp, ax
mov        cx, 15
mov        ax, 01301h
mov        bx, 000ch   
int        10h
ret
BootMessage:        db "Hello,World OS!"
times 510-($-$$) db 0
dw        0xaa55
我们只要调用int 10h中断,获取当前的光标位置就行了。
org 07c00h
mov        ax, cs
mov        ds, ax
mov        es, ax
mov        ah,03h
xor        bh,bh
int        10h
call        DispStr
jmp        $
DispStr:
mov        ax, BootMessage
mov        bp, ax
mov        cx, 15
mov        ax, 01301h
mov        bx, 000ch
int        10h
ret
BootMessage:        db "Hello,World OS!"
times 510-($-$$) db 0
dw        0xaa55
汇编,写入img,bochs加载执行,OK
当然其他的功能只要想的到,都可以自行添加它,希望大家有一个愉快的学习过程。



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/64540/showart_1934577.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP