太原理工大学现代科技学院课程实验报告专业班级学号姓名指导教师太原理工大学现代科技学院实验报告-2-一、实验目的掌握提示信息的使用方法及键盘输入信息的用法。二、实验内容1、编写程序,实现两个字符串比较。如果两个字符串中有一个字符相同,显示“MATCH”,否则,显示“NOMATCH”。2、程序框图段寄存器及堆栈初始化显示“请输入字符串1”使用INT21H的0A号子功能,接收键入的字符串显示“请输入字符串2”指针SI指向串1的首字符SI指向的字符串和串2中所有字符作比较Y相等?NSI+1,指向串1中下一字符N串1中的字符已取完?Y显示“NOMATCH”显示“MATCH”返回DOS太原理工大学现代科技学院实验报告-3-三、所用仪器和软件仪器:电脑一台软件:MasmforWindows集成实验环境2009.7四、实验方法、步骤1、编写程序代码2、运行程序,修改错误代码3、再次运行代码直至运行出正确结果五、源码程序编制及分析注释CRLFMACRO宏定义MOVAH,02HAH=02HMOVDL,0DHDL=0DHINT21H系统功能调用,输出回车字符MOVAH,02HAH=02HMOVDL,0AHDL=0AINT21H系统功能调用,输出换行符ENDM宏定义结束DATASEGMENT定义数据段MESS1DB'MATCH',0DH,0AH,'$'定义8个数据储存单元MESS2DB'NOMATCH',0DH,0AH,'$'定义11个数据储存单元MESS3DB'INPUTSTRING1:',0DH,0AH,'$'定义17个数据储存单元MESS4DB'INPUTSTRING2:',0DH,0AH,'$'定义17个数据储存单元MAXLEN1DB81定义最大长度为81个字节ACTLEN1DB?STRING1DB81DUP(?)定义STRING1长度为81MAXLEN2DB81定义最大长度为81ACTLEN2DB?STRING2DB81DUP(?)定义STRING2长度为81DATAENDS数据段结束STACKSEGMENTSTACK定义堆栈段STADB50DUP(?)定义50个数据储存单元TOPEQULENGTHSTA给TOP赋值50STACKENDS堆栈段结束CODESEGMENT定义代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACK定义段基址START:MOVAX,DATAMOVDS,AX把DATA的首地址赋给DSMOVES,AX把DATA的首地址赋给ESMOVAX,STACKMOVSS,AX把STACK的首地址赋给SS太原理工大学现代科技学院实验报告-4-MOVSP,TOP给SP赋值50MOVAH,09HAH=09HMOVDX,OFFSETMESS3把MESS3的偏移地址赋给DXINT21H系统功能调用MOVAH,0AHAH=0AHMOVDX,OFFSETMAXLEN1把MAXLEN1的偏移地址赋给DXINT21H系统功能调用CRLFMOVAH,09HAH=09HMOVDX,OFFSETMESS4把MESS4的偏移地址赋给DXINT21H系统功能调用MOVAH,0AHAH=0AHMOVDX,OFFSETMAXLEN2把MAXLEN2的偏移地址赋给DXINT21H系统功能调用CRLFCLDMOVSI,OFFSETSTRING1把STRING1的偏移地址赋给SIMOVCL,[SI-1]把SI-1内的内容赋给CLMOVCH,00HCH=00HKKK:MOVDI,OFFSETSTRING2把STRING2的偏移地址赋给DIPUSHCX将CX压入堆栈MOVCL,[DI-1]将DI-1内的的内容赋给CLMOVCH,00HCH=00HMOVAL,[SI]将SI内的内容赋给ALMOVDX,DI将DI赋给DXREPNZSCASB寻找第一个相同字符JZGGGZF=0执行GGG否则顺序执行INCSISI自加1POPCX弹出CXLOOPKKK跳转到KKK循环MOVAH,09HMOVDX,OFFSETMESS2INT21H系统功能调用JMPPPP跳转到PPPGGG:MOVAH,09HMOVDX,OFFSETMESS1INT21H输出MESS1PPP:MOVAX,4C00HINT21H带返回码结束CODEENDS代码段结束ENDSTART整个程序结束六、实验结果和分析实验结果如下:太原理工大学现代科技学院实验报告-5-(1)两个字符串中没有字符相同:(2)两个字符串中有两个字符相同: