; 实验七-加强-2: 字符串替换程序 ; 功能: 将字符串中的指定字符替换为另一个字符 DATAS SEGMENT INPUT_STR DB 'Assembly Language Programming', 0 ; 输入字符串 OLD_CHAR DB 'A' ; 被替换的字符 NEW_CHAR DB '*' ; 替换后的字符 RESULT_STR DB 40 DUP(?) ; 结果字符串缓冲区 DATAS ENDS STACKS SEGMENT DB 64 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CS:CODES, DS:DATAS, SS:STACKS START: MOV AX, DATAS MOV DS, AX MOV ES, AX LEA SI, INPUT_STR ; SI指向输入字符串 LEA DI, RESULT_STR ; DI指向结果字符串 MOV AL, OLD_CHAR ; AL=被替换的字符 MOV AH, NEW_CHAR ; AH=替换后的字符 ; 复制并替换每个字符 REPLACE_LOOP: MOV BL, [SI] ; 读取字符 CMP BL, 0 ; 检查是否结束 JE REPLACE_DONE CMP BL, AL ; 比较是否为被替换的字符 JNE NOT_MATCH ; 字符匹配,替换 MOV [DI], AH JMP NEXT_CHAR NOT_MATCH: MOV [DI], BL ; 字符不匹配,原样复制 NEXT_CHAR: INC SI INC DI JMP REPLACE_LOOP REPLACE_DONE: MOV BYTE PTR [DI], 0 ; 添加字符串结束符 ; 显示原始字符串 LEA DX, INPUT_STR MOV AH, 09H INT 21H ; 显示分隔符 LEA DX, INPUT_STR ; 复用显示功能 ; Note: 实际应用中应该用不同的分隔符,这里简化处理 ; 程序结束 MOV AH, 4CH INT 21H CODES ENDS END START