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

下载本文档

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

文档简介

实实 验验 报报 告告 课程名称课程名称 微机原理与接口技术微机原理与接口技术 专专 业业 计计 科科 班班 级级 五五 班班 姓姓 名名 胡胡 益益 学学 号号 指导教师指导教师 朱红伟朱红伟 实验成绩实验成绩 目录目录 实验一实验一 系统认识实验系统认识实验 .3 实验二实验二 数码转换编程及程序调试数码转换编程及程序调试 .8 实验三实验三 运算类编程实验运算类编程实验 .12 实验四实验四 分支程序设计实验分支程序设计实验 .17 实验五实验五 分支程序设计实验分支程序设计实验 2 .23 实验六实验六 循环程序设计循环程序设计 .31 实验七实验七 子程序设计子程序设计 .39 实验八实验八 显示程序实验显示程序实验 .45 实验九实验九 中断特性及中断特性及 8259 应用编程实验应用编程实验 .49 实验十实验十 8255 并行接口应用实验并行接口应用实验 .55 实验十一实验十一 8253 定时定时/计数器应用实验计数器应用实验 .60 实验十二实验十二 8253 定时器应用实验定时器应用实验 .66 实验十三实验十三 A/D 转换实验转换实验.72 实验十四实验十四 D/A 转换实验转换实验.77 实验十五实验十五 8255 键盘及显示接口实验键盘及显示接口实验 .81 实验十六实验十六 步进电机实验步进电机实验 .85 实验一实验一 系统认识实验系统认识实验 一一 实验目的实验目的 掌握 TDN86/51 或 TDN86、88 教学系统的基本操作。 二二 实验设备实验设备 TDN86/51 或 TDN86、88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 1.使用串行通讯电缆将实验系统与 PC 微机相连。 2.打开实验环境 WMD86. 3.输入源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK ; ; DWDW 6464 DUP(?);DUP(?); STACKSTACK ENDSENDS CODECODESEGMENT;SEGMENT; ASSUMEASSUME CS:CODECS:CODE START:MOVSTART:MOV DI,3500H;DI,3500H; MOVMOV CX,0010H;CX,0010H; MOVMOV AX,0000HAX,0000H A1:MOVA1:MOV DI,AL;DI,AL; INCINC DI;DI; LOOPLOOP A1;A1; A2:JMPA2:JMP A2A2 CODECODEENDS;ENDS; ENDEND START;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 教学系统的基本操作有了一定 的了解,对实验有了更深的认识,更了解了自己所学的知识应该如 何应用。期间也遇到了不少困难,不过在老师和同学帮助之下都解 决了问题顺利完成了实验。 实验二实验二 数码转换编程及程序调试数码转换编程及程序调试 一一 实验目的实验目的 1.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转 换的理解。 2.熟悉键盘使用方法。 3.熟悉调试程序的方法。 二二 实验设备实验设备 TDN86/51 或 TDN86/88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 1.连接计算机与外设 2 输入程序并检查无误,经汇编、连接后装入程序。 STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:START:MOVMOV CX,0004HCX,0004H ; ;设置循环次数设置循环次数 MOVMOV DI,3500HDI,3500H ; ;将立即数将立即数 35003500 传送给传送给 DIDI 寄存器寄存器 MOVMOV DX,DIDX,DI ;将;将35003500单元的内容传送给单元的内容传送给 DxDx 寄存器寄存器 203B203B A1:A1: MOVMOV AX,DXAX,DX ;将;将 DXDX 寄存器的内容传送给寄存器的内容传送给 AxAx 寄存器寄存器 AX=203BAX=203B ANDAND AX,000FHAX,000FH ;与操作。作用是:高;与操作。作用是:高 1212 位全部屏蔽掉,只保留原来的低位全部屏蔽掉,只保留原来的低 四位。结果存放在四位。结果存放在 AXAX 中。中。AX=000BHAX=000BH CMPCMP AL,0AHAL,0AH ;和;和 1010 比较比较 JBJB A2A2 ;JMPJMP ifif BelowBelow 如果如果 ALAL 小于小于 1010,那么跳转到,那么跳转到 A2A2; 加上加上 3030,转换为对应的,转换为对应的 ASCIIASCII 码,结果存放在码,结果存放在 ALAL ADDADD AL,07HAL,07H ;意味着;意味着 ALAL 是大于等于是大于等于 1010 的,为的,为 A-FA-F 范围内的数,先加范围内的数,先加 上上 7 7,结果存放在,结果存放在 ALAL。 A2:A2: ADDADD AL,30HAL,30H ;继续加;继续加 3030,结果存放在,结果存放在 ALAL;以下是存放结果的程序;以下是存放结果的程序 MOVMOV DI+0AH,ALDI+0AH,AL ;将结果传送到;将结果传送到 3500+A,3500+A,即即350A350A单元单元 第一次循环的时第一次循环的时 候存放的是最地位的候存放的是最地位的 ASCIIASCII 码码 INCINC DIDI ;DIDI 加加 1 1,变为,变为 35013501 PUSHPUSH CXCX ;将;将 CXCX 的内容压入堆栈,目的是为了保存的内容压入堆栈,目的是为了保存 CXCX 的原始内容的原始内容 MOVMOV CL,04HCL,04H ;将立即数;将立即数 0404 传送给传送给 CLCL 寄存器寄存器 SHRSHR DX,CLDX,CL ;将;将 DXDX 寄存器右移寄存器右移 CLCL 位。也就是右移位。也就是右移 4 4 位。位。DXDX 内容由内容由 203B203B 变为变为 02030203 POPPOP CXCX ;恢复;恢复 CXCX 的内容。的内容。 LOOPLOOP A1A1 ;循环;循环 A1A1,直到,直到 CXCX 为为 0 0 CODECODE ENDSENDS ENDEND STARTSTART 3.在 3500-3501H 单元中存入四位十六进制数 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 个一次,算十六进制的一个位次,因此十六进制转换成 ASCII 码要把 DX 向右移四次。 2.自己的实验感受 本次实验是将十六进制数转换为 ASCII 码。首先经过 CPU 处理 后的十六进制数存放于起始地址为 3500H 的内存单元中,把它们转 换成 ASCII 码后,再分别存入起始地址为 350AH 的内存单元中。 实验三实验三 运算类编程实验运算类编程实验 一一 实验目的实验目的 1.掌握使用运算类指令编程及调试方法。 2.掌握运算类指令对各状态标志位的影响及其测试方法 二二 实验设备实验设备 TDN86/51 或 TDN86/88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 1.连接计算机与外设 2.输入程序并检查无误,经汇编、连接后装入程序。 STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS DATADATA SEGMENTSEGMENT XLXL DWDW ? ? XHXH DWDW ? ? YLYL DWDW ? ? YHYH DWDW ? ? ZLZL DWDW ? ? ZHZH DWDW ? ? DATADATA ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODE,DS:DATACS:CODE,DS:DATA START:MOVSTART:MOV AX,DATAAX,DATA MOVMOV DS,AXDS,AX MOVMOV AX,XLAX,XL ADDADD AX,YLAX,YL MOVMOV ZL,AXZL,AX MOVMOV AX,XHAX,XH ADCADC AX,YHAX,YH MOVMOV ZH,AXZH,AX A1:A1: JMPJMP A1A1 CODECODE ENDSENDS ENDEND STARTSTART 3.用 U0000:2000 查看 MOV AX,XXXX(DATA)语句,即得到数据段段地 址 CS:XXXX 用 E 命令 EXXXX:0000给 XL,XH,YL,YH 赋值存入二进 制数 A0 65 15 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 指令,则低位相加有进位时, CF=1,高位字相加时,同时加上 CF 中的 1。这次实验有很多细节需 要注意,在不注意的情况之下我们出了很多错误,后来在老师的指 导帮助下完成了实验。 实验四实验四 分支程序设计实验分支程序设计实验 一一 实验目的实验目的 1.掌握分支程序的结构。 2.掌握分支程序的设计、调试方法。 二二 实验设备实验设备 TDN86/51 或 TDN86/88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 1.内容: 设计一数据块间的搬移程序 设计思想:程序要求把内存中一数据区(称为源数据块)传送到 另一存储区(称为目的数据块) 。 注意: 当源数据块首址目的块首址时,从数据块首地址开始传送数据。 当源数据块首址目的块首址时,应从数据块首地址开始 传送数据。而当源数据块首址目的块首址时,应从数据块首地址开始传 送数据。而当源数据块首址200 结束 程序源代码: STACKSTACK SEGMENTSEGMENT DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:START: MOVMOV DX,0001HDX,0001H ;将;将 0001H0001H 传送给传送给 DXDX,DX=0001HDX=0001H MOVMOV BL,02HBL,02H ;将;将 02H02H 传送给传送给 BLBL,BL=02HBL=02H A1:A1: MOVMOV AL,BLAL,BL ;将;将 BLBL 传送给传送给 ALAL INCINC BLBL ;对;对 BLBL 进行加一在传送给进行加一在传送给 BLBL MULMUL BLBL ;将;将 ALAL 与与 BLBL 相乘并将结果传送给相乘并将结果传送给 AXAX ADDADD DX,AXDX,AX ;AXAX 与与 DXDX 相加并将结果传给相加并将结果传给 DXDX CMPCMP AX,00C8HAX,00C8H ;用目的操作数减去源操作数,;用目的操作数减去源操作数,AXAX 减去减去 00C8H00C8H,比较,比较 AXAX 数是否大于数是否大于 00C8H00C8H JNAJNA A1A1 ;当;当 CF=1CF=1 或或 ZF=1ZF=1 时进行跳转,如跳转则进行时进行跳转,如跳转则进行 A1,A1,如不跳转则进行如不跳转则进行 A2A2 A2:A2: INTINT 03H03H ;对操作数加;对操作数加 1 1 CODECODE ENDSENDS ENDEND STARTSTART 实验二:实验二: 流程图: 开始 数据区首址 D1 数据个数 CL CH、BL 置 0 DI 增 1 数据首位=1? BL+1 BL DI 增 1 CX=0 存结果 结束 Y N N 1.程序源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:START: MOVMOV DI,3000HDI,3000H; ;设数据区首址,将设数据区首址,将 3000H3000H 传给传给 DIDI,DI=3000HDI=3000H MOVMOV CL,DICL,DI ; ;送数据个数,将送数据个数,将 DIDI 的值传给的值传给 CLCL XORXOR CH,CHCH,CH;CH;CH 清清 0 0 MOVMOV BL,CHBL,CH;BL;BL 清清 0 0 INCINC DIDI; ;指针指向第一个数据指针指向第一个数据 A1:A1: MOVMOV AL,DIAL,DI; ;将将 DIDI 的值传给的值传给 ALAL TESTTEST AL,80HAL,80H ; ;判断数据首位是否为判断数据首位是否为 1 1 JEJE A2A2; ;判断,当判断,当 ZF=1ZF=1 时跳转到时跳转到 A2A2,如不是则顺序执行,如不是则顺序执行 INCINC BLBL; ;负数个数累加负数个数累加 A2:A2: INCINC DIDI; ;指针指向第一个数据指针指向第一个数据 LOOPLOOP A1A1; ;循环指令,循环执行循环指令,循环执行 A1A1 MOVMOV DI,BLDI,BL ; ;将将 BLBL 数据传给数据传给 DIDI INTINT 03H03H; ;对操作数进行加对操作数进行加 1 1 CODECODE ENDSENDS ENDEND STARTSTART 2.输入程序并检查无误,经汇编、连接后装入系统 3. E3000输入数据如下: 3000=06(数据个数) 3001=12、88、82、90、22、33 4.G=0000:2000,运行实验程序。 5.D=3007,显示结果 03 四四 实验结果实验结果 1.实验一结果如图(4-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 为止。 本次实验我通过观察流程图来自己设计有关程序,这样使我对 循环结构有了更深的了解,加深了我对乘法指令和加法指令的理解。 掌握了循环结构程序设计的方法,知道如何对循环程序进行调试。 在实验过程中也遇到了不少的困难,使实验无法继续进行下去,不 过在老师的帮助下解决了困难,顺利完成了实验,使我受益匪浅。 实验七实验七 子程序设计子程序设计 一一 实验目的实验目的 1学习子程序的定义和调用方法 2.掌握子程序的结构 3.熟练掌握子程序的程序设计、编制及调用 二二 实验设备实验设备 TDN86/51 或 TDN86/88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 实验实验 1 1 编写源代码: DATADATA SEGMENTSEGMENT ARY1ARY1 DWDW 3 3 DUP(?)DUP(?) SUM1SUM1 DWDW ? ? ARY2ARY2 DWDW 3 3 DUP(?)DUP(?) SUM2SUM2 DWDW ? ? DATADATA ENDSENDS STACKSTACK SEGMENTSEGMENT STACKSTACK SASA DWDW 5050 DUP(?)DUP(?) TOPTOP EQUEQU LENGTHLENGTH SASA STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODE,DS:DATA,SS:STACKCS:CODE,DS:DATA,SS:STACK MAINMAIN PROCPROC FARFAR START:START: MOVMOV AX,DATAAX,DATA; ;数据段数据设置数据段数据设置 MOVMOV DS,AXDS,AX; ;将将 AXAX 中的内容传送给中的内容传送给 DSDS MOVMOV AX,STACKAX,STACK MOVMOV SS,AXSS,AX; ;将将 AXAX 中的内容传送给中的内容传送给 SSSS MOVMOV SP,TOPSP,TOP LEALEA SI,ARY1SI,ARY1; ;数组数组 1 1 首地址,入口参数首地址,入口参数 MOVMOV CX,LENGTHCX,LENGTH ARY1ARY1; ;数组数组 1 1 长度,入口参数长度,入口参数 CALLCALL SUMSUM; ;调用求和子程序调用求和子程序 LEALEA SI,ARY2SI,ARY2; ;数组数组 2 2 首地址,入口参数首地址,入口参数 MOVMOV CX,LENGTHCX,LENGTH ARY2ARY2; ;数组数组 2 2 长度,入口参数长度,入口参数 CALLCALL SUMSUM; ;调用求和子程序调用求和子程序 RETRET; ;无参数段内返回无参数段内返回 MAINMAIN ENDPENDP SUMSUM PROCPROC NEARNEAR; ;子程序子程序 XORXOR AX,AXAX,AX;AX;AX 清清 0 0 L1:ADDL1:ADD AX,WORDAX,WORD PTRSIPTRSI; ;加数组元素加数组元素 INCINC SISI; ;对对 SISI 进行加进行加 1 1 INCINC SISI; ;对对 SISI 进行加进行加 1 1 LOOPLOOP L1L1; ;结束结束 L1L1 MOVMOV WORDWORD PTRSI,AXPTRSI,AX ; ;数组和送入数组和送入 SUMSUM MOVMOV AH,4CHAH,4CH; ;准备结束程序准备结束程序 INTINT 21H21H; ;中断程序运行中断程序运行 RETRET; ;无参数段内返回无参数段内返回 SUMSUM ENDPENDP; ;终止求和子程序终止求和子程序 CODECODE ENDSENDS ENDEND STARTSTART 2 编译、连接、装载 3u2000 查看是否装载成功 4 E *:0000,输入三个字数据(数组 1 的数据) 5 E *:0008,输入三个字数据(数组 2 的数据) 6 运行程序 7 查看结果,结果存放在*:0006(数组 1 的累加和)和 *:000E 单元(数组 2 的累加和) 实验实验 2 1 编写源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:MOVSTART:MOV CX,001AHCX,001AH MOVMOV BL,41HBL,41H MOVMOV AH,01HAH,01H A1:MOVA1:MOV AL,BLAL,BL INTINT 10H10H INCINC BLBL PUSHPUSH CXCX MOVMOV CX,0FFFFHCX,0FFFFH A2:LOOPA2:LOOP A2A2 POPPOP CXCX DECDEC CXCX JNZJNZ A1A1 INTINT 03H03H CODECODE ENDSENDS ENDEND STARTSTART 2 编译、连接、装载 3 运行程序并观察结果 四四 实验结果实验结果 1.查看程序是否在如成功,结果如图(4-1)所示: 图 4-1 数据载入成功 2.输入数据,如图(4-2)所示: 图 4-2 输入数据 3.运行程序并查看数组 1 和数组 2 的结果,如图(4-3)所示: 图 4-3 程序结果数组 1 和数组 2 实验实验 2 2(结果)(结果) 1. 载入程序,如图(4-4) 2. 运行程序,如图(4-5) 五五 思考与总结思考与总结 本次实验我们做得是子程序设计实验。主要掌握子程序的结构 和分支程序的设计、调试方法。 这次实验,我有一些不懂的地方,但是通过老师给的课件将所 有的程序都加以注释,这样使我对整个实验的代码都了解了,加深 了我对分支实验各方面知识点的理解。 实验八实验八 显示程序实验显示程序实验 一一 实验目的实验目的 1.了解 INT 10H 各功能快的作用及用法。 2.掌握字符方式下 PC 机显示器显示控制。 二二 实验设备实验设备 TDN86/51 或 TDN86/88 教学实验系统一台 三三 实验内容及步骤实验内容及步骤 1、连接试验箱 2、打开实验环境 3、输入源代码流程图(如下) STACKSTACK SEGMENTSEGMENT STACKSTACK ; ;堆栈段定义堆栈段定义 DWDW 6464 DUP(?)DUP(?) ; ;重复重复 6464 次次 STACKSTACK ENDSENDS ; ;段定义结束段定义结束 CODECODE SEGMENTSEGMENT ; ;存放在堆空间中的代码段存放在堆空间中的代码段 ASSUMEASSUME CS:CODECS:CODE ; ;段分配语句(伪指令)段分配语句(伪指令) START:START:MOVMOV CX,001AHCX,001AH ; ;显示字符个数(显示字符个数(2626)送入)送入 CXCX MOVMOV BL,41HBL,41H ; ;显示字符显示字符AA MOVMOV AH,01HAH,01H ; ;显示一个字符显示一个字符 A1:A1: MOVMOV AL,BLAL,BL INTINT 10H10H INCINC BLBL ; ;显示下一个字符显示下一个字符 PUSHPUSH CXCX MOVMOV CX,0FFFFHCX,0FFFFH A2:A2: LOOPLOOP A2A2 POPPOP CXCX DECDEC CXCX JNZJNZ A1A1 INTINT 03H03H CODECODE ENDSENDS ENDEND START4.START4. 5、连接 6、装入程序 四四 实验结果实验结果 1、编译成功: 2、链接成功: 3、装入程序成功: 4、实验运行结果截图 五五 思考与总结:思考与总结: 通过此次试验,我了解 INT 10H 各功能块的作用及用法并掌握 了字符方式下 PC 机显示器显示控制,对其有了初步的了解。在实验 当中虽然遇到很多的问题但是老师都一一为我解答了,让我顺利完 成了实验。在以后的学习过程中还需要注意此类问题,真正的掌握 这些知识点,做到灵活运用自己所掌握的知识。 实验九实验九 中断特性及中断特性及 8259 应用编程实验应用编程实验 一一 实验目的实验目的 1认识 TDN86/51 系统的中断特性 2.掌握 8259 中断控制器的工作原理 3.掌握 8259 可编程中断控制器的应用编程 二二 实验设备实验设备 1.TDN86/51 或 TDN86/88 教学实验系统一台 2.排线、导线一根 三三 实验内容及步骤实验内容及步骤 实验实验 1 1 编写源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:PUSHSTART:PUSH DSDS; ;保存数据段保存数据段 MOVMOV AX,0000HAX,0000H; ;将将 AXAX 清零,将清零,将 00000000 传给传给 AXAX MOVMOV DS,AXDS,AX; ;数据段清零,将数据段清零,将 AXAX 内容传给内容传给 DSDS,所以,所以 DSDS 清零清零 MOVMOV AX,OFFSETAX,OFFSET IRQ7IRQ7; ;取中断程序入口地址(相对地址)取中断程序入口地址(相对地址) ADDADD AX,2000HAX,2000H; ;加装载时加装载时 IP=2000IP=2000 地址(绝对地址)地址(绝对地址) MOVMOV SI,003CHSI,003CH; ;填填 82598259 中断中断 7 7 中断矢量,把中断矢量,把 003CH003CH 内容传给内容传给 SISI MOVMOV SI,AXSI,AX; ;填偏移量矢量,将填偏移量矢量,将 AXAX 地址传给地址传给 SISI MOVMOV AX,0000HAX,0000H; ;地址段地址段 CS=0000HCS=0000H MOVMOV SI,003EHSI,003EH; ;将将 003E003E 传给传给 SISI MOVMOV SI,AXSI,AX; ;填地址段矢量,将填地址段矢量,将 AXAX 地址传给地址传给 SISI CLICLI; ;关中断关中断 POPPOP DSDS; ;弹栈弹栈 ININ AL,21HAL,21H; ;读读 82598259 中断屏蔽字,把中断屏蔽字,把 21H21H 端口内容给端口内容给 ALAL ANDAND AL,7FHAL,7FH; ;开开 82598259 中断中断 7 7 OUTOUT 21H,AL21H,AL; ;将将 ALAL 内容回传给内容回传给 21H21H MOVMOV CX,000AHCX,000AH; ;循环循环 1010 次次 A1:CMPA1:CMP CX,0000HCX,0000H; ;判断是否完成循环判断是否完成循环 JNZJNZ A2A2; ;跳转跳转 ININ AL,21HAL,21H; ;读读 82598259 中断屏蔽字,把中断屏蔽字,把 21H21H 端口内容给端口内容给 ALAL OROR AL,80HAL,80H; ;关关 82598259 中断中断 7 7 OUTOUT 21H,AL21H,AL; ;将将 ALAL 内容回传给内容回传给 21H21H STISTI HLTHLT A2:STIA2:STI JMPJMP A1A1; ;无条件跳转至无条件跳转至 A1A1 IRQ7:IRQ7:MOVMOV AX,0137HAX,0137H; ;中断程序入口中断程序入口 INTINT 10H10H; ;返回操作程序,结束程序运行返回操作程序,结束程序运行 MOVMOV AX,0120HAX,0120H; ;中断程序出口中断程序出口 INTINT 10H10H; ;返回操作程序,结束程序运行返回操作程序,结束程序运行 DECDEC CXCX;CX;CX 自减自减 1 1 MOVMOV AL,20HAL,20H; ;将将 2020 传给传给 ALAL OUTOUT 20H,AL20H,AL; ;将将 ALAL 回传给回传给 2020 CLICLI IRETIRET CODECODE ENDSENDS ENDEND STARTSTART 2. 编译、连接、装载 3.G=0000:2000 运行程序 4.重复按 KK2 微动开关,显示屏上应用“7”来响应,直到按 10 次 后,系统处于停机状态。 实验实验 2 1 编写源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:PUSHSTART:PUSH DSDS; ;保存数据段保存数据段 MOVMOV AX,0000HAX,0000H; ;将将 AXAX 清零,将清零,将 00000000 传给传给 AXAX MOVMOV DS,AXDS,AX; ;数据段清零,将数据段清零,将 AXAX 内容传给内容传给 DSDS,所以,所以 DSDS 清零清零 MOVMOV AX,OFFSETAX,OFFSET IRQ6IRQ6; ;取中断程序入口地址(相对地址)取中断程序入口地址(相对地址) ADDADD AX,2000HAX,2000H; ;加装载时加装载时 IP=2000IP=2000 地址(绝对地址)地址(绝对地址) MOVMOV SI,0038HSI,0038H; ;填填 82598259 中断中断 6 6 中断矢量,把中断矢量,把 0038H0038H 内容传给内容传给 SISI MOVMOV SI,AXSI,AX; ;填偏移量矢量,将填偏移量矢量,将 AXAX 地址传给地址传给 SISI MOVMOV AX,0000HAX,0000H; ;地址段地址段 CS=0000HCS=0000H MOVMOV SI,003AHSI,003AH; ;将将 003A003A 传给传给 SISI MOVMOV SI,AXSI,AX; ;填地址段矢量,将填地址段矢量,将 AXAX 地址传给地址传给 SISI CLICLI; ;关中断关中断 POPPOP DSDS; ;弹栈弹栈 ININ AL,21HAL,21H; ;读读 82598259 中断屏蔽字,把中断屏蔽字,把 21H21H 端口内容给端口内容给 ALAL ANDAND AL,0BFHAL,0BFH; ;开开 82598259 中断中断 6 6 OUTOUT 21H,AL21H,AL; ;将将 ALAL 内容回传给内容回传给 21H21H MOVMOV CX,000AHCX,000AH; ;循环循环 1010 次次 A1:CMPA1:CMP CX,0000HCX,0000H; ;判断是否完成循环判断是否完成循环 JNZJNZ A2A2; ;跳转跳转 ININ AL,21HAL,21H; ;读读 82598259 中断屏蔽字,把中断屏蔽字,把 21H21H 端口内容给端口内容给 ALAL OROR AL,40HAL,40H; ;关关 82598259 中断中断 6 6 OUTOUT 21H,AL21H,AL; ;将将 ALAL 内容回传给内容回传给 21H21H STISTI HLTHLT A2:STIA2:STI JMPJMP A1A1; ;无条件跳转至无条件跳转至 A1A1 IRQ6:IRQ6:MOVMOV AX,0136HAX,0136H; ;中断程序入口中断程序入口 INTINT 10H10H; ;返回操作程序,结束程序运行返回操作程序,结束程序运行 MOVMOV AX,0120HAX,0120H; ;中断程序出口中断程序出口 INTINT 10H10H; ;返回操作程序,结束程序运行返回操作程序,结束程序运行 DECDEC CXCX;CX;CX 自减自减 1 1 MOVMOV AL,20HAL,20H; ;将将 2020 传给传给 ALAL OUTOUT 20H,AL20H,AL; ;将将 ALAL 回传给回传给 2020 CLICLI IRETIRET CODECODE ENDSENDS ENDEND START2START2 编译、连接、装载编译、连接、装载 2. 编译、连接、装载 3.G=0000:2000 运行程序 4.重复按 KK2 微动开关,显示屏上应用“6”来响应,直到按 10 次 后,系统处于停机状态。 四四 实验结果实验结果 1.程序载入成功,结果如图(4-1)所示: 图 4-1 数据载入成功 2.按 KK2 微动开关屏上显示“7”数据,如图(4-2)所示: 图 4-2 结果显示 实验实验 2 2(结果)(结果) 1.程序载入成功,结果如图(4-3)所示: 图 4-3 数据载入成功 2.按 KK2 微动开关屏上显示“6”数据,如图(4-4)所示: 图 4-4 结果显示 五五 思考与总结思考与总结 通过本次实验我认识 TDN86/51 系统的中断特性并掌握 8259 中断控制器的工作原理,实验当中遇到的一些问题,通过老师的点 拨与同学之间的互相帮助、互相学习得到了解决,今后要注意将学 习解决此类问题的方法,以后遇到也能轻松解决。 实验十实验十 8255 并行接口应用实验并行接口应用实验 一一 实验目的实验目的 1学习并掌握 8255 的各种工作方式及其应用 2.学习载系统接口实验单元上构造实验电路 二二 实验设备实验设备 1.TDN86/51 或 TDN86/88 教学实验系统一台 2.排线、导线若干 三三 实验内容及步骤实验内容及步骤 实验实验 1 1 编写源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:START: MOVMOV AL,82HAL,82H; ;设设 82558255 方式字方式字 A A 位输出,位输出,B B 口位输入。口位输入。 OUTOUT 63H,AL63H,AL; ;将将 ALAL 内容传给控制寄存器内容传给控制寄存器 A1:A1: ININ AL,61HAL,61H; ;将输入口将输入口 B B 口内容传给口内容传给 ALAL OUTOUT 60H,AL60H,AL; ;将将 ALAL 内容传给输出口内容传给输出口 A A 口完成输入口完成输入/ /输出功能输出功能 JMPJMP A1A1; ;无条件跳转到无条件跳转到 A1A1,循环,循环 CODECODE ENDSENDS ENDEND STARTSTART 2. 编译、连接、装载 3.G=0000:2000 运行程序 实验实验 2 1 编写源代码: STACKSTACK SEGMENTSEGMENT STACKSTACK DWDW 6464 DUP(?)DUP(?) STACKSTACK ENDSENDS CODECODE SEGMENTSEGMENT ASSUMEASSUME CS:CODECS:CODE START:START: MOVMOV AL,90HAL,90H; ;设设 82558255 方式字方式字 B B 位输出,位输出,A A 口位输入。口位输入。 OUTOUT 63H,AL63H,AL; ;将将 ALAL 内容传给控制寄存器内容传给控制寄存器 A1:A1: ININ AL,60HAL,60H; ;将输入口将输入口 A A 口内容传给口内容传给 ALAL OUTOUT 61H,AL61H,AL; ;将将 ALAL 内容传给输出口内容传给输出口 B B 口完成输入口完成输入/ /输出功能输出功能 JMPJMP A1A1; ;无条件跳转到无条件跳转到 A1A1,循环,循环 CODECODE ENDSENDS ENDEND STARTSTART 2. 编译、连接、装载 3.G=0000:2000 运行程序 四四 实验结果实验结果 1.程序载入成功,结果如图(4-1)所示: 图 4-1 数据载入成功 2.实验结果,如图(4-2)所示: 图 4-2 结果显示 实验实验 2 2(结果)(结果) 1.程序载入成功,结果如图(4-3)所示: 图 4-3 数据载入成功 2. 实验结果,如图(4-4)所示: 图 4-4 结果显示 五五 思考与总结思考与总结 通过本次实验我学习到了载系统接口实验单元上构造以及很简 单的连接方法,本次实验比较

温馨提示

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

评论

0/150

提交评论