汇编和c语言混合实现操作系统.doc

汇编和c语言混合实现操作系统.doc

ID:54945526

大小:427.50 KB

页数:39页

时间:2020-04-24

汇编和c语言混合实现操作系统.doc_第1页
汇编和c语言混合实现操作系统.doc_第2页
汇编和c语言混合实现操作系统.doc_第3页
汇编和c语言混合实现操作系统.doc_第4页
汇编和c语言混合实现操作系统.doc_第5页
资源描述:

《汇编和c语言混合实现操作系统.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验三一、实验目的1.掌握TASM汇编语言与TURBOC语言汇合编程的方法。2.实现内核与引导程序分离,掌握软盘上引导操作系统方法。3.设计并实现一种简单的作业控制语言,建立具有较友好的控制命令的批处理原型操作系统,掌握操作系统提供用户界面和内部功能的实现方法。二、实验内容在实验二的基础上,进化你的原型操作系统,增加下列操作系统功能:(1)将原型操作系统分离为引导程序和MYOS内核,由引导程序加载内核;(2)内核由汇编语言kernal.asm和c语言kernal.c二个模块生成;(3)利用C语言实现作业控制语言mJCB,原型操作系统在当前行显示一个指示符(可以是简单的一个字符或你的学

2、号之类),允许用户输入一行命令(回车结束,语法由你设计),操作系统解释命令并完成相应的功能(3个以上的内置功能,如time、date、asc等,而且能执行软盘上的某个用户程序),并在你的实验报告中详细介绍你的mJCB语言的语法格式和功能。三、实验报告1、涉及的基础知识和实验环境工具综述、你的解决方案包括程序算法原理或流程图、程序模块说明、变量定义与作用说明、数据结构组织等A.实验环境工具综述:本次试验环境为VMware9平台上搭建的8086虚拟机,编译器为tasm,tcc,链接器为tlink,通过Winhex剪辑2进制文件,并用DiskWriter工具将主程序写入虚拟软盘,通过虚拟机

3、加载软盘实现裸机运行。B.算法原理:a)计算机启动后,通过引导扇区加载软盘上余下的有效扇区。b)引导扇区安装必要的中断,如8号中断用以动态显示时间,21号中断用以用户程序的返回,设置栈指针,数据段指针,建立c语言运行环境,设置计数器,用以动态显示时间。配置完成后,转入基于c语言的控制程序的运行。c)基于c语言的控制程序无限重复向输入端请求命令,解析命令,跳转调用对应程序,但接收到重启命令时重启,接到关机命令时进行关机。d)系统总的实现为引导程序(osa.asm),汇编实现的c语言函数库(clib.asm),汇编实现的中断程序库(oslib.asm),c语言实现的控制台程序(osc.c

4、)。e)由于系统已搭建c语言运行环境,并提供了相应的库,再提供一个供用户用于链接c语言程序的启动程序,用户程序即可完全由c语言实现。启动程序指定用户程序的偏移(如c9000.asm指定了用户的c程序偏移为9000h,可更改启动程序中的org来更改目标程序的偏移),并能够返回控制台(通过调用自己安装的int21H返回)。A.程序模块说明:a)clib.asm中汇编实现的c函数库externcharcls();功能:清屏,清空第0页的显存输入:无返回:无externintputs(constchar*str);功能:向当前光标位置输出字符串输入:字符串首地址返回:输出字符个数extern

5、char*gets(char*str);功能:读取字符串输入:字符串首地址返回:字符串首地址externintstrlen(constchar*str);功能:求以0结束的字符串的长度输入:字符串首地址返回:字符从长度externintgetchar(void);功能:读取字符输入:无返回:字符的ascii码externintputchar(intc);功能:输出字符输入:字符c返回:字符cexternunsignedintport_in8(unsignedintport);功能:从port端口读入8位数据输入:端口号返回:读取的数据externunsignedintport_in1

6、6(unsignedintport);功能:从port端口读入16位数据输入:端口号返回:读取的数据externvoidport_out8(unsignedintport,unsignedintvalue);功能:向port端口输出8位数据value输入:端口号和数据返回:无externvoidport_out16(unsignedintport,unsignedintvalue);功能:从port端口输出16位数据value输入:端口号和数据返回:无externvoidsetp_cursor(unsignedintbh,unsignedintdh,unsignedintdl);功能

7、:将第bh页的指针置于dh行dl列输入:页号bh,行号dh,列号dl返回:无externvoidrun_pro(intord);功能:运行程序地址表中第ord号程序输入:程序序号返回:无a)主控制程序:osc.cexterncharcls();externintputs(constchar*str);externchar*gets(char*str);externintstrlen(constchar*str);externintgetchar(void)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。