1微机原理与接口技术实验指导书编者:王亭岭华北水利水电学院电气学院自动化教研室二零一二年三月2目录实验一标志寄存器应用........................................................................1实验二指令寻址方式练习....................................................................4实验三分支结构程序设计....................................................................6实验四循环结构程序设计....................................................................7实验五子程序结构程序设计................................................................8实验六DOS系统功能调用程序设计.................................................10实验七BIOS中断调用程序设计........................................................12实验八定时器中断程序设计..............................................................141实验一标志寄存器应用一、实验目的与要求1.掌握汇编程序的编译过程;2.掌握8086的标志寄存器的特点。二、实验内容练习识别8086标志寄存器的各种标志位。PC机中状态位的表示如下:标志位的名称为1的对应符号为0的对应符号OF溢出标志OVNVDF方向标志DNUPIF中断允许标志EIDISF符号标志NGPLZF零标志ZRNZAF半进位标志ACNAPF奇偶标志PEPOCF进位标志CYNC三、实验设备微型计算机(80x86系列)。四、实验参考程序DATASEGMENTADW123BDW456SUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,ASUBAX,BMOVSUM,AXMOVAH,4CHINT21HCODEENDSENDSTART五、实验步骤步骤一、用鼠标单击开始菜单,单击运行。如下图所示:2步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示:步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\D:回车2.D:\CDMASM回车3.D:\MASMMASMSY1.ASM回车4.D:\MASMLINKSY1.OBJ回车3步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASMSY1.EXE回车2.D:\MASMDEBUGSY1.EXE回车六、实验结论1.程序运行后变量SUM的值是多少?2.程序运行前后标志寄存器的各标志位有何变化?3.分析实验结果及所遇到的问题,并说明解决的方法。4实验二指令寻址方式练习一、实验目的与要求1.掌握汇编语言调试工具(DEBUG)的基本使用方法;2.掌握8086的寻址方式。二、实验内容练习识别8086相关指令的寻址方式。DEBUG的命令及其功能:命令功能格式A对语句进行汇编A[地址]C比较内存内容C源地址范围目标D显示内存内容D[地址]或[地址范围]E修改内存内容E地址[字节串…]F填充内存内容F地址范围要填入的字节或串G运行一个程序或程序段G[=始址][断点…]H十六进制的加减法运算H数值1数值2I读/显示输入字节I端口地址L装入文件或磁盘扇区L[地址[盘号相当扇区扇区数]]M传送内存块M源地址范围目标地址N定义文件名和参量N文件名[文件名…]O输出命令O端口地址字节P单步,并跳过子程序P[=地址][执行条数]Q退出DEBUGQR显示和修改寄存器内容R[寄存器]S对字符进行检索S地址范围要检索的字节T跟踪执行和显示T[=地址][跟踪条数]U对指令进行反汇编U[地址范围]W写入文件或磁盘扇区W[地址[盘号相当扇区扇区数]]其中…表示输入的内容;[…]表示为可选项。三、实验设备微型计算机(80x86系列)。四、实验参考程序DSEGSEGMENTARRAYDB11,56,78,8,76,90,96,33,21,06COUNTDW$-ARRAYRELUSTDB?DSEGENDSSSEGSEGMENTPARASTACK'STACK'5SDATDB50DUP(?)TOPEQULENGTHSDATSSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,SSEGMOVSS,AXMOVAX,TOPMOVSP,AXMOVBX,OFFSETARRAYMOVCX,COUNTDECCXMOVAL,[BX]AGAIN:INCBXCMPAL,[BX]JAENEXTMOVAL,[BX]NEXT:DECCXJNZAGAINMOVRELUST,ALMOVAH,4CHINT21HCSEGENDSENDSTART五、实验步骤1.D:\MASMMASMSY2.ASM2.D:\MASMLINKSY2.OBJ3.D:\MASMSY2.EXE4.D:\MASMDEBUGSY2.EXE六、实验结论1.指出参考程序中带下划线的指令中源操作数的寻址方式?2.程序运行后AL中的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。6实验三分支结构程序设计一、实验目的与要求学习并掌握汇编语言分支结构程序设计的方法。二、实验内容比较两个无符号数的大小,把大数存入MAX单元。三、实验设备微型计算机(80x86系列)。四、实验参考程序DSEGSEGMENTNUMBERDB60H,66HMAXDB?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,NUMBERCMPAL,NUMBER+1JNCBRANCHMOVAL,NUMBER+1BRANCH:MOVMAX,ALMOVAH,4CHINT21HCSEGENDSENDSTART五、实验步骤1.D:\MASMMASMSY3.ASM2.D:\MASMLINKSY3.OBJ3.D:\MASMSY3.EXE4.D:\MASMDEBUGSY3.EXE六、实验结论1.说明指令JNC的功能?2.程序运行后变量MAX的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。7实验四循环结构程序设计一、实验目的与要求学习并掌握汇编语言循环结构程序设计的方法。二、实验内容统计字符串STRING中空格的个数。源程序见实验参考程序。三、实验设备微型计算机(80x86系列)。四、实验参考程序DSEGSEGMENTSTRINGDB'Wherethereisawill,thereisaway.$'RESULTDW?DSEGENDSCSEGSEGMENTASSUMEDS:DSEG,CS:CSEGSTART:MOVAX,DSEGMOVDS,AXMOVBX,OFFSETSTRINGMOVDX,0NEXT:MOVAL,[BX]CMPAL,'$'JZFINCMPAL,20HJNZCONTINCDXCONT:INCBXJMPNEXTFIN:MOVRESULT,DXMOVAH,4CHINT21HCSEGENDSENDSTART五、实验步骤1.D:\MASMMASMSY4.ASM2.D:\MASMLINKSY4.OBJ3.D:\MASMSY4.EXE4.D:\MASMDEBUGSY4.EXE六、实验结论1.指出参考程序中循环体执行的次数?2.程序运行后变量RESULT的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。8实验五子程序结构程序设计一、实验目的与要求学习并掌握汇编语言子程序结构程序设计的方法。二、实验内容利用堆栈,采用递归子程序的方法,编程实现求N!。掌握汇编语言子程序结构程序设计的方法。三、实验设备微型计算机(80x86系列)。四、实验参考程序图5-1求阶乘示意图DSEGSEGMENTNDW5;此变量要送人AX中,应定义为字类型RLTDW?;存放运算后的结果DSEGENDSSSEGSEGMENTSTACK‘STACK’;声明组合类型后,系统自动为SS及SPDW100DUP(?);分配值SSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,NCALLREC;调用求阶乘递归子程序BRK:MOVRLT,AX;运算后的结果送人RLT中MOVAH,4CHINT21HRECPROCNEARPUSHDX;递归调用时DX(5、4、3、2)依次压入堆栈MOVDX,AXCMPAX,19JZEXITDECAXCALLREC;递归调用AMD:MULDX;AX*DX→DXAXEXIT:POPDXRETRECENDPCSEGENDSENDSTART五、实验步骤1.D:\MASMMASMSY5.ASM2.D:\MASMLINKSY5.OBJ3.D:\MASMSY5.EXE4.D:\MASMDEBUGSY5.EXE六、实验结论1.说明利用堆栈实现参数传递的好处?2.程序运行后变量SUM的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。10实验六DOS系统功能调用程序设计一、实验目的与要求1.掌握DOS系统功能调用的方法;2.正确使用功能调用中相关的入口参数和出口参数。二、实验内容接收键盘输入并在屏幕上显示。如果是“ESC”键,则退出程序(参考程序1);输出MESS中的字符串。按“ESC”键退出程序(参考程序2)。运行可执行文件并加以调试。分析运行结果。三、实验设备微型计算机(80x86系列)。四、实验参考程序1.实验参考程序1:CSEGSEGMENTASSUMECS:CSEGSTART:MOVAH,1START1:INT21HCMPAL,1BHJZOVERJMPSTART1OVER:MOVAH,4CHINT21HCSEGENDSENDSTART2.实验参考程序2:DSEGSEGMENTMESSDB'HuaBeiShuiYuan!$';显示信息DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXLEADX,MESSMOVAH,9INT21HMOVAH,07H;功能号为07H的功能是键盘输入无回显INPUT:INT21HCMPAL,1BH;“ESC”键的ASCII是1BHJZEXIT;按“ESC”键退出程序JMPINPUTEXIT:MOVAH,4CH11INT21HCSEGENDSENDSTART五、实验步骤1.D:\MASMMASMSY6.ASM2.D:\MASMLINKSY6.OBJ3.D:\MASMSY6.EXE4.D:\MASMDEBUGSY6.EXE六、实验结论1.说明参考程序所完成的功能?2.什么是DOS系统功能调用?3.分析实验结果及所遇到的问题,并说明解决的方法。12实验七BIOS中断调用程序设计一、实验目的与要求1.掌握BIOS中断调用的方法;2.正确使用功能调用中相关的入口参数和出口参数。二、实验内容采用BIOS功能调用在屏幕上用多种属性显示字符串。运行可执行文件并加以调试。分析运行结果。三、实验设备微型计算机(80x86系列)。四、实验参考程序ROW=5;常量定义,显示信息的行号COLUM=10;显示