2016年微机原理课设.docx
文本预览下载声明
一、字符串匹配1.流程图2.程序Crlf MACRO MOV DL,0DH MOV AH,02H INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM Data SEGMENT String1 DB match,0DH,0AH,$String2DB nomatch,0DH,0AH,$String3 DB Please input the first string:,0DH,0AH,$String4 DB Please input the second string:,0DH,0AH,$ Data1 DB 100String5 DB 100 DUP (0) ; String5 DB 100 DUP (?)为什么编译不过??Data2 DB 100String6 DB 100 DUP (0) Data ENDSCode SEGMENT ASSUME CS:Code,DS:Data,ES:DataStart: MOV AX,Data MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET String3 INT 21H ;显示提示信息1 MOV AL,Data1 MOV BX,OFFSET String5 MOV [BX],AL ;最大字符缓冲 MOV AH,0AH MOV DX,OFFSET String5 INT 21H ;接收键入的字符串1 CRLF MOV AH,09H MOV DX,OFFSET String4 INT 21H ;显示提示信息2 MOV AL,Data2 MOV BX,OFFSET String6 MOV [BX],AL ;最大字符缓冲设置 MOV AH,0AH MOV DX,OFFSET String6 INT 21H ;接收键入的字符串2 CRLF CLD LEA SI,String5 ;字符串1的地址送给SI MOV CL,[SI+1] ;字符串1的字符数送给CX MOV CH,0 BEING: LEA DI,String6 ;字符串2的地址送给DI MOV DL,[DI+1] ;字符串2的字符数送给DX MOV DH,0 J1: MOV AL,[SI+2] ;字符串1的第一个字符在字符串2中匹配 CMP [DI+2],AL JE J3 ;匹配成功则跳转J2: INC DI ;指向字符串2下一个字符 DEC DX JZ NOMAT ;字符串2完,不匹配 JMP J1 ;字符串2 没完,重新匹配J3: DEC CX JZ MATCH ;字符串1完,匹配 DEC DX JZ NOMAT ;字符串2完,不匹配 INC SI ;指向串1下一个字符 INC DI ;指向串2 下一个字符 MOV AL,[SI+2] CMP [DI+2],AL JE J3 ;匹配 跳转 DEC DX JZ NOMAT ;字符串2完,不匹配 LEA SI,String5 ;重新从串1的第一个字符匹配 MOV CL,[SI+1] MOV CH,0 JMP J1MATCH: MOV
显示全部