Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403586
  • 博文数量: 79
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 897
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-10 23:22
文章分类

全部博文(79)

文章存档

2011年(1)

2010年(6)

2009年(39)

2008年(33)

我的朋友

分类: LINUX

2008-04-01 17:22:09

写一个引导程序,在程序中打印"Hello World"
提示:
BIOS 10h中断的13h号功能向屏幕输出字符串
AH = 13h
AL = 01。光标随字符的输出向后移动
BH = 屏幕页号
BL = 0Ch,红色前景
CX = 字符串长度
DH,DL = 屏幕上的行和列,在该位置处开始输出字符串
ES:BP -> 字符串的开始位置

我写的代码如下:

;boot.asm

org 07c00h    

mov ax,cs

mov ds,ax

mov es,ax     ;使es,ds,cs指向相同的段,以便以后数据操作时的正确定位

mov ax,message

mov bp,ax     ;es:bp =串message的地址

mov ax,01301h ;参照如上BIOS 10h中断调用

mov bx,000ch  ;参照如上BIOS 10h中断调用

mov dl,0

int 10h       ;调用BIOS 10h中断

message: db "Hello World!"

times 510-($-$$) db 0 ;填充剩下的空间

dw 0xaa55     ;结束标志

简单说一下吧,

上述代码实现的功能就是形成一个512字节的程序(因为引导程序刚好占一个扇区即:512字节);

times 510-($-$$) db 0 这段代码就是实现代码长度不够512字节的时候用0填充 即形成510个字节;最后的结束标志刚好是0xaa55 占两个字节;

程序的功能就是打印一个红色字符串"Hello World!"。

阅读(918) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-07-16 19:02:23

KK娱乐视频网,快乐齐分享 www.yulekk.com 搞笑视频,动漫视频,美女写真,靓丽车模,美女翻唱,精彩MV,经典DV

bluesky2bb2008-04-14 18:21:01

to 52xxyj.cn: 你只要将上面的代码 用用NASM编译: nasm boot.asm -o boot.bin 然后将boot.bin写入一个虚拟软盘中 其中虚拟软盘可以用VMWare生成,而你可以找一个写软盘的工具将这个引导程序写入即可,再在虚拟机中以软盘启动就行了。 推荐一个链接给你: http://www.vckbase.com/document/viewdoc/?id=1643

chinaunix网友2008-04-14 12:55:02

请问如何在没有操作系统的机器上运行这个程序?