微机原理与接口技术实验报告汇总_第1页
微机原理与接口技术实验报告汇总_第2页
微机原理与接口技术实验报告汇总_第3页
微机原理与接口技术实验报告汇总_第4页
微机原理与接口技术实验报告汇总_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告 课程名称 微机原理与接口技术专 业 计 科 班 级 五 班 姓 名 胡 益 学 号 10030507 指导教师 朱红伟 实验成绩 目录实验一 系统认识实验3实验二 数码转换编程及程序调试8实验三 运算类编程实验12实验四 分支程序设计实验17实验五 分支程序设计实验223实验六 循环程序设计31实验七 子程序设计39实验八 显示程序实验45实验九 中断特性及8259应用编程实验49实验十 8255并行接口应用实验55实验十一 8253定时/计数器应用实验60实验十二 8253定时器应用实验66实验十三 A/D转换实验72实验十四 D/A转换实验77实验十五 8255键盘及显示接

2、口实验81实验十六 步进电机实验85实验一 系统认识实验一 实验目的掌握TDN86/51或TDN86、88教学系统的基本操作。二 实验设备TDN86/51或TDN86、88教学实验系统一台三 实验内容及步骤1.使用串行通讯电缆将实验系统与PC微机相连。2.打开实验环境WMD86.3.输入源代码:STACK SEGMENT STACK ;DW 64 DUP(?);STACK ENDSCODESEGMENT;ASSUME CS:CODESTART:MOV DI,3500H;MOV CX,0010H;MOV AX,0000HA1:MOV DI,AL;INC DI;LOOP A1;A2:JMP A2C

3、ODEENDS;END START;4.进行端口测试。 5. 进行汇编、链接。6.调试无误,并载入程序。四 实验结果1.输入U2000命令进行反汇编,检查程序是否正确装入。如图(4-1)图(4-1)检查程序是否正确装入2.当发现源程序输入错误或需调试,输入指令A来修改,如修改2000句MOV DI,3500。如图(4-2)图(4-2)修改2000句3.对程序进行连续运行。结果如图(4-3)图(4-3)连续运行4.内存单元内容显示,结果如图(4-4)图(4-4)内存单元内容5.内存单元内容的修改,如图(4-5)图(4-5)修改单元内容五 思考与总结通过本次实验,使我对TDN86/88教学系统的基

4、本操作有了一定的了解,对实验有了更深的认识,更了解了自己所学的知识应该如何应用。期间也遇到了不少困难,不过在老师和同学帮助之下都解决了问题顺利完成了实验。实验二 数码转换编程及程序调试一 实验目的1.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。2.熟悉键盘使用方法。3.熟悉调试程序的方法。二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤1.连接计算机与外设2输入程序并检查无误,经汇编、连接后装入程序。STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTAR

5、T:MOV CX,0004H ;设置循环次数MOV DI,3500H ;将立即数3500传送给DI寄存器MOV DX,DI ;将3500单元的内容传送给Dx寄存器 203BA1:MOV AX,DX ;将DX寄存器的内容传送给Ax寄存器 AX=203BAND AX,000FH ;与操作。作用是:高12位全部屏蔽掉,只保留原来的低四位。结果存放在AX中。AX=000BHCMP AL,0AH ;和10比较JB A2 ;JMP if Below 如果AL小于10,那么跳转到A2;加上30,转换为对应的ASCII码,结果存放在ALADD AL,07H ;意味着AL是大于等于10的,为A-F范围内的数,先

6、加上7,结果存放在AL。A2:ADD AL,30H ;继续加30,结果存放在AL;以下是存放结果的程序MOV DI+0AH,AL ;将结果传送到 3500+A,即350A单元 第一次循环的时候存放的是最地位的ASCII码INC DI ;DI加1,变为3501PUSH CX ;将CX的内容压入堆栈,目的是为了保存CX的原始内容MOV CL,04H ;将立即数04传送给CL寄存器SHR DX,CL ;将DX寄存器右移CL位。也就是右移4位。DX内容由203B变为0203POP CX ;恢复CX的内容。LOOP A1 ;循环A1,直到CX为0CODE ENDS END START3.在3500-35

