昆明理工大学微机原理及程序设计实验指导书段绍米编昆明理工大学信息工程与自动化学院自动化系2013年10月微机原理实验实验要求及运行环境1、实验要求与注意事项:交纸质版实验报告,实验要求:实验成绩百分制(总分10 0分)实验过程(50分)提前预习,写好实验报告,标好注释,修改好程序;10分个人按要求独立完成,填好实验结果,对实验程序进行讲解,按时交实验报告20分不做与本实验无关的事(如玩游戏、聊天、打电话、听音乐等)5分不得缺席,实验签名(两份),按要求填写设备号实验名称等,不带他人签名5分带走自己的垃圾,保持实验室卫生,电脑设备桌椅摆设整齐,保管好个人物品5分按秩序进出实验室,不拥挤,注意安全,爱护设备,保证设备完好5分实验报告(50分)报告纸要统一,全部手写并填写好表头,包括:实验名称、姓名、学号、班级任课老师等2分实验目的、实验内容3分程序框图5分程序清单5分读懂程序加注释(每句注释13+分段注释7)20分实验结果,实验中经老师检查过5分程序修改,实验要求的完成及结果(可用蓝/黑在原程序上标明,并加注释)10分交电子版实验报告,实验要求:实验成绩百分制(总分100分)实验过程(50分)提前预习,标好程序注释,修改好程序;10分个人按要求独立完成,填好实验结果,对实验程序进行讲解,按时交实验报告20分不做与本实验无关的事(如玩游戏、聊天、打电话、听音乐等)5分不得缺席,实验签名(两份),按要求填写设备号实验名称等,不带他人签名5分带走自己的垃圾,保持实验室卫生,电脑设备桌椅摆设整齐,保管好个人物品5分按秩序进出实验室,不拥挤,注意安全,爱护设备,保证设备完好5分实验报告(50分)报告按统一格式要求填写,包括:课程名称、姓名、学号、班级任课老师等10分实验报告包括实验目的、实验内容、程序框图、程序清单、实验要求5分读懂程序加注释(每句注释13+分段注释7)20分实验结果,实验中经老师检查过5分程序修改,实验要求的完成及结果(可用其他颜色标明添加的程序,与原程序不同,并加注释)10分2、实验运行环境在电脑中装ASM Masm for windows 集成实验环境2008。
双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。
运行结果显示:实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
二、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单CRLF MACRO ;宏定义,宏名:CRLFMOV DL, 0DH ;把0DH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现回车功能MOV DL, 0AH ;把0AH给DLMOV AH, 02H ; 把02H给AHINT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能DATA SEGMENT;数据段定义,段名DATADATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数DATA ENDS;数据段定义结束——本段实现了两个数据的定义STACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AXMOV AX, TOPMOV SP, AXMOV SI, OFFSET DA TA2MOV BX, 05CALL DISPLCRLFMOV SI, OFFSET DA TA1MOV BX, 05CALL DISPLCRLFMOV DI, OFFSET DATA2CALL ADDAMOV SI, OFFSET DA TA1MOV BX, 05CALL DISPLCRLFMOV AX, 4C00HINT 21HDISPL PROC NEARDS1: MOV AH, 02MOV DL, [SI+BX-1]INT 21HDEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX, SIMOV BP, DIMOV BX, 05AD1: SUB BYTE PTR [SI+BX-1] , 30HSUB BYTE PTR [DI+BX-1] , 30HDEC BXJNZ AD1MOV SI, DXMOV DI, BPMOV CX, 05CLCAD2: MOV AL, [SI]MOV BL, [DI]ADC AL, BLAAAMOV [SI] , ALINC SIINC DILOOP AD2MOV SI, DXMOV DI, BPMOV BX, 05AD3: ADD BYTE PTR [SI+BX-1], 30HADD BYTE PTR [DI+BX-1], 30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。
2.把源程序修改为任意两个六位十进制相加。
并思考如果最高位有进位怎么办?实验二两个数相乘的实验一、实验目的掌握乘法指令和循环指令的用法。
二、实验内容实现十进制数的乘法。
被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。
三、程序框图四、程序清单DA TA SEGMENTDA TA1 DB 32H,39H,30H,35H,34HDA TA2 DB 33HRESULT DB 6 DUP(00H)DA TA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DATA START: MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BL,[SI]AND BL,00001111BMOV SI,OFFSET DATA1MOV DI,OFFEST RESULTMOV CX,05LOOP1: MOV AL,[SI]AND AL,00001111BINC SIMUL BLAAMADD AL,[DI]AAAMOV [DI],ALINC DIMOV [DI],AHLOOP LOOP1MOV CX,06MOV SI,OFFSET RESULTDISPL: MOV AH,02MOV DL,[SI+5]ADD DL,30HINT 21HDEC SILOOP DISPLMOV AX,4C00HINT 21HCODE ENDSEND START五、实验要求1.读懂程序,写出程序注释。
2.修改程序,实现6位数乘2位数的功能。
实验三 BCD码相乘的实验一、实验目的掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。
二、实验内容实现BCD码的乘法,要求被乘数和乘数均以组合的BCD码形式存放,各占一个内存单元,乘积存放在另外两个内存单元中。
由于没有组合BCD码乘法指令,所以程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。
三、程序框图四、程序清单DISPL MACROADD DL,30HMOV AH,02INT 21HENDMCRLF MACROMOV DL,0DHMOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HENDMDA TA SEGMENTDA TA1 DB 01001000BDA TA2 DB 01110101BRESULT DW ?DA TA ENDSSTACK SEGMENT STACKSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DA TA START: MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV DI,OFFSET RESULTMOV SI,OFFSET DA TA1MOV AH,[SI]MOV CL,04SHR AH,CLMOV DL,AHDISPLMOV AL,[SI]MOV BL,ALAND AL,00001111BMOV DL,ALCRLFMOV SI,OFFSET DA TA2MOV AH,[SI]MOV CL,04SHR AH,CLMOV DL,AHDISPLMOV AL,[SI]AND AL,00001111BMOV DL,ALDISPLCRLFXOR DX,DXS1: CMP BL,0JZ S2CLCMOV AL,[SI]ADC AL,DLDAAMOV DL,ALMOV AL,00HADC AL,DHDAAMOV DH,ALMOV AL,BLDEC ALDASMOV BL,ALJMP S1S2: MOV [RESULT],DXMOV SI,DXMOV CL,4SHR DH,CLMOV DL,DHDISPLMOV DX,SIAND DH,00001111BMOV DL,DHDISPLMOV DX,SIMOV CL,4SHR DL,CLMOV DX,SIAND DL,00001111BDISPLCRLFS3: MOV AX,4C00HINT 21HCODE ENDSEND START五、实验要求1.读懂源程序,写出程序注释。
2.修改程序使其不显示被乘数和乘数。
实验四字符匹配程序一、实验目的掌握提示信息的使用方法及键盘输入信息的用法。
二、实验内容编写程序,实现两个字符串比较。
如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NO MATCH”。
三、程序框图四、程序清单CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENTMESS1 DB 'MATCH',0DH,0AH,'$'MESS2 DB 'NO MATCH',0DH,0AH,'$' MESS3 DB 'INPUT STRING1:',0DH,0AH,'$' MESS4 DB 'INPUT STRING2:',0DH,0AH,'$' MAXLEN1 DB 81ACTLEN1 DB ?STRING1 DB 81 DUP (?)MAXLEN2 DB 81ACTLEN2 DB ?STRING2 DB 81 DUP (?)DA TA ENDSSTACK SEGMENT STACKSTA DB 50 DUP (?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV AH,09HMOV DX,OFFSET MESS3INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN1INT 21HCRLFMOV AH,09HMOV DX,OFFSET MESS4INT 21HMOV AH,0AHMOV DX,OFFSET MAXLEN2INT 21HCRLFCLDMOV SI,OFFSET STRING1MOV CL,[SI-1]MOV CH,00HKKK: MOV DI,OFFSET STRING2PUSH CXMOV CL,[DI-1]MOV CH,00HMOV AL,[SI]MOV DX,DIREPNZ SCASBJZ GGGINC SIPOP CXLOOP KKKMOV AH,09HMOV DX,OFFSET MESS2INT 21HJMP PPPGGG: MOV AH,09HMOV DX,OFFSET MESS1INT 21HPPP: MOV AX,4C00HINT 21HCODE ENDSEND START五、实验要求1.读懂源程序,写出程序注释。