DVCC系列微机原理与接口仿真实验系统微机原理与接口实验手册烟台大学二零一零年十月1基础介绍1、系统的存储器空间介绍:2片静态存储器SRAM62256,共64K,供用户编程使用。对于8088CPU,有1M的存储空间,具体分配如下:00000-00013H存储监控程序/用户中断矢量区00014H-000FFH用户中断矢量00100H-00FFFH监控数据区、默认用户栈01000H-0FFFFH用户数据区、程序区2、自己编写的程序一般从1000H地址开始,即程序的开始,用ORG1700H等指令将程序代码编译在该地址开始的RAM区。3、联机调试,观看试验结果。方法如下:联机调试方法:串口电缆和PC机的串口连接,试验箱上电,顺序按下RESET、PCDBG按键,开始试验箱与PC机的通讯。程序经过编译-调试之后,程序代码即下载到实验平台的RAM内。然后点击“连接”按钮,建立连接,可以开始单步调试程序。在PC机的窗口中会显示了调试所用的寄存器窗口、数据窗口,找到相应的存储器地址或寄存器可以观察调试试验结果。反汇编窗口中,绿色箭头指示的位置是当前程序运行到的RAM区地址,和经过反汇编的程序。数据窗口中可以查看RAM区任意地址的内容值。例如要查看2000H单元的内容,只需要用方向键调整地址到2000开始的地址单元,横行上显示的数据就是2000-2007H地址的内容,一共8个字节。寄存器和标志位窗口可以查看寄存器的内容。要掌握程序调试的过程:例如新建文件123.asm(注意文件的名字一定要用字母或者数字,严禁用中文文字),输入如下的代码:CODESEGMENTASSUMECS:CODEORG1700H2START:MOVAX,0HMOVDS,AXMOVAX,55AAHMOVBX,2000HMOV[BX],AXJMP$CODEENDSENDSTART大家来实验下,单步调试的方法。将任意数据修改下,查看完全运行后的结果是否正确。4、在系统的程序存储器内(监控内),已经将所做试验的程序存储在内,可以验证自己程序的结果。方法:RESET后,显示P.状态,输入程序起始段地址(例F000段地址),按F1键;输入起始偏移地址(例9700),按EXEC键执行。可以得到程序运行的结果。各个试验程序的空间分配:存储器试验:F000:9700H8259试验:F000:91A0H8253定时器计数器试验:F000:9180H并行口试验:F000:90E0H继电器试验:F000:9680H5、程序存储器内容读写的方法:(程序存储器读写状态的明显标志是:显示6位数字,光标在第五位或第六位)前四位显示存储器地址,后两位显示该存储器单元的内容。方法:复位后,先按下MON键,进入待命状态;然后送入4位的程序存储区地址,再按下MEM键,读出该单元的内容,便进入存储器读写状态。可以使用LAST、NEXT键读出上一个或下一个存储器单元的内容,同时光标移动到第五位。如果想改变该地址的数值,只需要在光标所在位置输入既可。退出该状态:按下MON键。6、试验的一般步骤:31)运行DV86H软件2)编写源程序、汇编排错、形成正确的源程序。3)编译、连接、形成最终的目标文件.exe4)装载最终文件到实验系统的RAM区5)调试试验程序4试验一:存储器读写试验一、实验内容对指定地址区间的RAM(2000H~23FFH)先进行写数据55AAH,然后将其内容读出再写到3000H~33FFH中。二、实验步骤1、运行实验程序,看实验运行的结果。单机时,实验程序起始地址为F000:9700。在系统显示监控提示符“P.”时:输入F000按F1键输入9700按EXEC键稍后按RESET键退出,用存储器读写方法检查2000H~3000H中的内容应都是55AA。三、程序清单CODESEGMENTASSUMECS:CODEORG1700H:定义起始地址START:MOVAX,0H:定义数据段寄存器DSMOVDS,AXMOVBX,2000H:定义数据地址BXMOVAX,55AAH:置常数为55AAMOVCX,03FFH有的是512:置字节数CX//RAMW1:MOVDS:[BX],AX:常数55AA写入ADDBX,0002H:地址增量LOOPRAMW1:一直写到字节数为0为止MOVAX,2000HMOVSI,AX:置元数据区地址SIMOVAX,3000HMOVDI,AX:置目的数据区地址DIMOVCX,03FFH:置字节数CXCLD:确定地址变化方向REPMOVSB:写数据到目标数据区5RAMW2:JMPRAMW2CODEENDSENDSTART//(1)补充完整程序,将55AA放入到偏移地址2000开始的位置,共放3FFH次。……………//(1)结束:补充完整程序,将55AA放入到偏移地址2000开始的位置,共放3FFH次。,//(2)补充完整程序,将2000H单元开始的内容,放到3000H开始的单元,次数仍然是3FFH次。................//(2)结束:补充完整程序,将2000H单元开始的内容,放到3000H卡是的单元,次数仍然是3FFH次。JMP$:结束CODEENDSENDSTART6试验二、使用8259的单级中断控制实验一、实验内容本系统中已设计有一片8259A中断控制芯片,工作于主片方式,8个中断请求输入端IR0-IR7对应的中断型号为8-F,其中断矢量关系如下表所示。8259中断源中断类型号中断矢量表地址IR0820H-23HIR1924H~27HIR2A28H~2BHIR3B2CH~2FHIR4C30H~33HIR5D34H~37HIR6E38H~3BHIR7F3CH~3FH7Y6是由74LS138输出端引出的,由CPU地址线的A4、A5、A6分别连到138的ABC端。CPU的A0和8259的A0相连。故8259A有2个端口地址。选择的是60H、61H.60H用来写ICW1,61H用来写ICW2、ICW3、ICW4,初始化命令字写好后,再写操作命令字。OCW2、OCW3用口地址60H,OCW1用口地址61H。图中,使用了3号中断源,IR3插孔和SP插孔相连,中断方式为边沿触发方式,每按一次AN按钮产生一次中断信号,向8259A发出中断请求信号。如果中断源电平信号不符规定要求则自动转到7号中断,显示“Err”。CPU响应中断后,在中断服务中,对中断次数进行计数并显示,计满5次结束(按键按下5次之后),显示器显示“Good”。二、实验线路连接1)8259模块上的INT连8088的INTR(在主板键盘矩阵下面)。2)8259模块上的INTA连8088的INTA(在主板键盘矩阵下面)。3)MP区SP插孔和8259的3号中断IR3插孔相连,SP端初8始为低电平。4)8259模块上的D0~D7连到BUS2区的XD0~XD7。5)8259模块上的CS端接Y6。6)8259模块上的A0连到BUS1区的XA0上。7)8259模块上的RD、WR信号线分别连到BUS3区的XRD、XWR上。8)8259的Vcc、GND与试验箱5V电源、GND分别连接三、实验步骤1、按图连好实验线路2、编写运行实验程序3、按AN按钮,按满5次显示“GOOD”。四、单机时,实验程序起始地址为F000:91A0。在系统显示监控提示符“P.”时:输入F000按F1键输入91A0按EXEC键在系统上显示“8259-1”。源程序://[0701H]存放的是计数次数,从1到5CODESEGMENTASSUMECS:CODEINTPORT1EQU0060H;定义8259的控制口和数据口地址。INTPORT2EQU0061HINTQ3EQUINTREEUP3;定义中断向量。INTREEUP3中断处理程序的标号INTQ7EQUINTREEUP7ORG11A0HSTART:CLDCALLWBUF1;调用显示8259-1的子程序CALLWRINTVER;写INTRRUPT向量表//(1)补充完整程序,对8259初始化。要求边沿触发,中断类型号初值为08.自动结束方式。屏蔽掉除IR3之外的所有中断。.........9CODESEGMENTASSUMECS:CODEINTPORT1EQU0020HINTPORT2EQU0021HINTQ3EQUINTREEUP3INTQ7EQUINTREEUP7CONTPORTEQU00DFHDATAPORTEQU00DEHDATA0EQU0580HDATA1EQU0500HDATA2EQU0508HDATA3EQU0518HDATA4EQU0520HORG1800HSTART:JMPTint1Tint1:CALLFORMATCLDMOVDI,DATA0MOVCX,08HXORAX,AXREPSTOSWMOVSI,DATA3CALLLEDDISP;DISP8259-1MOVAX,0HMOVDS,AXCALLWRINTVER;WRITEINTRRUPTMOVAL,13HMOVDX,INTPORT1OUTDX,ALMOVAL,08HMOVDX,INTPORT2OUTDX,ALMOVAL,09H10OUTDX,ALMOVAL,0F7HOUTDX,ALMOVBYTEPTRDS:[0601H],01H;TIME=1STIWATING:JMPWATINGWRINTVER:MOVAX,0HMOVES,AXMOVDI,002CHLEAAX,INTQ3STOSWMOVAX,CSSTOSWMOVDI,003CHLEAAX,INTQ7STOSWMOVAX,CSSTOSWRETINTREEUP3:CLIMOVAL,DS:[0601H]CALLCONVERSMOVSI,DATA0CALLLEDDISPDMOVAL,20HMOVDX,INTPORT1OUTDX,ALADDBYTEPTRDS:[0601H],01HCMPBYTEPTRDS:[0601H],06HJNAINTRE1MOVSI,DATA4CALLLEDDISPINTRE3:11JMPINTRE3CONVERS:MOVBH,0HANDAL,0FHMOVBL,ALMOVAL,CS:[BX+DATA2]MOVBX,DATA0MOVDS:[BX],ALRETINTRE1:MOVAL,20HMOVDX,INTPORT1OUTDX,ALSTIIRETINTREEUP7:CLIMOVSI,DATA1CALLLEDDISPMOVAL,20HMOVDX,INTPORT1OUTDX,ALIRETLEDDISP:MOVAL,90HMOVDX,CONTPORTOUTDX,ALMOVBYTEPTRDS:[0600H],00LED1:CMPBYTEPTRDS:[0600H],07HJALED2MOVBL,DS:[0600H]MOVBH,0HMOVAL,CS:[BX+SI]MOVDX,DATAPORT12OUTDX,ALADDBYTEPTRDS:[0600H],01HJNZLED1LED2:RETLEDDISPD:MOVAL,90HMOVDX,CONTPORTOUTDX,ALMOVBYTEPTRDS:[0600H],00LEDD1:CMPBYTEPTRDS:[0600H],07HJALEDD2MOVBL,DS:[0600H]MOVBH,0HMOVAL,DS:[BX+SI]MOVDX,DATAPORTOUTDX,ALADDBYTEPTRDS:[0600H],01HJNZLEDD1LEDD2:RETFORMAT:MOVBX,0MOVWORDPTRDS:[BX+0500H],5050HADDBX,2MOVWORDPTRDS:[BX+0500H],0079HADDBX,2MOVWORDPTRDS:[BX+0500H],0000HADDBX,2MOVWORDPTRDS:[BX+0500H],0000HADDBX,2MOVWORDPTRDS:[BX+0500H],063FHADDBX,213MOVWORDPTRDS:[BX+0500H],4F5BHADDBX,2MOVWORDPTRDS:[BX+0500H],6D