7、01H单元中存入四位十六进制数203B,即:E3500,并输入3B、20。4.D350A,输入数字与结果ASC码对应顺序相反。5.反复调试几组数据,考察程序的正确性。四 实验结果1.在3500-3501单元中存入四位十六进制数203B。如图(4-1)图4-1 存入十六进制数2.运行程序。如图(4-2)图4-2 G=0000:2000运行程序3.显示结果.如图(4-3)图4-3 结果五 思考与总结1.在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次?答:对存放空间的要求,因为对于十六进制每四个ASCII码从右往左数是4个一次,算十六进制的一个位次,因此十六进制转换成ASC

8、II码要把DX向右移四次。2.自己的实验感受本次实验是将十六进制数转换为ASCII码。首先经过CPU处理后的十六进制数存放于起始地址为3500H的内存单元中,把它们转换成ASCII码后,再分别存入起始地址为350AH的内存单元中。实验三 运算类编程实验一 实验目的1.掌握使用运算类指令编程及调试方法。2.掌握运算类指令对各状态标志位的影响及其测试方法二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤1.连接计算机与外设2.输入程序并检查无误,经汇编、连接后装入程序。STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEG

9、MENTXL DW ?XH DW ?YL DW ?YH DW ?ZL DW ?ZH DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV AX,XL ADD AX,YL MOV ZL,AX MOV AX,XH ADC AX,YH MOV ZH,AXA1: JMP A1CODE ENDS END START3.用U0000:2000查看MOV AX,XXXX(DATA)语句,即得到数据段段地址CS:XXXX用E命令EXXXX:0000给XL,XH,YL,YH赋值存入二进制数A0 65 15

10、00和9E B7 21 00。4.G=0000: 2000,运行以上程序。5.DXXXX:0008,显示计算结果。6.反复调试几组数据,考察程序的正确性。四 实验结果1.查看MOV AX,XXXX语句,地道段地址。如图(4-1)图4-1 段地址2.给XL,XH,YL,YH赋值二进制数。如图(4-2)图4-2 赋值数3.运行程序并查看结果。如图(4-3)图4-3 实验结果显示五 思考与总结本次实验我们做得是运算类编程实验中二进制双精度加法运算。双精度运算,是利用累加器AX,先求低十六位和,并存入低址单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC

11、指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。这次实验有很多细节需要注意,在不注意的情况之下我们出了很多错误,后来在老师的指导帮助下完成了实验。实验四 分支程序设计实验一 实验目的1.掌握分支程序的结构。2.掌握分支程序的设计、调试方法。二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤1.内容:设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。注意: 当源数据块首址>目的块首址时,从数据块首地址开始传送数据。当源数据块首址<目的块首址时,从数据块末地址开始传送数据。2

12、.实验步骤:(1)编写实验程序。(2)输入程序:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: MOV CX,0010H;将0010H传送给CX,CX=16MOV SI,3100H;将3100H传送给SI,SI=3100HMOV DI,3200H;将3200H传送给DI,DI=3200HCMP SI,DI;比较SI和DI的大小,SI是否大于DI?JA A2;如果zf=0且cf=0时进行跳转到A2,否则不进行跳转ADD SI,CX;从源数据块末字节开始传送,将SI和CX相加在传给SI(3100H

13、+10H),即SI=3110HADD DI,CX;将DI和CX相加在传给DI(3200H+10H),即DI=3210HDEC SI;对SI操作数减1(减量)SI=SI-1DEC DI;对DI操作数减1(减量)DI=DI-1 A1: MOV AL,SI;将3100H内存单元的内容传送ALMOV DI,AL;将AL传送给3200H内存单元DEC SI;对SI操作数减1(减量)SI=SI-1DEC DI;对DI操作数减1(减量)DI=DI-1DEC CX;对CX操作数减1(减量)CX=CX-1JNE A1;如果zf=0时进行跳转到A1,否则顺序执行JMP A3;无条件跳转到A3 A2: MOV AL

14、,SI;将3100H内存单元的内容传送ALMOV DI,AL;将AL传送给3200H内存单元INC SI;对SI操作数加1(加量)SI=SI+1INC DI;对DI操作数加1(加量)DI=DI+1DEC CX;对CX操作数减1(减量)CX=CX-1JNE A2;如果zf=0时进行跳转到A2,否则顺序执行 A3: JMP A3;顺序执行 CODE ENDS END START(3)检查无误,经汇编、连接后装入系统。(4)用E命令在以SI为起址的单元中填入16个数。(5)G=0000:2000,运行实验程序。(6)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同。 (7)改变SI、DI

