微机原理与接口技术实验报告学院:信息工程学院班级:学号:姓名:实验一:系统认识实验1实验目的:掌握TD-PITE80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。2实验设备:PC机一台,TD-PITE实验装置一套。3实验内容:编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。4实验步骤:1.运行Wmd86软件,进入Wmd86集成开发环境。2.环境调试,“设置”选项中选择汇编语言。语言环境选择界面3.新建文档,编写程序,程序如下:SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODE,SS:SSTACKSTART:PUSHDSXORAX,AXMOVDS,AXMOVSI,3000HMOVCX,16AA1:MOV[SI],ALINCSIINCALLOOPAA1AA2:JMPAA2CODEENDSENDSTART4.编译连接,程序无误下载:信息界面5.连接PC与实验系统的通讯电缆,打开实验系统电源。6.下载程序,查看内存3000H开始的连续16个存储单元中的内容,显示如下:8.由于该内存段原始数据与实验数据相同,便于区分观察,将该内存段初始化,然后查看:9.点击运行程序,在此查看该段内存:10.设置断点,执行程序:5操作练习编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。1、编写程序如下:SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODE,SS:SSTACKSTART:PUSHDSXORAX,AXMOVDS,AXMOVSI,3500HMOVDI,3600HMOVCX,8AA1:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPAA1AA2:JMPAA2CODEENDSENDSTART2、执行过程如上,内存变化如下:程序执行前程序执行后实验二:数制转换实验1、实验目的1.掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2.熟悉程序调试的方法。2、实验设备PC机一台,TD-PITE实验装置一套。3、实验内容将ASCII码表示的十进制数转换为二进制数,将十进制数的ASCII码转换为BCD码4、步骤第一部分:将十进制数的ASCII码转换为BCD码1、画流程图如下:存入指定地址输入一位ASCII码转换为BCD码结束程序开始程序NY对应数字否?YN将BCD码存入指定位置输入完成否?将FF2、根据流程图写出代码:SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVAX,0000HMOVDS,AXMOVCX,0005H;转换位数MOVDI,3500H;ASCII码首地址A1:MOVBL,0FFH;将错误标志存入BLMOVAL,[DI]CMPAL,3AHJNBA2;不低于3AH则转A2SUBAL,30HJBA2;低于30H则转A2MOVBL,ALA2:MOVAL,BL;结果或错误标志送入ALMOV[DI+0AH],AL;结果存入目标地址INCDILOOPA1A3:JMPA3CODEENDSENDSTART3、编译链接,下载运行程序:第二部分:将十六位二进制数转换为ASCII码表示的十进制数十六位二进制数的值域为0~65535,最大可转换为五位十进制数。五位十进制数可表示为:ND4104D3103D2102D110D0Di:表示十进制数0~9将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。自行绘制程序流程图,编写程序可参考例程。例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。实验步骤(1)编写程序,经编译、链接无误后,装入系统;SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVSI,3500H;源数据地址MOVDX,[SI]MOVSI,3515H;目标数据地址A1:DECSIMOVAX,DXMOVDX,0000HMOVCX,000AH;除数10DIVCX;得商送AX,得余数送DXXCHGAX,DXADDAL,30H;得Di的ASCII码MOV[SI],AL;存入目标地址CMPDX,0000HJNEA1;判断转换结束否,未结束则转A1A2:CMPSI,3510H;与目标地址得首地址比较JZA3;等于首地址则转A3,否则将剩余地址中填30HDECSIMOVAL,30HMOV[SI],ALJMPA2A3:JMPA3CODEENDSENDSTART(2)在3500H、3501H中存入0C00(3)运行程序,然后停止运行;(4)检查运行结果,键入D3510,结果应为:3030303132;(5)可反复测试几组数据,验证程序的正确性。例如;将3500h,3501H中存入0102,j结果如下:第三部分:十六进制数转换为ASCII码由表1-2-1中十六进制数与ASCII码的对应关系可知:将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。自行绘制流程图。实验步骤(1)编写程序,经编译、链接无误后装入系统;SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVCX,0004HMOVDI,3500H;十六进制数源地址MOVDX,[DI]A1:MOVAX,DXANDAX,000FH;取低4位CMPAL,0AHJBA2;小于0AH则转A2ADDAL,07H;在A~FH之间,需多加上7HA2:ADDAL,30H;转换为相应ASCII码MOV[DI+0DH],AL;结果存入目标地址DECDIPUSHCXMOVCL,04HSHRDX,CL;将十六进制数右移4位POPCXLOOPA1A3:JMPA3CODEENDSENDSTART(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B20;(3)先运行程序,然后再停止运行;(4)键入D350A,显示结果为:0000:350A32303342CC…;(5)反复输入几组数据,验证程序功能。例如键入E3500,然后输入2D,46,显示结果如下:实验三:循环程序设计实验1、实验目的1.加深对循环结构的理解;2.掌握循环结构程序设计的方法以及调试方法。2、实验设备PC机一台,TD-PITE实验装置一套。3、实验内容计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止,求某数据区内负数的个数。4、步骤第一部分:计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止1、构思程序,画流程图:2、写出程序:SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVDX,0001HMOVBL,02HA1:MOVAL,BLINCBLMULBLADDDX,AX;结果存于DX中CMPAX,00C8H;判断N(N+1)与200的大小JNAA1A2:JMPA2CODEENDSENDSTART3、编译连接,下载程序,运行:4.修改数据后验证如下,其中将00C8H改为00D8:第二部分:求某数据区内负数的个数1、构思程序结构,画出流程图:2、写出程序:SSTACKSEGMENTSTACKDW64DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:MOVDI,3000H;数据区首地址MOVCL,[DI];取数据个数XORCH,CHMOVBL,CHINCDI;指向第一个数据A1:MOVAL,[DI]TESTAL,80H;检查数据首位是否为1JEA2INCBL;负数个数加1A2:INCDILOOPA1MOV[DI],BL;保存结果A3:JMPA3CODEENDSENDSTART3、编译、链接无误后装入系统,键入E3000,输入数据如下:3000=06,3001=12,3002=88,3003=82,3004=90,3005=22,3006=334、查看内存检验结果如下:5.修改数据,编译、链接无误后装入系统,键入E3000,输入数据如下:3000=06,3001=82,3002=86,3003=88,3004=90,3005=11,3006=226.修改后检验的结果如下:实验四:8259中断控制实验1、实验目的1.掌握8259中断控制器的工作原理;2.学习8259的应用编程方法;3.掌握8259级联方式的使用方法。2、实验设备PC机一台,TD-PITE实验装置一套。3、实验内容及步骤1.中断控制器8259简介在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。从片的INT连接到主片的IR2信号上构成两片8259的级联。在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。2、按下图链接好实验电路:3、写出实验程序如下:SSTACKSEGMENTSTACKDW32DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODESTART:PUSHDSMOVAX,0000HMOVDS,AXMOVAX,OFFSETMIR7;取中断入口地址MOVSI,003CH;中断矢量地址MOV[SI],AX;填IRQ7的偏移矢量MOVAX,CS;段地址MOVSI,003EHMOV[SI],AX;填IRQ7的段地址矢量CLIPOPDS;初始化主片8259MOVAL,11HOUT20H,AL;ICW1MOVAL,08HOUT21H,AL;ICW2MOVAL,04HOUT21H,AL;ICW3MOVAL,01HOUT21H,AL;ICW4MOVAL,6FH;OCW1OUT21H,ALSTIAA1:NOPJMPAA1MIR7:STICALLDELAYMOVAX,0137HINT10H;显示字符7MOVAX,0120HINT10HMOVAL,20HOUT20H,AL;中断结束命令IRETDELAY:PUSHCXMOVCX,0F00HAA0:PUSHAXPOPAXLOOPAA0POPCXRETCODEENDSENDSTART4、编译链接,下载程序运行:实验五:8255并行接口实验1实验目的1.学习并掌握8255的工作方式及其应用;2.掌握8255典型应用电路的接法。2实验设备PC机一台,TD-PITE实验装置一套。3实验内容1.基本输入输出实验。编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。2.流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。4实验原理并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个