《汇编语言》学习(十八)

来源:互联网 发布: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节。

0 0
原创粉丝点击