15、的取值在进行实验。四 实验结果1.用E命令填入16个数,如图(4-1)。图4-1 输入16个数2. 查看DI为起址的单元中的数据与SI单元中的数据是相同,如图(4-2)。图4-2 结果相同3.将SI=3200H、DI=3100H,进行实验,其结果如图(4-3)、(4-4)。图4-3图4-4五 思考与总结1.思考题为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据。而当源数据块首址<目的块首址时,应从数据块末地址开始传送数据?答:当源数据块首址>目的块首址时,应从数据块首地址开始传送数据。而当源数据块首址<目的块首址时为防止数据段超长,超出数据块首址和目的块

16、首址之间的差距,造成数据传输过程中使源数据端的部分数据被改变,所以从数据块末地址开始传送数据。本次实验我们做得是分支程序设计实验。主要掌握分支程序的结构和分支程序的设计、调试方法。在实验过程中通过老师的帮助更加了解了程序。实验五 分支程序设计实验2一 实验目的1.设计程序可以将(X+Y)*4-X)/4的结果传给Z。2.将AL的D0位传送给BL的D0位,且AL不变3.设计程序比较三个无符号数的大小,将最大值保存在AX中,二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤实验11.程序源代码1:STACK SEGMENT STACKDW 64 DUP (?)STACK

17、 ENDSDATA SEGMENTX DW ?Y DW ?Z DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV AX,X ADD AX,Y MOV CX,4 IMUL CX SUB AX,X IDIV CX MOV Z,AXCODE ENDSEND START2.检查无误,经汇编、连接后装入系统。3.用U命令查看第一句语句: mov AX,?。4.E?:0000 修改内存单元(X)给X赋值,E?:0002 修改(Y)给Y赋值。5.D?:0000 查看的值是否已经赋值完毕5.G=0000:2000,运行实验程

18、序。6. 查看运行结果是否正确。实验2STACKSEGMENTSTACKDW64DUP(?)STACKENDSDATASEGMENTXLDW?YLDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXRORYL,1RORXL,1RCLYL,1ROLXL,1A1:JMPA1CODEENDSENDSTARTG=0000:2000,运行程序,并查看结果是否为0003H四 实验结果1. 用U命令查看第一句语句,如图(4-1)。图4-1 查看语句2. 赋值X、Y,如图(4-2)。图4-2 赋值3.查看结果结。图4-33.比较

19、三个无符号数的大小,将最大值保存在AX中。DATASEGMENT XDW?YDW?ZDW?MAXDW? DATAENDSSSEGSEGMENTPARASTACKDB100DUP(0)SSEGENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SSEGSTART:MOVAX,DATA;设置数据段MOVDS,AXMOVAX,XMOVBX,YMOVCX,ZCMPAX,BXJAEA1MOVAX,BXA1:CMPAX,CXJAEA2MOVAX,CXA2:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTART输入1237H,1047H,19E1H五 思

20、考与总结本次实验需要注意的地方比较多,也容易因为自己的粗心大意犯错,在做实验的过程中需要格外的仔细。实验过程中我也犯了不少的错误,在同学和老师的帮助之下才改正过来。以后学习过程之中还需要格外认真,仔细。实验六 循环程序设计 一 实验目的1.加深对循环结构的理解2.掌握循环结构程序设计的方法。3.熟练掌握调试循环程序的方法。 二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤1.流程图:实验一:N1 DX2 BLBL ALBL+1 ALAL*BL AXDX+AX DXAX>200结束程序源代码:STACK SEGMENT DW 64 DUP(?)STACK E

21、NDSCODE SEGMENT ASSUME CS:CODESTART: MOV DX,0001H ;将0001H传送给DX,DX=0001H MOV BL,02H ;将02H传送给BL,BL=02H A1: MOV AL,BL ;将BL传送给AL INC BL ;对BL进行加一在传送给BL MUL BL ;将AL与BL相乘并将结果传送给AX ADD DX,AX ;AX与DX相加并将结果传给DX CMP AX,00C8H ;用目的操作数减去源操作数,AX减去00C8H,比较AX数是否大于00C8H JNA A1 ;当CF=1或ZF=1时进行跳转,如跳转则进行A1,如不跳转则进行A2 A2: I

