电子科技大学计算机科学与工程学院标准实验报告(实验)课程名称汇编语言与微机接口技术综合实验电子科技大学教务处制表电子科技大学实验报告学生姓名:蔡江涛学号:2013060103011指导教师:王华实验地点:主楼A2-412实验时间:2016年5月23日一、实验室名称:二、实验项目名称:汇编语言编程训练三、实验学时:3学时四、实验原理:(包括知识点,电路图,流程图)取出表TABLE首址放BX中ALNUMAL(AL)-1开始结束BX(BX)+(AL)得该生成绩的偏移量将([BX])送MATH汇编中变量的建立以及查找。通过offset指令查找所要查找的变量,用XLAT指令放入AL中,XLAT指令以DS:[BX+AL]为地址,提取存储器中的一个字节再送入AL。并将AL传值给MATH。五、实验目的:运行程序将查表结果放在MATH中。让学生了解汇编编程基础。六、实验内容:在数据段中建立一个成绩表TABLE,表中的成绩按照学生学号从小到大的顺序存放。要查的学号存放在变量NUM中,查表的结果放在变量MATH中。(用XLAT指令进行查表)七、实验器材(设备、元器件):电脑一台。八、实验步骤:(编辑调试的过程)步骤1、生成可执行程序的过程:建立汇编源程序(*.asm)、汇编源程序文件,生成目标文件(*.obj)、连接目标文件,生成可执行文件(*.exe)、运行调试程序。步骤2:汇编步骤3:连接步骤4:调试:DEBUG命令运行命令G(Go)2)追踪命令T(Trace)、3)继续命令P(Proceed)4)显示内存单元内容的命令D(Dump)5)退出命令Q(Quit)实验代码:DATASEGMENTTABLEDB81,78,90,64,85,76,93,82,57,80DB73,62,87,77,74,86,95,91,82,71NUMDB8MATHDB?DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCOSEGSEGMENTASSUMECS:COSEG,DS:DATA,SS:STACK1START:MOVAX,DATA;MOVDS,AX;装入DSMOVBX,OFFSETTABLE;BX指向表首址XORAH,AH;(AH)=0MOVAL,NUMDECAL;实际学号是从1开始的XLATMOVMATH,AL;存结果MOVAH,4CH;返回DOSINT21HCOSEGENDSENDSTART1)九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)运行截图:最后MATH中的数据:十、实验结论:(联系理论知识进行说明)通过masm程序将一段汇编程序编译为一个可执行程序。最后通过调试找到math中数据。十一、对本实验过程及方法、手段的改进建议:不应该用这些软件,XP系统已经退出市场,这些软件只能在XP系统上运行对学生课下做实验造成了很大的困扰。电子科技大学实验报告学生姓名:蔡江涛学号:2013060103011指导教师:王华实验地点:主楼A2-411实验时间:2016年5月27日一、实验室名称:二、实验项目名称:8259A中断控制器实验三、实验学时:3四、实验原理:(1)8259的工作过程知识点:中断请求的触发方式有两种:1、电平触发方式:用IR引脚上的有效高电平信号触发中断。常被用于需要重复执行当前中断服务程序的情况,直到IR信号变为无效。2、边沿触发方式:采用IR输入信号的上升沿触发中断,常被用于不希望产生重复响应及中断请求信号是一个短暂脉冲的情况。IRR的数据是根据中断请求信号自动写入的;IMR的数据是通过软件编程设定的。中断判优结果取决于IRR中置1且在IMR中未被屏蔽两个条件,然后选择其优先级最高的向CPU发出INT信号。在CPU发出第一个INTA后,把允许中断的最高优先级请求位置送入ISR且将IRR对应位自动清零。8259A接到来自CPU的第一个脉冲时,设置ISR并把IRR中的相应位复位。同时,8259A准备向数据总线发送中断向量。在8259A发送中断向量的最后一个脉冲期间,如果是在自动结束中断方式下,在这个脉冲结束时复位ISR的相应位。在其他方式下,ISR相应位要由中断服务程序结束时发出的EOI命令来复位。(2)8259的命令字实验只需要用一片8259A进行中断控制,中断源采用单脉冲信号,中断触发方式属于边沿触发,且8086/8088系统必须设定ICW4,因此ICW1=00010011B=13H。ICW2命令字:使用中断类型8来服务IR7边沿触发产生的中断,所以ICW2=00001000B=08HICW4设置:单片8259A,不需要设定ICW3,而8086/8088系统需要确定ICW4。因此跳过ICW3的设定直接设定ICW4。在该实验中,我们使用全嵌套方式和普通EOI方式操作,因此ICW4=00001001B=09H。对于OCW,假设使用OCW1来屏蔽除IR7外其它所有中断,这样OCW1=01111111B=7FH;选用普通EOI,则OCW2=00100000=20H。(3)流程图IR7中断服务程序开始关中断初始化显示缓冲区、8259开中断调用显示子程序开始关中断刷新缓冲区写“7”判中断次数满7次后显示“8”次断加1中断返回YNIR6中断服务程序(4)原理图开始关中断刷新缓冲区写“6”判中断次数满6次后次段加1显示“8”中断返回YN五、实验目的:通过编制程序,让8259芯片中断判优,让学生对8259芯片处理多级中断有更深入地理解。六、实验内容:编制程序,利用8259芯片的IRi作为中断源,产生多级中断,系统显示中断号,比如:IR7作为中断源则显示7。至少产生两级中断。七、实验器材:PC一台;Dais微机接口实验箱;dais集成开发环境;八、实验步骤:(1)将实验代码单极中断修改为多级中断,添加新的中断。(2)按照实验电路连接电路板。(3)经编译、链接无误后装入系统。(4)运行程序,重复按单次脉冲开关,显示屏会显示7。松开后恢复显示8。实验代码:;-------------------硬件实验二8259中断控制器实验-------------------CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG3400HH8:JMPP8259ZXKEQU0FFDCHZWKEQU0FFDDHLEDDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HDB88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H;设置七段数码管字型代码BUFDB?,?,?,?,?,?Port0EQU0FFE0HPort1EQU0FFE1HP8259:CLI;关中断,为了避免其他中断服务影响当前中断服务程序的运行CALLWP;初始化显示“8”MOVAX,OFFSETINT82596MOVBX,0038HMOV[BX],AXMOVBX,003AHMOVAX,0000HMOV[BX],AX;写中断向量表MOVAX,OFFSETINT8259MOVBX,003CHMOV[BX],AXMOVBX,003EHMOVAX,0000HMOV[BX],AX;写第二个中断的中断向量表CALLFOR8259;调用8259参数设定子程序MOVSI,0000HSTI;开中断CON8:CALLDIS;主程序显示JMPCON8;------------------------------------INT8259:CLI;中断服务程序MOVBX,OFFSETBUFMOVBYTEPTR[BX+SI],07HINCSICMPSI,0007HJZX59INT82596:CLI;中断服务程序MOVBX,OFFSETBUFMOVBYTEPTR[BX+SI],06HINCSICMPSI,0007HJZX59XX59:MOVAL,20H;命令字OCW2MOVDX,Port0OUTDX,ALMOVCX,0050HXXX59:PUSHCX;保护现场,压入堆栈CALLDISPOPCXLOOPXXX59POPCXMOVCX,OFFSETCON8PUSHCXSTIIRETX59:MOVSI,0000HCALLWPJMPXX59;----------------------------------FOR8259:MOVAL,13H;ICW1MOVDX,Port0OUTDX,ALMOVAL,08H;ICW2MOVDX,Port1OUTDX,ALMOVAL,09H;ICW4OUTDX,ALMOVAL,3FH;IRQ76OUTDX,ALRET;---------------------------WP:MOVBUF,08H;初始化显示“8”MOVBUF+1,10HMOVBUF+2,10HMOVBUF+3,10HMOVBUF+4,10HMOVBUF+5,10HRET;--------------------------------DIS:MOVCL,20H;字位码指向左侧第一个数码管MOVBX,OFFSETBUF;预留6个字节空间存放的是需要显示的字符,比如123456DIS1:MOVAL,[BX];取第一个需要显示的字符PUSHBXMOVBX,OFFSETLED;BX指向字形码表的表头地址XLAT;查表得到需要显示的字符对应的字形码,并装入ALPOPBXMOVDX,ZXKOUTDX,AL;将要显示的字形码输出到字形码端口MOVAL,CLMOVDX,ZWKOUTDX,AL;将要显示的字位码输出到字位码端口PUSHCXMOVCX,0100HDELAY:LOOP$;延时程序POPCXCMPCL,01H;检测是否显示到最右侧的数码管JZEXIT;如果是,退出INCBXSHRCL,1JMPDIS1;否则继续显示下一个EXIT:MOVAL,00HMOVDX,ZWKOUTDX,AL;一个都不显示RET;返回主程序;--------------------------CODEENDSENDH8九、实验数据及结果分析:(实验运行结果介绍或者截图,对不同的结果进行分析)十、实验结论:(联系理论知识进行说明)因为使用全嵌套方式响应中断,所以当按下脉冲开关后先响应优先级比较高的中断,并且优先级固定。因为使用普通EOI方式,当显示结束后,恢复显示数字8.十一、总结及心得体会:中断的思想在程序的设计中无疑占有重要的位置.采取中断的方法,大大提高程序的有效性和CPU的高效率工作.因此,8259中断控制实验在微机的几个实验中,就显得尤其重点.掌握8259中断控制器的工作原理和应用编程方法,需要对课本上那些对8259的系统介绍都是我们学习的重点,我们应该熟练掌握。十二、对本实验过程及方法、手段的改进建议:RET是普通的子程序的返回指令;IRET是中断服务子程序的返回指令电子科技大学实验报告学生姓名:蔡江涛学号:2013060103011指导教师:王华实验地点:主楼A2-411实验时间:2016.6.2一、实验室名称:二、实验项目名称:8253时钟中断计时实验三、实验学时:3四、实验原理:(1)8253基本知识8253基本工作方式就是对CLK时钟脉冲进行计数。CLK脉冲可以是均匀的、连续的、周期精确的,也可以是不均匀的、断续的、周期不定的。无论8253工作于何种方式,当计数器减1到0时,在OUT引脚上必定有电平或脉冲输出,OUT引脚输出的信号可以是方波、电平或脉冲等,由工作方式决定。8253每个计数器都可以选择6种工作方式之一进行工作。在控制字中进行设定。二进制方式计数的最小值是0001H,最大值为0000H,即216=65536二-十进制(BCD码)计数的最小值是0001H,最大值为0000H,即104=100008253在方式3下的输出方波周期是时钟周期的n倍,n是设置的计数初值。正确选择时钟及处理方式,使得最终输出的信号周期为1s或者接近1s。将该信号输出端接到8259的中断源IR7,将8259的IR7设置为上升沿触发中断,那么每隔1s就引发一次中断,显示一个递增的数字