本文主要介绍《汇编语言》一书中的两个课程设计题。课程设计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节。

《汇编语言》学习(十八)相关推荐

  1. PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization

    PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...

  2. C1认证学习十八、十九(表单元素、转义字符)

    C1认证学习十八.十九(表单元素.语义化标签) 十八 任务背景 HTML的表单用于收集用户的输入,表单元素是指的不同类型的input元素,复选框,单选按钮,提交按钮等等. 任务目标 掌握表单标签以及其 ...

  3. 强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)

    在强化学习(十七) 基于模型的强化学习与Dyna算法框架中,我们讨论基于模型的强化学习方法的基本思路,以及集合基于模型与不基于模型的强化学习框架Dyna.本文我们讨论另一种非常流行的集合基于模型与不基 ...

  4. android学习十八(Service服务的基本用法)

    定义一个服务 在项目中定义一个服务,新建一个ServiceTest项目,然后在这个项目中新增一个名为MyService的类,并让它继承自Service,完成后的代码如下所示: package com. ...

  5. 汇编语言(十八)之求两个数的最大公约数

    输入两个数,使用辗转相除法求最大公约数 程序运行: 代码: datas segmentM_max_len db 0ffhM_len db 0M_string db 100 dup(?)M dw 0 N ...

  6. stm32cubeMX学习十八、SD卡虚拟U盘实验

    本程序编写基于秉火霸道STM32F103ZET6运行环境. 跑这个实验之前吃了一些亏,让我一一道来! 1.软件写好了,却发现插入USB线连接到电脑后USB居然没有枚举 解决方法: 野火的这款开发板上做 ...

  7. 国际商务英语学习[十八]

    询价 Inquiry 1 某零售商想向制造商打探新型计算机的详情.第一次接触时,买方应如何得到初步的数据呢? 英文正文 Our contacts in the computer industry sp ...

  8. vue学习十八(axios)

    文章目录 安装 get方法 post方法 批量请求 后端代码 安装 通过npm install axios安装 或者直接用cdn <script src="https://unpkg. ...

  9. OpenCV图像处理学习十八,霍夫变换实现交通车道线检测

    一.霍夫变换 经典霍夫变换用来检测图像中的直线,后来霍夫变换经过扩展可以进行任意形状物体的识别,例如圆和椭圆.霍夫变换运用两个坐标空间之间的变换,将在一个空间中具有相同形状的曲线或直线映射到另一个坐标 ...

  10. 强化学习(十九) AlphaGo Zero强化学习原理

    在强化学习(十八) 基于模拟的搜索与蒙特卡罗树搜索(MCTS)中,我们讨论了MCTS的原理和在棋类中的基本应用.这里我们在前一节MCTS的基础上,讨论下DeepMind的AlphaGo Zero强化学 ...

最新文章

  1. mysql forget the password
  2. 【AutoML】归一化(Normalization)方法如何进行自动学习和配置
  3. 【深度学习】CornerNet: 将目标检测问题视作关键点检测与配对
  4. vsftp:425 错误
  5. 使用 System.Net.Http.Json 简化 HttpClient 的使用
  6. 精典的网吧常用批处理收集
  7. Docker安装Kafka(docker-compose.yml)
  8. 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  9. 记一次java-selenium自动抢红包最简单案例1
  10. Julia : global、local 以及 作用域问题
  11. WPS简历模板的图标怎么修改_个人简历模板集锦,简历自我评价怎么写?
  12. 教育培训机构如何利用小程序招生?
  13. 计算Sharp夏普率的python和c++代码
  14. Nvidia NX平台控制台调试串口修改调试记录
  15. 模拟电子电路(1)——概论
  16. 苏州VS上海:城市化的二个阶段
  17. 解决cdt.causality.graph.GES()报错的问题
  18. 计算机联锁控制台功能,计算机联锁控制台的改进及应用
  19. MobileNet网络学习笔记
  20. 草莓tv 无法播放_草莓:高质量的声音,开源音乐播放器

热门文章

  1. 衡水中学2021年的高考成绩查询,2021年全国百强高中排名,它拥有90%一本升学率,超衡水中学成第一...
  2. 海外IT工程师工作福利揭秘
  3. 亲身实践已解决:Mysql Row size too large ( 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT
  4. mac之强制退出程序方法
  5. manjaro kde安装 配置教程
  6. 安卓9.0 调用系统相册,拍照,图片裁剪的权限
  7. python IDEL 清屏
  8. echart雷达图详细配置
  9. 思岚科技激光雷达在室外使用效果如何?
  10. 英语电影观后感之角斗士