22、NT 03H ;对操作数加1CODE ENDS END START实验二:流程图:开始数据区首址 D1数据个数 CLCH、BL置0DI增1数据首位=1?BL+1 BLDI增1CX=0存结果结束YNN1.程序源代码:STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DI,3000H;设数据区首址,将3000H传给DI,DI=3000HMOV CL,DI;送数据个数,将DI的值传给CLXOR CH,CH;CH清0MOV BL,CH;BL清0INC DI;指针指向第一个数据 A1: MOV A

23、L,DI;将DI的值传给ALTEST AL,80H;判断数据首位是否为1JE A2;判断,当ZF=1时跳转到A2,如不是则顺序执行INC BL;负数个数累加 A2: INC DI;指针指向第一个数据LOOP A1;循环指令,循环执行A1MOV DI,BL;将BL数据传给DIINT 03H;对操作数进行加1CODE ENDS END START2.输入程序并检查无误,经汇编、连接后装入系统3. E3000输入数据如下: 3000=06(数据个数)3001=12、88、82、90、22、334.G=0000:2000,运行实验程序。5.D=3007,显示结果03四 实验结果1.实验一结果如图(4-

24、1)所示:图4-1实验结果为045FH实验二(结果):1.输入数据,结果如图(4-2)所示: 图4-2数据输入2.运行程序,查看结果如图(4-3)所示:五 思考与总结这次实验我们做得时关于循环程序的实验:S=1+2*3+3*4+4*5+N(N+1),直到N*(N+1)项大于200为止。本次实验我通过观察流程图来自己设计有关程序,这样使我对循环结构有了更深的了解,加深了我对乘法指令和加法指令的理解。掌握了循环结构程序设计的方法,知道如何对循环程序进行调试。在实验过程中也遇到了不少的困难,使实验无法继续进行下去,不过在老师的帮助下解决了困难,顺利完成了实验,使我受益匪浅。实验七 子程序设计一 实验

25、目的1学习子程序的定义和调用方法2.掌握子程序的结构3.熟练掌握子程序的程序设计、编制及调用二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤实验11 编写源代码:DATA SEGMENT ARY1 DW 3 DUP(?) SUM1 DW ? ARY2 DW 3 DUP(?) SUM2 DW ?DATA ENDSSTACK SEGMENT STACK SA DW 50 DUP(?) TOP EQU LENGTH SASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROC FARSTART:MOV

26、 AX,DATA;数据段数据设置MOV DS,AX;将AX中的内容传送给DSMOV AX,STACKMOV SS,AX;将AX中的内容传送给SS MOV SP,TOPLEA SI,ARY1;数组1首地址,入口参数MOV CX,LENGTH ARY1;数组1长度,入口参数CALL SUM;调用求和子程序LEA SI,ARY2;数组2首地址,入口参数MOV CX,LENGTH ARY2;数组2长度,入口参数CALL SUM;调用求和子程序RET;无参数段内返回MAIN ENDPSUM PROC NEAR;子程序XOR AX,AX;AX清0L1:ADD AX,WORD PTRSI;加数组元素INC

27、SI;对SI进行加1INC SI;对SI进行加1LOOP L1;结束L1MOV WORD PTRSI,AX;数组和送入SUMMOV AH,4CH;准备结束程序INT 21H;中断程序运行RET;无参数段内返回SUM ENDP;终止求和子程序CODE ENDSEND START2 编译、连接、装载3u2000 查看是否装载成功4 E *:0000,输入三个字数据(数组1的数据)5 E *:0008,输入三个字数据(数组2的数据)6 运行程序7查看结果,结果存放在*:0006(数组1的累加和)和*:000E单元(数组2的累加和)实验21 编写源代码:STACK SEGMENT STACK DW 6

28、4 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODESTART:MOV CX,001AH MOV BL,41H MOV AH,01H A1:MOV AL,BL INT 10H INC BL PUSH CX MOV CX,0FFFFH A2:LOOP A2 POP CX DEC CX JNZ A1 INT 03HCODE ENDS END START2 编译、连接、装载3 运行程序并观察结果四 实验结果1.查看程序是否在如成功,结果如图(4-1)所示: 图4-1数据载入成功2.输入数据,如图(4-2)所示:图4-2 输入数据3.运行程序并查看数组1和数组2的

