字符串反转代码出错

时间:2016-11-20 17:54:00

标签: assembly x86 dos masm

这段代码有什么问题?我希望这个程序能够反转字符串并显示它。

;String reverse (Problem is it is displaying any output)
.model small
.stack 100h
.data
    text1 db 'HELLO WORLD $'
    text2 db  13 dup(?)
    count dw   13
.code
  main proc
    mov ax, @data
    mov ds,ax
    mov es,ax
    mov cx,count
    mov si,0
    mov di,0
    add di,count
    dec di

again:  mov al,text1[si]
    mov text2[di],al
    inc si
    dec di
    loop again

    lea dx,text2
    mov ah,9
    int 21h

    mov ah,4ch
    int 21h
  main endp
end main

1 个答案:

答案 0 :(得分:3)

当倒车(并希望显示结果!)时,您不应允许将原始 $ 字符移动到结果的开头。

如果您更改 text2 的定义,将计数设置为12而不是13应该可以做到这一点:

text2 db  12 dup(?), "$"