首页 汇编语言第四次上机实验报告

汇编语言第四次上机实验报告

举报
开通vip

汇编语言第四次上机实验报告时间:2013/5/107:00-9:30  地点: 南一楼803 实验人员: 计科10班王涛学号: U201114445 一、题目1、用三种方式获取中断类型码10H对应的中断处理程序的入口地址。(1)直接运行调试工具(TD.EXE),观察中断矢量表中的信息,指出中断类型码10H对应的中断处理程序的入口地址。(使用TD观看即可)。使用TD观看时,在调试工具下调入以前编好的运行程序,跟踪执行INT21H(即进入中断处理程序,方法是:执行到INT21H时,按ALTF7),观察CS及IP是否改变成了前面记录的值。(2)编...

汇编语言第四次上机实验报告
时间:2013/5/107:00-9:30  地点: 南一楼803 实验人员: 计科10班王涛学号: U201114445 一、题目1、用三种方式获取中断类型码10H对应的中断处理程序的入口地址。(1)直接运行调试工具(TD.EXE),观察中断矢量 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中的信息,指出中断类型码10H对应的中断处理程序的入口地址。(使用TD观看即可)。使用TD观看时,在调试工具下调入以前编好的运行程序,跟踪执行INT21H(即进入中断处理程序, 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是:执行到INT21H时,按ALTF7),观察CS及IP是否改变成了前面记录的值。(2)编写程序,用DOS系统功能调用方式获取,观察相应的出口参数与(1)看到的结果是否相同(使用TD观看即可)。(3)编写程序,直接读取相应内存单元,观察读到的数据与(1)看到的结果是否相同.2、编制时钟显示程序。要求每隔1s在屏幕右下角显示“年-月-日时:分:秒”,并将程序驻留在内存。3、安装MASM32软件包,以其中的一个例子(如example\3dframes)为例,试用软件包中的集成汇编、连接和调试(TD32.EXE)功能。软件包从汇编教学网站上下载,操作参见《80X86汇编语言程序设计上机指南》第七章。二、实验要求1.在调试工具下调入之前编好的运行程序,跟踪执行INT21H(即进入中断处理程序,方法是:执行到INT21H时,按ALTF7),观察CS及IP是否改变成了前面记录的值。操作提示:由于INT21H内部的代码较长,为便于从中断处理程序返回到主程序,可在主程序INT21H后面的指令上先设置好断点,当不再想跟踪中断处理程序时按F9即可。实验报告的3、4、5三个部分不用写。2.提示:CMOS内部07,08,09单元中分别存放着日、月、年的信息,“年”只显示低2位即可。汇编教学网站()上有CMOS参考资料。程序可参见教材6.2节的例1和例2。实验报告要完整。3.在TD32中注意观察调用WINAPI函数的指令序列特点,注意感受WINDOWS消息机制,掌握WINDOWS窗口程序的基本调试方法。实验报告的3、4、5三个部分不用写。三、寄存器分配和变量定义说明题目一:(1)略(2)系统功能调用35H,入口参数为AL=10H,取中断信息。(3)直接把主存中的DS:[40H]→IP,DS:[42H]→CS赋值给寄存器BX和CX题目二:略题目三:略四、流程图题目一:略题目二:题目三:略五、源程序题目一:(1)略(2):.386CODE  SEGMENT  USE16ASSUME  CS:CODESTART:  XOR  AX,AXMOV  DS,AXMOV  AX,3510HINT  21HMOV  AH,4CHINT  21HCODE  ENDSEND  START(3):.386CODE  SEGMENTUSE16ASSUMECS:CODESTART:  XOR  AX,AXMOV  DS,AXXOR  BX,BXXOR    CX,CXMOV    BX,DS:[40H]MOV  CX,DS:[42H]MOV  AH,4CHINT  21HCODE  ENDSEND  START题目二:.386STACK  SEGMENTUSE16STACK    ;主程序的堆栈段DB200DUP(?)STACK  ENDSCODE   SEGMENT USE16ASSUMECS:CODE,DS:CODE,SS:STACKCOUNT  DB  18      ;“滴答”计数YEAR   DB  ?,?,'-'    ;年的ASCII码MONTH DB  ?,?,'-'    ;月的ASCII码DAY   DB  ?,?,''      ;日的ASCII码       HOUR  DB  ?,?,':'    ;时的ASCII码MIN   DB  ?,?,':'    ;分的ASCII码SEC   DB  ?,?      ;秒的ASCII码BUF_LEN=$-YEAR      ;计算显示信息长度CURSOR  DW   ?    ;原光标位置OLD_INT DW  ?,?      ;原INT08H的中断矢量;新的INT08H的代码NEW08H PROC  FARPUSHFCALL  DWORD PTR CS:OLD_INT;完成原功能DEC    CS:COUNT  ;(倒)计数JZ    DISP      ;计满18次,转时钟显示IRET          ;未计满,中断返回DISP:  MOV   CS:COUNT,18  ;重置计数返回STI            ;开中断PUSHA          ;保护现场PUSH  DSPUSH  ESMOV  AX,CS      ;将DS、ES指向CSMOV  DS,AXMOV  ES,AXCALL  GET_TIME    ;获取当前日期和时间,并转换成ASCII码MOV   BH,0      ;获取0号显示页面当前的光标位置MOV   AH,3INT  10HMOV  CURSOR,DX    ;保存原光标位置MOV  BP,OFFSETYEAR  ;ES:[BP]指向显示信息的起始地址MOV  BH,0      ;显示到0号页面MOV  DH,25      ;显示在26行MOV  DL,80-BUF_LEN  ;显示在最后几列(光标位置设到右上角)MOV  BL,0AH      ;显示字符的属性(亮绿色)MOV  CX,BUF_LEN  ;显示的字符串长度MOV  AL,0      ;BL包含显示属性,写后光标不动MOV  AH,13H      ;调用显示字符串的功能INT  10H        ;在右下角显示出当前时间MOV  BH,0      ;对0号页面操作MOV  DX,CURSOR    ;恢复原来的光标位置MOV  AH,2      ;设置光标位置的功能号INT  10H        ;还原光标位置(保证主程序的光标位置不受影响)POP  ESPOP  DSPOPA          ;恢复现场IRET          ;中断返回NEW08H ENDP;取日期和时间子程序,从RT/COMSRAM中取得年月日时分秒;并转化成ASCII码存放在对应变量中GET_TIME  PROCMOV  AL,9      ;9是“年”信息的偏移地址OUT  70H,AL      ;设定将要访问的单元是偏移值为9的“年信息”JMP  $2        ;延时,保证端口操作的可靠性IN    AL,71H      ;读取“年”信息MOV  AH,AL      ;将2位压缩的BCD码转化成未压缩的BCD码AND  AL,0FHSHR  AH,4ADD  AX,3030H    ;转换成对应的ASCII码XCHG  AH,AL      ;高位放在前面显示MOV  WORDPTRYEAR,AX;保存到YEAR变量指示的前2个字节中MOV  AL,8      ;8是“月”信息的偏移地址OUT  70H,ALJMP  $2IN    AL,71H      ;读取“月”信息MOV  AH,AL      ;转换成对应的ASCII码AND  AL,0FHSHR  AH,4ADD  AX,3030HXCHG  AH,ALMOV  WORDPTRMONTH,AX;保存到MONTH变量指示的前2个字节中MOV  AL,7      ;7是“日”信息的偏移地址OUT  70H,ALJMP  $2IN    AL,71H      ;读取“日”信息MOV  AH,AL      ;转换成对应的ASCII码AND  AL,0FHSHR  AH,4ADD  AX,3030HXCHG  AH,ALMOV  WORDPTRDAY,AX  ;保存到DAY变量指示的前2个字节中MOV  AL,4        ;4是“时”信息的偏移地址OUT  70H,ALJMP  $2IN    AL,71H        ;读取“时”信息MOV  AH,AL        ;转换成对应的ASCII码AND  AL,0FHSHR  AH,4ADD  AX,3030HXCHG  AH,ALMOV  WORDPTRHOUR,AX;保存到HOUR变量指示的前2个字节中MOV  AL,2      ;2是“分”信息的偏移地址OUT  70H,ALJMP  $2IN    AL,71H      ;读取“分”信息MOV  AH,AL      ;转换成对应的ASCII码AND  AL,0FHSHR  AH,4ADD  AX,3030HXCHG  AH,ALMOV  WORDPTRMIN,AX;保存到MIN变量指示的前2个字节中MOV  AL,0      ;0是“秒”信息的偏移地址OUT  70H,ALJMP  $2IN    AL,71H      ;读取“秒”信息MOV  AH,AL      ;转换成对应的ASCII码AND  AL,0FHSHR  AH,4ADD  AX,3030HXCHG  AH,ALMOV  WORDPTRSEC,AX;保存到SEC变量指示的前2个字节中RETGET_TIMEENDP;初始化(中断处理程序的安装)及主程序BEGIN:  PUSH  CSPOP  DSMOV  AX,3508H    ;获取原08H的中断矢量INT  21H        ;系统功能调用35HMOV  OLD_INT,BX  ;保存中断矢量MOV  OLD_INT2,ESMOV  DX,OFFSETNEW08HMOV  AX,2508H    ;系统新的08H中断矢量INT  21H        ;系统功能调用35H;...            ;主程序的其他工作STI            ;开中断MOV  DX,OFFSETBEGIN15;计算中断处理程序占用的字节数,15是为了在计算节数时能向上取整MOV    CL,4SHR    DX,CL      ;把字节数换算成节数(每节代表16个字节)ADD    DX,100H    ;驻留的长度还需包括程序前缀的内容   MOV  AL,0      ;退出码为0MOV  AH,31H      ;退出时,将(DX)节的主存单元驻留(不释放)INT  21HCODE   ENDSEND  BEGIN题目三:略六、实验步骤题目一:(1)直接在TD中观察中断矢量表,得出IP和CS的值。(2)①录入源代码存盘为2.asm,汇编源程序2.asm,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。②在TD中单步执行2.exe,运行至21H后观察记录BX和ES中的值。(3)①录入源代码存盘为3.asm,汇编源程序3.asm,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。②在TD中单步执行3.exe,观察并记录BX和CX中的值。题目二:①录入源代码存盘为showt.asm,汇编源程序showt.asm,并链接生成EXE文件,若报错则找出错误修改后重新存盘进行汇编,直至完全通过。②运行showt.exe,观察结果是否与预想一致。③在TD中观察程序运行情况。题目三:①下载并安装MASM32软件包,找到其中的一个例子example\3dframes②汇编源文件ml/c/coff3dframes.asm③将资源文件rsrc.rc转换成目标文件rcrsrc.rccvtres/machine:ix86rsrc.res④连接link3dframes.objrsrc.obj⑤执行3dframes⑥用TD32观察程序运行情况七、实验记录八、心得
本文档为【汇编语言第四次上机实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_686908
暂无简介~
格式:doc
大小:33KB
软件:Word
页数:18
分类:
上传时间:2022-07-25
浏览量:0