29、结果,如图(4-3)所示:图4-3 程序结果数组1和数组2实验2(结果)1. 载入程序,如图(4-4)2. 运行程序,如图(4-5)五 思考与总结本次实验我们做得是子程序设计实验。主要掌握子程序的结构和分支程序的设计、调试方法。这次实验,我有一些不懂的地方,但是通过老师给的课件将所有的程序都加以注释,这样使我对整个实验的代码都了解了,加深了我对分支实验各方面知识点的理解。实验八 显示程序实验一 实验目的1.了解INT 10H各功能快的作用及用法。2.掌握字符方式下PC机显示器显示控制。二 实验设备TDN86/51或TDN86/88教学实验系统一台三 实验内容及步骤1、连接试验箱2、打开实验环境

30、3、输入源代码流程图(如下)STACK SEGMENT STACK ;堆栈段定义DW 64 DUP(?) ;重复64次STACK ENDS ;段定义结束CODE SEGMENT ;存放在堆空间中的代码段 ASSUME CS:CODE ;段分配语句(伪指令) START:MOV CX,001AH ;显示字符个数(26)送入CXMOV BL,41H ;显示字符AMOV AH,01H ;显示一个字符A1:MOV AL,BLINT 10HINC BL ;显示下一个字符PUSH CXMOV CX,0FFFFHA2:LOOP A2POP CXDEC CXJNZ A1INT 03HCODE ENDS END

31、 START4. 5、连接6、装入程序四 实验结果1、编译成功:2、链接成功:3、装入程序成功:4、实验运行结果截图五 思考与总结:通过此次试验,我了解INT 10H各功能块的作用及用法并掌握了字符方式下PC机显示器显示控制,对其有了初步的了解。在实验当中虽然遇到很多的问题但是老师都一一为我解答了,让我顺利完成了实验。在以后的学习过程中还需要注意此类问题,真正的掌握这些知识点,做到灵活运用自己所掌握的知识。实验九 中断特性及8259应用编程实验一 实验目的1认识TDN86/51系统的中断特性 2.掌握8259中断控制器的工作原理3.掌握8259可编程中断控制器的应用编程二 实验设备1.TDN8

32、6/51或TDN86/88教学实验系统一台2.排线、导线一根三 实验内容及步骤实验11 编写源代码:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:PUSH DS;保存数据段MOV AX,0000H;将AX清零,将0000传给AXMOV DS,AX;数据段清零,将AX内容传给DS,所以DS清零MOV AX,OFFSET IRQ7;取中断程序入口地址(相对地址)ADD AX,2000H;加装载时IP=2000地址(绝对地址)MOV SI,003CH;填8259中断7中断矢量,把003CH内容传给SI

33、MOV SI,AX;填偏移量矢量,将AX地址传给SIMOV AX,0000H;地址段CS=0000HMOV SI,003EH;将003E传给SIMOV SI,AX;填地址段矢量,将AX地址传给SICLI;关中断POP DS;弹栈IN AL,21H;读8259中断屏蔽字,把21H端口内容给ALAND AL,7FH;开8259中断7OUT 21H,AL;将AL内容回传给21HMOV CX,000AH;循环10次A1:CMP CX,0000H;判断是否完成循环JNZ A2;跳转IN AL,21H;读8259中断屏蔽字,把21H端口内容给ALOR AL,80H;关8259中断7OUT 21H,AL;将

34、AL内容回传给21HSTIHLTA2:STIJMP A1;无条件跳转至A1IRQ7:MOV AX,0137H;中断程序入口INT 10H;返回操作程序,结束程序运行MOV AX,0120H;中断程序出口INT 10H;返回操作程序,结束程序运行DEC CX;CX自减1MOV AL,20H;将20传给ALOUT 20H,AL;将AL回传给20CLIIRETCODE ENDSEND START2. 编译、连接、装载3.G=0000:2000运行程序4.重复按KK2微动开关,显示屏上应用“7”来响应,直到按10次后,系统处于停机状态。 实验21 编写源代码:STACK SEGMENT STACKDW

35、 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:PUSH DS;保存数据段MOV AX,0000H;将AX清零,将0000传给AXMOV DS,AX;数据段清零,将AX内容传给DS,所以DS清零MOV AX,OFFSET IRQ6;取中断程序入口地址(相对地址)ADD AX,2000H;加装载时IP=2000地址(绝对地址)MOV SI,0038H;填8259中断6中断矢量,把0038H内容传给SIMOV SI,AX;填偏移量矢量,将AX地址传给SIMOV AX,0000H;地址段CS=0000HMOV SI,003AH;将003A传给S

