Files
Operating-System/Experiment/asm-exp/实验七/实验七-加强-2_字符串替换.asm
2026-06-25 00:09:09 +08:00

66 lines
1.6 KiB
NASM

; 实验七-加强-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