微机原理与接口技术实验指导书编者:王亭岭华北水利水电学院电气学院自动化教研室二零一二年三月目录实验一标志寄存器应用 (1)实验二指令寻址方式练习 (4)实验三分支结构程序设计 (6)实验四循环结构程序设计 (7)实验五子程序结构程序设计 (8)实验六DOS系统功能调用程序设计 (10)实验七BIOS中断调用程序设计 (12)实验八定时器中断程序设计 (14)实验一标志寄存器应用一、实验目的与要求1.掌握汇编程序的编译过程;2.掌握8086的标志寄存器的特点。
二、实验内容微型计算机(80x86系列)。
四、实验参考程序DATA SEGMENTA DW 123B DW 456SUM DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE , DS:DATA START: MOV AX , DATAMOV DS , AXMOV AX , ASUB AX , BMOV SUM , AXMOV AH,4CHINT 21HCODE ENDSEND START五、实验步骤步骤一、用鼠标单击开始菜单,单击运行。
如下图所示:步骤二、在运行窗口中键入cmd,回车进入命令提示符。
如下图所示:步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。
如下图所示:1.C:\>D: 回车2.D:\ >CD MASM 回车3.D:\MASM>MASM SY1.ASM 回车4.D:\MASM>LINK SY1.OBJ 回车步骤四、在命令提示行中运行并调试汇编程序。
如下图所示:1.D:\MASM>SY1.EXE 回车2.D:\MASM>DEBUG SY1.EXE 回车六、实验结论1.程序运行后变量SUM的值是多少?2.程序运行前后标志寄存器的各标志位有何变化?3.分析实验结果及所遇到的问题,并说明解决的方法。
实验二指令寻址方式练习一、实验目的与要求1.掌握汇编语言调试工具(DEBUG)的基本使用方法;2.掌握8086的寻址方式。
二、实验内容练习识别8086相关指令的寻址方式。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序DSEG SEGMENTARRAY DB 11,56,78,8,76,90,96,33,21,06COUNT DW $ - ARRAYRELUST DB ?DSEG ENDSSSEG SEGMENT PARA STACK 'STACK'SDAT DB 50 DUP (?)TOP EQU LENGTH SDATSSEG ENDSCSEG SEGMENTASSUME CS:CSEG , DS:DSEG , SS:SSEG START: MOV AX , DSEGMOV DS , AXMOV AX , SSEGMOV SS , AXMOV AX ,TOPMOV SP , AXMOV BX , OFFSET ARRAYMOV CX , COUNTDEC CXMOV AL , [BX]AGAIN: INC BXCMP AL , [BX]JAE NEXTMOV AL , [BX]NEXT: DEC CXJNZ AGAINMOV RELUST, ALMOV AH, 4CHINT 21HCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY2.ASM2.D:\MASM>LINK SY2.OBJ3.D:\MASM>SY2.EXE4.D:\MASM>DEBUG SY2.EXE六、实验结论1.指出参考程序中带下划线的指令中源操作数的寻址方式?2.程序运行后AL中的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求学习并掌握汇编语言分支结构程序设计的方法。
二、实验内容比较两个无符号数的大小,把大数存入MAX单元。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序DSEG SEGMENTNUMBER DB 60H,66HMAX DB ?DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AL,NUMBERCMP AL,NUMBER+1JNC BRANCHMOV AL,NUMBER+1BRANCH: MOV MAX,ALMOV AH,4CHINT 21HCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY3.ASM2.D:\MASM>LINK SY3.OBJ3.D:\MASM>SY3.EXE4.D:\MASM>DEBUG SY3.EXE六、实验结论1.说明指令JNC的功能?2.程序运行后变量MAX的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求学习并掌握汇编语言循环结构程序设计的方法。
二、实验内容统计字符串STRING中空格的个数。
源程序见实验参考程序。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序DSEG SEGMENTSTRING DB 'Where there is a will,there is a way. $'RESULT DW ?DSEG ENDSCSEG SEGMENTASSUME DS:DSEG,CS:CSEGSTART: MOV AX,DSEGMOV DS,AXMOV BX,OFFSET STRINGMOV DX,0NEXT: MOV AL,[BX]CMP AL,'$'JZ FINCMP AL,20HJNZ CONTINC DXCONT: INC BXJMP NEXTFIN: MOV RESULT,DXMOV AH,4CHINT 21HCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY4.ASM2.D:\MASM>LINK SY4.OBJ3.D:\MASM>SY4.EXE4.D:\MASM>DEBUG SY4.EXE六、实验结论1.指出参考程序中循环体执行的次数?2.程序运行后变量RESULT的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。
一、实验目的与要求学习并掌握汇编语言子程序结构程序设计的方法。
二、实验内容利用堆栈,采用递归子程序的方法,编程实现求N!。
掌握汇编语言子程序结构程序设计的方法。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序图5-1 求阶乘示意图DSEG SEGMENTN DW 5 ;此变量要送人AX中,应定义为字类型RLT DW ? ;存放运算后的结果DSEG ENDSSSEG SEGMENT STACK ‘STACK’;声明组合类型后,系统自动为SS及SP DW 100 DUP (?) ;分配值SSEG ENDSCSEG SEGMENTASSUME CS :CSEG,DS:DSEG,SS:SSEGSTART:MOV AX,DSEGMOV DS,AXMOV AX,NCALL REC ;调用求阶乘递归子程序BRK:MOV RLT,AX ;运算后的结果送人RLT中MOV AH,4CHINT 21HREC PROC NEARPUSH DX ;递归调用时DX(5、4、3、2)依次压入堆栈MOV DX, AXCMP AX,1JZ EXITDEC AXCALL REC ;递归调用AMD:MUL DX ;A X * DX→DX AXEXIT:POP DXRETREC ENDPCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY5.ASM2.D:\MASM>LINK SY5.OBJ3.D:\MASM>SY5.EXE4.D:\MASM>DEBUG SY5.EXE六、实验结论1.说明利用堆栈实现参数传递的好处?2.程序运行后变量SUM的值是多少?3.分析实验结果及所遇到的问题,并说明解决的方法。
实验六DOS系统功能调用程序设计一、实验目的与要求1.掌握DOS系统功能调用的方法;2.正确使用功能调用中相关的入口参数和出口参数。
二、实验内容接收键盘输入并在屏幕上显示。
如果是“ESC”键,则退出程序(参考程序1);输出MESS中的字符串。
按“ESC”键退出程序(参考程序2)。
运行可执行文件并加以调试。
分析运行结果。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序1.实验参考程序1:CSEG SEGMENTASSUME CS:CSEGSTART: MOV AH , 1START1: INT 21HCMP AL , 1BHJZ OVERJMP START1OVER: MOV AH , 4CHINT 21HCSEG ENDSEND START2.实验参考程序2:DSEG SEGMENTMESS DB 'HuaBeiShuiYuan!$' ;显示信息DSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS:DSEGSTART: MOV AX, DSEGMOV DS, AXLEA DX, MESSMOV AH, 9INT 21HMOV AH , 07H ;功能号为07H的功能是键盘输入无回显INPUT: INT 21HCMP AL , 1BH ;“ESC”键的ASCII是1BHJZ EXIT ;按“ESC”键退出程序JMP INPUTEXIT: MOV AH , 4CHINT 21HCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY6.ASM2.D:\MASM>LINK SY6.OBJ3.D:\MASM>SY6.EXE4.D:\MASM>DEBUG SY6.EXE六、实验结论1.说明参考程序所完成的功能?2.什么是DOS系统功能调用?3.分析实验结果及所遇到的问题,并说明解决的方法。
实验七BIOS中断调用程序设计一、实验目的与要求1.掌握BIOS中断调用的方法;2.正确使用功能调用中相关的入口参数和出口参数。
二、实验内容采用BIOS功能调用在屏幕上用多种属性显示字符串。
运行可执行文件并加以调试。
分析运行结果。
三、实验设备微型计算机(80x86系列)。
四、实验参考程序ROW=5 ;常量定义,显示信息的行号COLUM=10 ;显示信息的列号ESCKEY=1BH ;ESC键的ASCII码值DSEG SEGMENTMESS DB 'HuaBeiShuiYuan!' ;显示信息MESS_LEN = $ - OFFSET MESS ;显示信息的长度COLORB DB 07H,01H,0FH,70H,74H ;颜色属性COLORE LABEL BYTEDSEG ENDSCSEG SEGMENTASSUME CS: CSEG, DS:DSEG, ES:DSEGSTART: MOV DI, OFFSET COLORB-1 ;颜色指针初值NEXTC: MOV AX, DSEGMOV DS, AX ;设置数据段段值MOV ES, AX ; ES指向数据段INC DI ;调整颜色指针CMP DI, OFFSET COLORE ;是否超过指定的颜色JNZ NEXTE ;没有超过则跳转MOV DI, OFFSET COLORB ;超过则重新指定为第一种颜色NEXTE: MOV BL, [DI] ;取颜色MOV SI, OFFSET MESS ;取显示信息指针MOV CX, MESS_LEN ;取显示信息长度MOV DH, ROW ;设置显示开始行号MOV DL, COLUM ;设置显示开始列号CALL ECHO ;调用显示子程序MOV AH, 0 ; 0号功能为从键盘读字符INT 16H ;执行INT 16H的0号功能CMP AL, ESCKEY ;是否为“ESC”键JNZ NEXTC ;不是,继续循环MOV AH, 4CH ;结束程序,返回DOSINT 21H;子程序入口参数包括:DS:SI = 字符串首地址; CX = 字符串长度,BL = 属性,DH = 显示开始行号,DL=显示开始列号ECHO PROC NEARJCXZ ECHO2 ;如果字符串长度为0,则结束MOV BH, 0MOV AH, 2 ;设置光标位置INT 10HMOV AL, 20H ;用指定属性写一空格MOV AH, 9INT 10HMOV AH, 0EHECHO1: MOV AL, [SI]INC SIINT 10H ;逐个显示字符CALL DELAY ;调用延时子程序LOOP ECHO1ECHO2: RETECHO ENDPDELAY PROC NEAR ;延时子程序PUSH BXPUSH CXMOV BX, 500W AIT0: MOV CX, 0FFFFHW AIT1: LOOP WAIT1DEC BXJNZ W AIT0POP CXPOP BXRETDELAY ENDPCSEG ENDSEND START五、实验步骤1.D:\MASM>MASM SY7.ASM2.D:\MASM>LINK SY7.OBJ3.D:\MASM>SY7.EXE4.D:\MASM>DEBUG SY7.EXE六、实验结论1.说明参考程序所完成的功能?2.什么是BIOS中断调用?3.分析实验结果及所遇到的问题,并说明解决的方法。