36、IMOV SI,AX;填地址段矢量,将AX地址传给SICLI;关中断POP DS;弹栈IN AL,21H;读8259中断屏蔽字,把21H端口内容给ALAND AL,0BFH;开8259中断6OUT 21H,AL;将AL内容回传给21HMOV CX,000AH;循环10次A1:CMP CX,0000H;判断是否完成循环JNZ A2;跳转IN AL,21H;读8259中断屏蔽字,把21H端口内容给ALOR AL,40H;关8259中断6OUT 21H,AL;将AL内容回传给21HSTIHLTA2:STIJMP A1;无条件跳转至A1IRQ6:MOV AX,0136H;中断程序入口INT 10H;返

37、回操作程序,结束程序运行MOV AX,0120H;中断程序出口INT 10H;返回操作程序,结束程序运行DEC CX;CX自减1MOV AL,20H;将20传给ALOUT 20H,AL;将AL回传给20CLIIRETCODE ENDSEND START2 编译、连接、装载2. 编译、连接、装载3.G=0000:2000运行程序4.重复按KK2微动开关,显示屏上应用“6”来响应,直到按10次后,系统处于停机状态。四 实验结果1.程序载入成功,结果如图(4-1)所示: 图4-1数据载入成功2.按KK2微动开关屏上显示“7”数据,如图(4-2)所示:图4-2 结果显示实验2(结果)1.程序载入成功,

38、结果如图(4-3)所示: 图4-3 数据载入成功2.按KK2微动开关屏上显示“6”数据,如图(4-4)所示:图4-4 结果显示五 思考与总结 通过本次实验我认识TDN86/51系统的中断特性并掌握8259中断控制器的工作原理,实验当中遇到的一些问题,通过老师的点拨与同学之间的互相帮助、互相学习得到了解决,今后要注意将学习解决此类问题的方法,以后遇到也能轻松解决。实验十 8255并行接口应用实验一 实验目的1学习并掌握8255的各种工作方式及其应用2.学习载系统接口实验单元上构造实验电路二 实验设备1.TDN86/51或TDN86/88教学实验系统一台2.排线、导线若干三 实验内容及步骤实验11

39、 编写源代码:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,82H;设8255方式字10000010 A位输出,B口位输入。OUT 63H,AL;将AL内容传给控制寄存器A1: IN AL,61H;将输入口B口内容传给ALOUT 60H,AL;将AL内容传给输出口A口完成输入/输出功能JMP A1;无条件跳转到A1,循环CODE ENDSEND START2. 编译、连接、装载3.G=0000:2000运行程序实验21 编写源代码:STACK SEGMENT STACKDW 64

40、 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AL,90H;设8255方式字10000010 B位输出,A口位输入。OUT 63H,AL;将AL内容传给控制寄存器A1: IN AL,60H;将输入口A口内容传给ALOUT 61H,AL;将AL内容传给输出口B口完成输入/输出功能JMP A1;无条件跳转到A1,循环CODE ENDSEND START2. 编译、连接、装载3.G=0000:2000运行程序四 实验结果1.程序载入成功,结果如图(4-1)所示: 图4-1数据载入成功2.实验结果,如图(4-2)所示:图4-2 结果显示实验

41、2(结果)1.程序载入成功,结果如图(4-3)所示: 图4-3 数据载入成功2. 实验结果,如图(4-4)所示:图4-4 结果显示五 思考与总结 通过本次实验我学习到了载系统接口实验单元上构造以及很简单的连接方法,本次实验比较简单,在不断的对照,不断的排解掉一些因为粗心犯下的错误之后,解决了遇到的一些困难,顺利完成了实验。实验十一 8253定时/计数器应用实验 一、 实验目的1、 熟悉8253在系统中的典型接法。2、 掌握8253的工作方式及应用编程。二、 实验设备TDN86/51或TDN86/88教学实验系统一台三、 实验内容及步骤(一) 8253计数器应用实验设定8253的2通道工作方式为

42、方式0,用于事件计数,当计数值为5时,发出中断请求信号,显示“M”。1、 实验程序如下所示:STACKSEGMENTSTACKDW64DUP(?)STACKENDSCODESEGMENTASSUMECS:CODESTART:INAL,21H;把端口地址为21H的内容读入ALANDAL,7FH;开8259中断7OUT21H,AL;将AL中的内容写入地址为21H的端口MOVAL,90H;把控制信号传送给ALOUT43H,AL;将AL中的内容写入地址为43H的端口A1:MOVAL,05H;把数值05H传送给ALOUT42H,AL;将AL中的内容写入地址为42H的端口HLT;暂停STI;开中断JMPA

