String 如何在汇编语言中逐字反转字符串?

String 如何在汇编语言中逐字反转字符串?,string,assembly,reverse,emu8086,String,Assembly,Reverse,Emu8086,我想让程序逐字反转字符串 例如: 输入: 堆栈溢出 输出: 沃尔夫雷沃酒店 请帮帮我 请修复此代码并完成它: .MODEL SMALL .stack 64 .DATA msg DB "stack owerflow" DB "$" .CODE .STARTUP LEA SI, msg MOV DI, SI l1: INC DI MOV AL, [DI + 1] CMP AL, ' ' JNE l1 l2:

我想让程序逐字反转字符串 例如:

输入:

堆栈溢出

输出:

沃尔夫雷沃酒店

请帮帮我

请修复此代码并完成它:

.MODEL  SMALL
.stack 64
.DATA
    msg DB "stack owerflow"
        DB "$"
.CODE
    .STARTUP
    LEA SI, msg
    MOV DI, SI
l1:
    INC DI
    MOV AL, [DI + 1]
    CMP AL, ' '
    JNE l1 
l2:
    MOV AL, [SI]
    xchg AL, [DI]
    MOV [SI], AL
    INC SI
    DEC DI
    CMP SI, DI
    JB  l2

l3: 
    MOV AH, 09h
    LEA DX, msg
    INT 21h
    MOV AH, 08h
    INT 21H

.STACK
END

根据你在其中一条评论中对问题的描述判断,(请移到问题上),你的例行程序只颠倒一个单词,然后就退出了

通过查看您的代码,很明显您的例程正是这样做的:它只反转一个单词,然后退出

因此,您只需要添加一点代码,以便在反转一个单词后,例程继续检查其余字符,而不是退出


我不会为你写代码,因为如果你不知道怎么做,那么你就不应该交一份完成的作业。你的老师将给你评分,而不是给我评分。

这显然像是一个家庭作业。代码目前产生了什么?你知道它为什么这么做了吗?你可以用C写算法,然后把它翻译成汇编,或者让编译器输出程序集并清理程序集代码。@DavidHoelzer你能完成吗?我投票将此问题作为离题题结束,因为这是一个要求完成某人家庭作业的请求,而他无法识别“为我完成此任务”之外的实际问题。这并不能提供问题的答案。若要评论或要求作者澄清,请在其帖子下方留下评论。-@amdixon如果你看评论,OP被要求提供澄清,他确实提供了。当问题是关于家庭作业时,指示的行动过程是指示需要做什么,而不是为他们编写代码。这就是我所做的,鉴于问题的家庭作业性质,这是问题的最佳答案。要求提供澄清是评论的良好用途。你的书的内容也是如此answer@amdixon你当然有权对此事发表意见。这并不能证明你的观点是无效的,但它确实允许我在这里保留我的答案,而不改变或删除它。作为回答者,如何处理你的答案是你的选择