You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

8086汇编程序问题:替换'E'/'e'为'Egg'/'egg'时输出空白

8086汇编:替换字符串中的'E'/'e'为'Egg'/'egg'

原代码核心问题分析

  • 硬编码循环长度错误:测试字符串"In English$"有效长度(不含结束符)仅10,却设置CX=19,导致循环越界。
  • 输出逻辑混乱:bige/smalle分支中直接打印未填充完整的result缓冲区,且分支内循环因CX初始值为0直接跳过;后续change段的CX计算错误,最终导致无输出。
  • 未处理字符串结束符:结果字符串未添加$,无法通过int 21h ah=09h正确输出。

修正后的代码

.MODEL SMALL
.STACK 100H
.DATA
    english DB "In English$"
    result DB 100 dup(?)  ; 预留足够大的缓冲区存储处理结果
    newline DB 10,13,'$'
    bigegg DB "Egg$"
    smallegg DB "egg$"

.CODE
MAIN PROC
    MOV AX, @DATA
    MOV DS, AX

    ; 打印原字符串
    mov ah, 09h
    lea dx, english
    int 21h

    ; 打印换行分隔
    mov ah, 09h
    lea dx, newline
    int 21h

    lea si, english       ; SI指向原字符串起始地址
    lea di, result        ; DI指向结果缓冲区起始地址

process_char:
    mov al, [si]
    cmp al, '$'           ; 检测到字符串结束符,终止处理
    je end_process

    cmp al, 'E'           ; 匹配大写'E'
    je replace_bigE
    cmp al, 'e'           ; 匹配小写'e'
    je replace_smalle

    ; 普通字符直接复制到结果缓冲区
    mov [di], al
    inc si
    inc di
    jmp process_char

replace_bigE:
    ; 将"Egg"复制到结果缓冲区
    mov cx, 3             ; "Egg"的字符长度
    lea bx, bigegg
copy_big_loop:
    mov al, [bx]
    mov [di], al
    inc bx
    inc di
    loop copy_big_loop
    inc si                ; 跳过原字符串中的'E'
    jmp process_char

replace_smalle:
    ; 将"egg"复制到结果缓冲区
    mov cx, 3             ; "egg"的字符长度
    lea bx, smallegg
copy_small_loop:
    mov al, [bx]
    mov [di], al
    inc bx
    inc di
    loop copy_small_loop
    inc si                ; 跳过原字符串中的'e'
    jmp process_char

end_process:
    mov [di], '$'         ; 为结果字符串添加DOS结束符

    ; 打印最终处理后的字符串
    mov ah, 09h
    lea dx, result
    int 21h

    ; 程序正常退出
    MOV AX, 4C00H
    INT 21H
MAIN ENDP
END MAIN

关键修改说明

  1. 动态遍历字符串:通过检测结束符$终止循环,适配任意长度的输入字符串,避免硬编码长度的错误。
  2. 先构建后输出:所有字符(包括替换后的Egg/egg)先存入result缓冲区,最后添加$后统一输出,逻辑清晰且符合DOS字符串输出规范。
  3. 简化替换逻辑:遇到目标字符时,直接将替换字符串复制到缓冲区,跳过原字符,流程简洁易维护。
  4. 可读性优化:使用字符常量'E'/'e'替代十六进制值,代码更直观。

内容的提问来源于stack exchange,提问作者LIM WENG NI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 22:05:26