43、1;跳转到A1MOVAX,014DH;DOC功能调用号INT10H;调用DOC功能MOVAX,0120H;DOC功能调用号INT10H;调用DOC功能MOVAL,20H;把20H传送给ALOUT20H,AL;将AL中的内容写入地址为20H的端口IRET;返回被中断的程序CODEENDSENDSTART2、 使用串行通讯电缆将实验系统与PC微机相连。3、 打开软件Wmd86,并新建文件且输入程序,如图1-4所示。图1-44、 按图1-1连接实验线路。5、 输入程序并检查无误,经汇编、连接后装入系统。6、 在0000:003CH单元填入IRQ7中断矢量,即0000:003CH 12 20 00 0

44、0。7、 G=0000:2000,运行程序,并按动KK1键,观察是否每按6次,屏幕上显示一个“M”字符。四、 实验结果8253计数器应用实验1、 输入源程序:图132、 汇编:图1-43、 链接:图1-54、 在0000:003CH单元填入IRQ7中断矢量,即0000:003CH 12 20 00 00。图1-65、 输入命令G=0000:2000,运行程序,并按动KK1键,观察每按6次,屏幕上是否显示一个“M”字符。图1-7五、思考与总结通过此次实验,我掌握了TDN86教学系统的基本操作,编译后出现错误也能够及时的改正,从而认识了编译原理与系统的操作方式方法。实验十二 8253定时器应用实验

45、 一 实验目的1.熟悉8253在系统中的典型接法。2.掌握8253的工作方式及应用编程。二 实验设备1.TDN86/51或TDN86/88教学实验系统一台2.导线若干三 实验内容及步骤实验11 编写源代码:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODESTART: PUSH DSMOV AX,0000H;将AX清零MOV DS,AX;将DS清零MOV AX,OFFSET IRQ0;取中断程序入口地址(相对地址)ADD AX,2000H;加装载时IP=2000地址(绝对地址)MOV SI,0020H;填82

46、59中断7中断矢量,把003CH内容传给SIMOV SI,AX;填偏移量矢量,将AX地址传给SIMOV AX,0000H;地址段CS=0000HMOV SI,0022H;将0022传给SIMOV SI,AX;填地址段矢量,将AX地址传给SIPOP DS;弹栈MOV AL,0FCH;将0FC的内容传给ALOUT 21H,AL;将AL内容传回给21HMOV AL,15H;将15的内容传给ALOUT 43H,AL;将AL内容传回给控制寄存器MOV AL,0FFH;将0FF的内容传给ALOUT 40H,AL;将AL的内容0计数器MOV DL,30H;将30的内容传给DL A1: STIJMP A1;无

47、条件跳转,直接跳转到A1IRQ0: MOV AH,01H;将01传给AHMOV AL,DL;将DL传给ALCMP AL,3AH;和3AH比较JNZ A2;条件跳转,当ZF=0时跳转到A2MOV AL,0DH;将0DH传给ALINT 10H;中断指令MOV AL,30H;将30H内容传给ALA2:INT 10H;中断INC AX;对AX进行加1MOV DL,AL;将AL传给DLMOV AX,0120H;将0120H传AXINT 10H;中断CALL DALLY;调用延时程序MOV AL,20H;将20H传给ALOUT 20H,AL;将AL内容传回给20HIRETDALLY:PUSH AX;进栈指

48、令先使堆栈指针SP减2,然后把AX存入堆栈顶部MOV CX,0100H;将0100H传给CXA3:MOV AX,0560H;将0560H传给AXA4:DEC AX;AX减1JNZ A4;跳转指令,当ZF=0跳转到A4LOOP A3;循环A3POP AX;出栈指令把栈顶的一个字传送至AX,然后堆栈指针SP加2RETCODE ENDSEND START2. 编译、连接、装入系统3.G=0000:2000运行程序,显示屏上应连续逐行显示“0”“9”十个数,直到用“RESET”复位开关来终端。4.修改8253的0时常,在运行程序,观察显示的快慢程序。实验21 编写源代码:STACKSEGMENTSTACKDW64DUP(?)STACKENDSDATASEGMENTTABLEDB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33HDB 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论