资源描述:
《华中科技大学汇编语言程序设计实验报告(七)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、课程实验报告课程名称:实验名称:汇编语言程序设计实验实验四中断与反跟踪实验时间:2017-4-26,14:30-17:30实验地点:南一楼804室45号实验台指导教师:李专专业班级:计算机科学与技术201502班学号:U201414596姓名:卢振兴同组学生:洪豆报告日期:2017年4月26LI原创性声明本人郑重声明:本报告的内容由本人独立完成,有关观点、方法、数据和文献等的引用己经在文中指出。除文中已经注明引用的内容外,本报告不包含任何其他个人或集体己经公开发表的作品或成果,不存在剽窃、抄袭行为。特此声明!学生签名
2、:卢振兴日期:2017.4.19成绩评定实验完成质最得分(70分)(实验步骤清晰详细深入,实验记录真实完整等)报告撰写质量得分(30分)(报告规范、完整、通顺、详实等)总成绩(100分)指导教师签字:1•实验目的与要求(1)学握中断矢量表的概念;(2)熟悉I/O访问,BIOS功能调用方法;(3)掌握实方式下屮断处理程序的编制与调试方法;(4)熟悉跟踪与反跟踪的技术;(5)提升对计算机系统的理解与分析能力。2.实验内容任务1:用三种方式获取中断类型码16H对应的中断处理程序的入口地址。要求:首先要进入虚拟机状态,然后(
3、1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息。(2)编写程序,用16H功能调用方式获取(16H的使用可查阅教材附录),观察功能调用相应的出口参数少“(1)”看到的结果是否相同(便用TD观看出口参数即町)。(3)编写程序,直接读取相应内存单元,观察读到的数据与“(1)”看到的结果是否相同(使用TD观看程序的执行结果即可)。任务2:编写一个接管键盘中断的中断服务程序并驻留内存,要求在程序返回DOS操作系统后,键盘上的小写字母都变成了大写字母。要求:(1)在DOS虚拟机或DOS窗口下执行程序,屮断服务程序驻
4、留内存。(2)在DOS命令行卜键入小写字母,屏幕显示为大写,键入人写时不变。执行TD,在代码区输入指令“movAX,0”看是否能发生变化。(3)选作:另外编写一个中断服务程序的卸载程序,将键盘小断服务程序恢复到原来的状态(也就是还原中断欠虽表的信息,先前驻留的程序可以不退出内存)。任务3:读取CMOS内指定单元的信息,按照16进制形式显示在屏幕上。要求:(1)先输入待读取的CMOS内部单元的地址编号(可以只处理编号小于10的地址单元)。再使川IN/OUT指令,读取CMOS内的指定单元的信息。(2)将读取的信息用16进
5、制的形式显示在屏幕上。若是时间信息,可以人工判断-下是否正确。2.实验过程3/1任务13.1.1实现思想用方法一渣看时,将DS段置零,找到16H中断所在位置。由于在实方式下,每个中断表项占4个字节,那么16H的物理地址就是00000+16HM=00058Ho在数据段中使用goto,到达DS:0058H,即可査看到中断类型码16H对应的中断处理程序的人口地址。用方法二查看时,用到了35H取中断信息的功能。将3516H参数传送到AX(相当于AH二35,AL二16),在调用35H功能号后,BX和ES中将分别保存中断类型码1
6、6H入口地址的信息,即IP和CS。用方法三查看时,直接用BX和CX读取相应的内存单元的段值和偏移地址,即MOVBS,DS:[58H],MOVCX,DS:[60H]o3.1.2源程序方法二源程序:.386STACKSEGMENTUSE16STACKDB200DUP(O)STACKENDSCODESEGMENTUSE16ASSUMECS:CODESTART:XORAX,AXMOVDS,AXMOVAX,3516HINT21HMOVAH,4CHINT21HCODEENDSENDSTART方法三源程序:.386STACKSEG
7、MENTUSE16STACKDB200DUP(O)STACKENDSCODESEGMENTUSE16ASSUMECS:CODESTART:XORAX,AXMOVDS,AXXORCX,CXMOVBX,DS:[58H1MOVCX,DS:L5AHJMOVAH,4CHINT21HCODEENDSENDSTART3.1.3实验步骤1.在DOSBOX中打开TD,进入界面后,在寄存器区域中将DS置0。在数据段中,使用goto转到OO58H,查看前4个比特中存放的值,前两个比特(16位)存放的是段值,后两个比特(16位)存放的是偏移
8、地址。1.在NotePad++中录入源程序中方法二所示的程序,进行编译连接,并在TD中运行。使丿IJ单步调试,观察出口参数中BX和ES中的值。2.在NotePad++'
9、>录入源程序屮方法三所示的程序,进行编译连接,并在TD中运行,使用单步调试,分别观察BX和CX小的值。3.用TD将中断矢量表中的值改为任意值,观察程序发牛:的现象。3.1.4实