资源描述:
《实验一_微型计算机接口技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验报告(2014/2015学年第一学期)课程名称微型计算机接口技术实验名称基于中断的字符串屏幕动态显示实验时间2014年12月12日指导单位南京邮电大学指导教师李爱群学生姓名沈一州班级学号B12040920学院(系)计算机软件学院专业NIIT(软嵌)-7-实验报告实验名称基于中断的字符串屏幕动态显示指导教师李爱群实验类型设计型实验学时2实验时间2014.12.12一、实验目的和要求目的:掌握汇编程序的开发过程。要求:编程实现:利用系统定时源设计1CH中断程序,要求每隔一定时间在系统机屏幕上显示一行字符串Hel
2、lo。二、实验环境(实验设备)硬件:CPU:3.0Ghz内存:1.00GB软件:操作系统:WindowsXPSP3编程软件:未来汇编-7-三、实验原理及内容代码:.486DATASEGMENTUSE16OLD1CDD?ICOUNTDB18MESGDB'HELLO',0DH,0AH,'$'DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCLICALLREAD1CCALLWRITE1CSTISCAN:MOVAH,1INT16H
3、JZSCANCALLRESETMOVAH,4CHINT21H;-------------------------SERVICEPROCPUSHDSMOVAX,DATAMOVDS,AXDECICOUNTJNZEXITMOVICOUNT,18MOVAH,9MOVDX,OFFSETMESGINT21HEXIT:POPDSIRETSERVICEENDP;-------------------------READ1CPROCMOVAX,351CHINT21HMOVWORDPTROLD1C,BXMOVWORDPTROLD1
4、C+2,ESRET-7-READ1CENDP;-------------------------WRITE1CPROCPUSHDSMOVAX,CODEMOVDS,AXMOVDX,OFFSETSERVICEMOVAX,251CHINT21HPOPDSRETWRITE1CENDP;-------------------------RESETPROCMOVDX,WORDPTROLD1CMOVDS,WORDPTROLD1C+2MOVAX,251CHINT21HRETRESETENDPCODEENDSENDSTART-7
5、-原理:.486是指用486型处理器。DATA SEGMENT指的是数据段,USE 16意思为用16位来存储数据段中的数据。同理,CODE SEGMENT是代码段。程序里有4个子程序:SERVICE、READ1C、WRITE1C、RESET,有3个标号:START、SCAN、EXIT,有三个变量:OLD1C、ICOUNT、MESG。DB是字节型,占1个字节,DD是双字型,占4个字节。?代表一个空的单元。0DH就是回车(回到行首)。0AH就是换行。'$'这个就是表示字符串结束。ASSUME是定位段给寄存器。在
6、START中,MOVAX,DATA/MOVDS,AX是把DATA的地址送入DS。CLI(clearinterrupt)禁止中断发生,STL(setinterrupt)允许中断发生。CALL指令执行时,进行两步操作:1、将程序当前执行的位置IP压入堆栈中;2、转移到调用的子程序。在READ1C中,PROC(procedure)、ENDP(endofprocedure)本身是伪指令,分别代表子程序的开始和结束。WORDPTR(pointer)OLD1C是将OLD1C定义为字大小,分别把BX和ES的值送入OLD1C。
7、RET是子程序的返回指令。在WRITE1C中,PUSHDS是将DS进栈,POPDS是将DS出栈。MOVAX,CODE/MOVDS,AX是把CODE的地址送入DS。MOVDX,OFFSETSERVICE是将SERVICE的偏移量送入DX。在SERVICE中,DEC是自减。JNZ(jumpwhennothaszeroflag)是非零跳转。若为零则重置ICOUNT,并在屏幕上输出’Hello’。在SCAN中,INT16H是键盘中断,可以通过它来对键盘进行操作。JZ(jumpwhenhaszeroflag)是为零跳转。
8、在EXIT中,IRET(interruptreturn)中断返回,中断服务程序的最后一条指令。IRET指令将推入堆栈的段地址和偏移地址弹出,使程序返回到原来发生中断的地方。其作用是从中断中恢复中断前的状态。程序总体来说就是有两个循环,大循环反复执行直到用户按键,一次大循环执行18次小循环(每55MS执行一次小循环),一次大循环输出一次Hello-7-,从而近似实现了1S输出一次Hell