汇编语言程序设计第六次实验题目

2020-05-04 11:49

《汇编语言程序设计实验》 第六次上机实验任务

实验名称:实验六 输入输出与中断处理程序设计

一、实验目的和要求

(1) 掌握中断矢量表的概念;

(2) 熟悉I/O访问,BIOS功能调用方法;

(3) 掌握实方式下中断处理程序的编制与调试方法。

二、实验内容

任务1:用三种方式获取中断类型码10H对应的中断处理程序的入口地址。 要求:首先要进入虚拟机状态,然后

(1) 直接运行调试工具(TD.EXE),观察中断矢量表中的信息。

(2) 编写程序,用 DOS系统功能调用方式获取,观察功能调用相应的出口参数与“(1)”看到的结果是否相同 (使用TD观看出口参数即可)。

(3) 编写程序,直接读取相应内存单元,观察读到的数据与“(1)”看到的结果是否相同 (使用TD观看程序的执行结果即可)。

任务2:编写一个接管键盘中断的中断服务程序并驻留内存,要求在程序返回DOS操作系统后,键盘的按键A变成了按键B,而B变成了A。 要求:

(1)在 DOS虚拟机或DOS窗口下执行程序,中断服务程序驻留内存。

(2)在DOS命令行下按键A,屏幕显示为B,按B时屏幕显示为A。执行TD,在代码区输入指令“MOV AX,0”看是否能发生变化。

(3)选作:另外编写一个中断服务程序的卸载程序,将键盘中断服务程序恢复到原来的状态(也就是还原中断矢量表的信息)。

任务3:读取CMOS内指定单元的信息,按照16进制形式显示在屏幕上。 要求:

(1) 先输入待读取的CMOS内部单元的地址编号(可以只处理编号小于10的地址单元)。再使用IN/OUT指令,读取CMOS内的指定单元的信息。

(2) 将读取的信息用16进制的形式显示在屏幕上。若是时间信息,可以人工判断一下是否正确。

上述任务中,重要操作环节(纳入到学生自己写的实验步骤中)提示:

任务编号 任务1 序号 1 2 3 4 学生尝试的操作 打开TD之后,如何在数据区切换到中断向量表所在内存区域 如何计算某个中断入口在中断向量表内的偏移地址? 如何编程使用系统功能调用获取中断入口地址? 如何编程通过直接内存读取获取中断入口地址? 5 任务1 2 2 3 4 5 6 任务1 3 2

用TD把中断矢量表里常用的中断矢量的值随意改成其他值会有什么现象发生? 有哪两种方式进入原中断服务程序?(CALL和JMP) 为避免未调试好的中断服务程序接管键盘中断时使键盘操作失灵,可以先用其他方法调试该中断服务程序,调试好后再安装成接管键盘中断的状态,请给出这种“其他”调试方法的描述。 编写的中断驻留程序执行后能否正常返回到DOS?DOS是否还能正常工作? 同时打开另外一个虚拟DOS窗口,键盘A、B是否被替代? 若希望该中断服务程序做更大范围的按键替代(比如26个字母首尾相互替代),则该程序如何扩展? 选作的要求(3)应该如何实现,如何找到保存的原中断入口地址?驻留的内存如何释放? 如何直接在TD下使用IN/OUT指令获取CMOS数据? CMOS里的时间信息是按照压缩BCD码的形式存放的,举例说明压缩BCD码的格式是什么? 附录 参考资料

1. 键盘扫描码

键盘上的每一个键都有两个唯一的数值进行标志。为什么要用两个数值而不是一个数值呢?这是因为一个键可以被按下,也可以被释放。当一个键按下时,它们产生一个唯一的数值,当一个键被释放时,它也会产生一个唯一的数值,我们把这些数值都保存在一张表里面,到时候通过查表就可以知道是哪一个键被敲击,并且可以知道它是被按下还是被释放了。这些数值在系统中被称为键盘扫描码。

2. BIOS键盘服务INT 16H

