《汇编语言》学习(十八)
来源:互联网 发布:mysql数据库备份方案 编辑:程序博客网 时间:2024/05/22 11:32
本文主要介绍《汇编语言》一书中的两个课程设计题。课程设计1位于第10章,要求在DOS下用彩色显示一张数据表格。课程设计2位于第17章,要求制作一个系统启动盘。
对于课程设计1,我已经在第10章做过了,参考我的博文链接:
http://blog.csdn.net/sagittarius_warrior/article/details/52931471
对于课程设计2,由于时间原因,我暂时不做了,后面有需要的时候,我会补上。在此,我根据网络搜索的结果,推荐两个链接,上面有针对这两个课程设计的答案,如下:
1,http://www.cnblogs.com/S-E-P/archive/2009/12/29/2045085.html
2,http://blog.csdn.net/qq_29134495/article/details/51444547
3,http://www.techbulo.com/770.html
注:链接2中要用到的“软驱仿真软件”,仅限于在XP下使用,win7 32位系统下也用不了。
一、课程设计2,资料解读
1,任务
这次课程设计的任务是编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。
该程序的功能如下:
1)列出功能选项,让用户通过键盘进行选择;
2)用户输入“1”,后重新启动计算机;
3)用户输入“2”后引导现有的操作系统;
4)用户输入“3”后,执行动态显示当前日期、时间的程序;
5)用户输入“4”后,可更改当前日期、时间。
2,BIOS、操作系统和程序启动过程
要实现以上功能,我们需要了解BIOS、操作系统和应用程序的启动原理。
1)BIOS的启动
BIOS,即基本输入输出系统(Basic Input/Output System),它是被固化在主板和各类接口卡(如显卡、网卡等)的ROM芯片上的一组程序。系统BIOS(位于主板的ROM芯片中)是计算机加电后第一个执行的程序。
开机后,CPU自动进入到FFFF:0单元执行(BIOS内),此处有一条跳转指令。CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。
初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。
硬件系统检测和初始化完成后,调用int 9进行操作系统的引导。
基于以上内容,我们要实现功能1——重启计算机,实际上就是要让CPU的执行流重新跳转到FFF:0处执行,也就是说,用户输入“1”后,我们需要修改CS:IP,让它指向FFF:0(用jmp指令就可办到)。
注:
关于BIOS的知识,可以参考1.4、13.4和课程设计2的阅读材料。此外,下面两个链接,第1个介绍了BIOS的启动过程,第2个给出了BIOS的内存分布图。
http://www.techbulo.com/760.html
https://www.mobibrw.com/2013/261
2)操作系统的启动引导
硬件系统检测和初始化完成后,调用int 19进行操作系统的引导。
int 19的最主要的一项工作,就是根据CMOS中的设置,将某个磁盘的0道0面0扇区的内容读取到0:7c00,然后将CS:IP执行0:7c00。
故此,要实现功能2,我们需要先设置CMOS,让int 19最开始从软盘引导启动我们的程序,然后再在我们的程序中修改CMOS,将它改回从C盘引导启动,最后,在我们的程序中调用int 19指令。
注:BIOS的用户设置,一般保存在CMOS中。
3)应用程序
应用程序是通过操作系统的shell来调用的,操作系统将应用程序装载到内存空间后,shell将CS:IP的值设为该应用程序的入口地址,然后CPU开始执行该应用程序。
注:关于应用程序的启动,可以参考4.8节。
- 《汇编语言》学习(十八)
- 学习笔记(十八)
- 机器学习(十八)
- python学习(十八)
- 汇编语言学习(开篇)
- 汇编语言学习(一)
- 汇编语言学习(二)
- 汇编语言学习(三)
- 汇编语言学习(一)
- Linux学习笔记(十八)
- 学习笔记(二十八)
- python 学习笔记(十八)
- java学习笔记(十八)
- 汇编语言学习笔记(1)
- 汇编语言学习笔记(1)
- 汇编语言学习笔记(2)
- 汇编语言学习笔记(3)
- 汇编语言学习笔记(4)
- 图片轮播 --原理到实现
- 从 A/Looper: Could not create epoll instance. errno=24 错误浅谈解决各种 bug 的思路
- Webpack入门实践
- Grub
- Http中响应状态码所表示的意义
- 《汇编语言》学习(十八)
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题
- 利用sql创建Oracle表空间和用户
- C#对象克隆
- 上传请求
- echart之全国地图切换省级地图
- 编程
- 《Javascript权威指南-第6版》读书笔记
- Activity启动过程全解析