qhdboy 发表于 2011-9-13 14:22:29

中文汇编

用 中文汇编语言 写操作系统(一)
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格式,可以输入:

zzzzllll2006 发表于 2011-9-14 10:48:27

把自己写的启动代码装入U盘用WinHex,装入软盘可以用WinImg,不知道怎么装入光盘镜像呢?

死神 发表于 2011-9-14 11:36:26

我现在还在看 不知道什么时候能看完{:7_148:}
页: [1]
查看完整版本: 中文汇编