时间: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观察程序运行情况七、实验记录八、心得