- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网络用语os
网络用语os
篇一:8086汇编和c语言混合实现操作系统
实验三
一、实验目的
1. 掌握TASM汇编语言与TURBO C语言汇合编程的方法。
2. 实现内核与引导程序分离,掌握软盘上引导操作系统方法。
3. 设计并实现一种简单的作业控制语言,建立具有较友好的控制命令的批处理原型操作系统,掌握操作系统提供用户界面和内部功能的实现方法。
二、实验内容
在实验二的基础上,进化你的原型操作系统,增加下列操作系统功能:
(1)将原型操作系统分离为引导程序和MYOS内核,由引导程序加载内核;
(2)内核由汇编语言kernal.asm和c语言kernal.c二个模块生成;
(3)利用C语言实现作业控制语言mJCB,原型操作系统在当前行显示一个指示符(可以是简单的一个字符或你的学号之类),允许用户输入一行命令(回车结束,语法由你设计),操作系统解释命令并完成相应的功能(3个以上的内置功能,如time、date、asc等,而且能执行软盘上的某个用户程序),并在你的实验报告中详细介绍你的mJCB语言的语法格式和功能。
三、实验报告
1、涉及的基础知识和实验环境工具综述、你的解决方案包括程序算法原理或流程图、程序模块说明、变量定义与作用说明、数据结构组织等
A. 实验环境工具综述:
本次试验环境为VMware9平台上搭建的8086虚拟机,编译器为tasm,tcc,链接器为tlink,通过Winhex剪辑2进制文件,并用DiskWriter工具将主程序写入虚拟软盘,通过虚拟机加载软盘实现裸机运行。
B. 算法原理:
a) 计算机启动后,通过引导扇区加载软盘上余下的有效扇区。 b) 引导扇区安装必要的中断,如8号中断用以动态显示时间,21号中断用以用户程序的返回,设置栈指针,数据段指针,建立c语言运行环境,设置计数器,用以动态显示时间。配置完成后,转入基于c语言的控制程序的运行。
c) 基于c语言的控制程序无限重复向输入端请求命令,解析命令,跳转调用对应程序,但接收到重启命令时重启,接到关机命令时进行关机。
d) 系统总的实现为引导程序(osa.asm),汇编实现的c语言函数库(clib.asm),汇编实现的中断程序库(oslib.asm),c语言实现的控制台程序(osc.c)。
e) 由于系统已搭建c语言运行环境,并提供了相应的库,再提供一个供用户用于链接c语言程序的启动程序,用户程序即可完全由c语言实现。启动程序指定用户程序的偏移(如c9000.asm指定了用户的
c程序偏移为9000h,可更改启动程序中的org来更改目标程序的偏移),并能够返回控制台(通过调用自己安装的int 21H返回)。
C. 程序模块说明:
a) clib.asm中汇编实现的c函数库
extern char cls();
功能:清屏,清空第0页的显存
输入:无
返回:无
extern int puts(const char * str);
功能:向当前光标位置输出字符串
输入:字符串首地址
返回:输出字符个数
extern char* gets(char* str);
功能:读取字符串
输入:字符串首地址
返回:字符串首地址
extern int strlen(const char *str);
功能:求以0结束的字符串的长度
输入:字符串首地址
返回:字符从长度
extern int getchar(void);
功能:读取字符
输入:无
返回:字符的ascii码
extern int putchar(int c);
功能:输出字符
输入:字符c
返回:字符c
extern unsigned int port_in8(unsigned int port);
功能:从port端口读入8位数据
输入:端口号
返回:读取的数据
extern unsigned int port_in16(unsigned int port);
功能:从port端口读入16位数据
输入:端口号
返回:读取的数据
extern void port_out8(unsigned int port, unsigned int value);
功能:向port端口输出8位数据value
输入:端口号和数据
返回:无
extern void port_out16(unsigned int port, unsigned int value);
功能:从port端口输出16位数据value
输入:端口号和数据
返回:无
extern void setp_cursor(unsigned int bh, unsigned int dh, unsigned int dl);
功能:
您可能关注的文档
最近下载
- 2022年ECR ECN基础知识ppt课件.pptx VIP
- 2025年实验动物从业人员上岗证试题库+答案.docx
- 庄周梦蝶原文课件.pptx VIP
- 卧式储罐安装施工方案.docx VIP
- 二零二五版特种电缆定制与研发合作合同.docx
- 生长发育迟缓的诊断与干预.docx VIP
- 佳能 iC MF645Cx 645 彩色激光打印机中文维修手册.pdf VIP
- T_ZGCMITT 006.2-2022 介入诊疗服务质量评价 第2部分:介入诊疗技术规范.docx VIP
- SL 285-2020 水利水电工程进水口设计规范.pdf
- 2025年广州市花都区人民医院医护人员招聘备考试题及答案解析.docx VIP
文档评论(0)