|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
用 中文汇编语言 写操作系统(一)
2011年03月13日 星期日 11:59
声明:本文部分内容参考自《自己动手写操作系统》-于渊 著
若要转载,请注明出处:http://hi.baidu.com/helingyuan/blog
需要的编程环境:中汇.exe WinHex NASM(可选)
中汇帮助文档
需要的 外部设备:一个U盘。
环境搭建(以中汇为例):
假如你的 中汇.exe 在 E:\Tools\汇编 目录下,你就在 环境变量 的PATH中加入:“;E:\Tools\汇编”。
再假如你的 程序 放在E:\汇编目录下,运行cmd,输入E: 回车,再输入 cd 汇编,现在就进入了你的工作目录。(输入 中汇 -帮助 ,可以查看帮助信息)
我们在记事本中写入以下汇编代码:
(如果你没有Nasm,你可以绕过这段nasm汇编程序)
org 07c00h //告诉编译器程序加载到7c00处
mov ax, cs
mov ds, ax
mov es, ax
call DispStr //调用显示字符串子程序
jmp $ //无限循环
DispStr:
mov ax,BootMessage
mov bp, ax //es:bp=串地址
mov cx, 16 //cx=串长度
mov ax, 01301h //ah=13,al=01h
mov bx, 000ch //页号为0(bh=0) 黑底红字(bl=0ch)高亮
mov dl, 0
int 10h //10h号中断
ret
BootMessage: db "Hello,OS world!"
times 510-($-$$)db0 //填充剩下的空间,使生成的二进制代码恰好为512字节
dw 0xaa55 //结束标志
把以上内容存为boot.asm格式,用nasm编译成bin格式的二进制文件。
(输入命令:nasm boot.asm -o boot.bin即可编译)
把得到的boot.bin文件用WinHex打开,全部复制,再选择工具-〉打开磁盘-〉物理磁盘-〉你的U盘-〉确定
接下来选择 起始扇区 ,全选,ctrl+B粘贴,ctrl+S保存。重启电脑,选择U盘启动,即可看见屏幕显示:Hello,OS world!
***********************************************************************************
接下来,我们用中文汇编代码写这段程序,代码如下:
起始地址 07c00h //告诉编译器程序加载到7c00处
移动 累加器, 代码段
移动 数据段, 累加器
移动 附加段, 累加器
调用 显示字符串 //调用显示字符串子程序
跳转到 $ //无限循环
显示字符串:
移动 累加器, 启动信息
移动 基址指针, 累加器 //附加段:基址指针=串地址
移动 计数器, 16 //计数器=串长度,你可以任意改变数值“16”。
移动 累加器, 01301h //累加器高8=13,累加器低8=01h
移动 基址器, 000ch //页号为0(基址器高8=0) 黑底红字(基址器低8=0ch)高亮
移动 数据器低8, 0
中断 10h //10h号中断
返回
启动信息: 定义字节 "Hello,OS World! " //如果要显示汉字,需要字库的支持。
次数 510-($-$$) 定义字节 0 //填充剩下的空间,使生成的二进制代码恰好为512字节
定义字 0xaa55 //结束标志
把以上内容存为boot1.asm格式,用中汇.exe编译成bin格式的二进制文件。
(输入命令:中汇 boot1.asm -输出 boot1.bin即可编译)
把得到的boot1.bin文件用WinHex打开,全部复制,再选择工具-〉打开磁盘-〉物理磁盘-〉你的U盘-〉确定
接下来选择 起始扇区 ,全选,ctrl+B粘贴,ctrl+S保存。重启电脑,选择U盘启动,即可看见屏幕显示:Hello,OS world!
注:如果需要把boot1.asm编译成img格式,可以输入:
|
|