本实验用到INT 16H的功能号是00H和10H 功能号:00H和10H 功能:从键盘读入字符 入口参数:AH

=00H—读键盘 =10H—读扩展键盘

出口参数: AH=键盘的扫描码 AL=字符的ASCII码

其他一些功能号包括: 功能号:01H和11H 功能:读取键盘状态

入口参数:AH =01H—检查普通键盘 =11H—检查扩展键盘

出口参数:ZF=1—无字符输入,

否则,AH=键盘的扫描码,AL=ASCII码。 功能号:02H和12H 功能:读取键盘标志

入口参数:AH =02H—普通键盘的移位标志 =12H—扩展键盘的移位标志

出口参数:AL=键盘标志(02H和12H都有效), 其各位之值为1时的含义如下: 位7—INS开状态 位3—ALT键按下

位6—CAPS LOCK开状态 位2—CTRL键按下

位5—NUM LOCK开状态 位1—左SHIFT键按下

位4—SCROLL LOCK开状态 位0—右SHIFT键按下 AH=扩展键盘的标志(12H有效), 其各位之值为1时的含义如下: 位7—SysReq键按下 位3—右ALT键按下 位6—CAPS LOCK键按下 位2—右CTRL键按下 位5—NUM LOCK键按下 位1—左ALT键按下 位4—SCROLL键按下 位0—左CTRL键按下 功能号:03H

功能:设置重复率

入口参数:AH=03H 对于PC/AT和PS/2: AL=05H BH=重复延迟 BL=重复率

对于PCjr:AL=00H—装入缺省的速率和延迟 =01H—增加初始延迟 =02H—重复频率降低一半

=03H—增加延迟和降低一半重复频率 =04H—关闭键盘重复功能

出口参数: 无 功能号:04H

功能:设置键盘点击 入口参数:AH =04H

AL =00H—关闭键盘点击功能 =01H—打开键盘点击功能 出口参数: 无 功能号:05H

功能:字符及其扫描码进栈

入口参数:AH=05H

CH=字符的描述码 CL=字符的ASCII码

出口参数: CF=1—操作成功,AL=00H,否则,AL=01H

3. CMOS简介

CMOS是主板上一块可读写的RAM芯片。用途:主要用来保存当前系统的硬件配置和操作人员对某些参数的设定。CMOS芯片是由一块纽扣电池供电。因此在关机状态内部信息也不会丢失。 ---------------------------------------------------------------------------------------------- CMOS拥有两个端口号分别是70h和71h 端口号 权限 70h 71h 长度 作用 不可读可写 8bit 用它来设置CMOS中的数据地址,表明准备访问芯片中的那个字节 可读可写 8bit 用它来读写由70h端口设定的芯片内部的某个字节单元 CMOS中的数据地址对照表。(供编程时查) 地址 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 10H 11H 数据 Time - Seconds Alarm - Seconds Time - Minutes Alarm - Minutes Time - Hours Alarm - Hours Date - Day of the week Date - Day Date - Month Date - Year 29h Status Register A Status Register B Status Register C Status Register D Diagnostic Status Shutdown Status A: Reserved 备注 硬件时间的秒 硬件时间的分 硬件时间的时 12H 13H 14H 15H 16H 17H 18H 19H 1AH 1BH 1CH 1DH 1EH ~ 2DH 2EH 2FH 30H 31H 32H 33H 34H~3FH 40H~5FH 60H 61H 62H~7FH 0 Reserved Equipment Installed Base Memory (high byte) Base memory (low byte) Extended Memory (high byte) Extended Memory (low byte) 0 (C:) Hard Disk Type 1 (D:) Hard Disk Type Reserved Supervisor Password Supervisor Password Reserved CMOS Checksum (high byte) CMOS Checksum (low byte) Extended Memory (high byte) Extended Memory (low byte) Date - Century Power On Status Reserved Extended CMOS User Password User Password Extended CMOS


汇编语言程序设计第六次实验题目.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:风险管理教案2009-2010第一学期 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: