Запись символов в строке в обратном порядке (NASM)

изучаю ассемблер, имеется задание, где необходимо записать в обратном порядке введенную нами строку, однако после выполнения программы теряется последний символ строки. Вопрос, скорее всего, глупый, но понять в чем проблема не могу.

SECTION .data
     Msg:    DB  'Введите строку: ',10
     MsgLen: EQU $-Msg
     Msg1:   DB  'В обратном порядке: ',10
     Msg1Len: EQU $-Msg1
     leng    DW  (0) 

SECTION .bss
     buf1:   resb    80
     buf2:   resb    80

SECTION .text
GLOBAL  _start

_start:

    mov     eax, 4
    mov     ebx, 1
    mov     ecx, Msg
    mov     edx, MsgLen
    int     80h

    mov     eax, 3
    mov     ebx, 0
    mov     ecx, buf1
    mov     edx, 80
    int     80h
    
    mov     ecx, eax
    mov     [leng], eax

    sub     eax, 2
    mov     ebx, buf1
    mov     esi, buf2
    add     esi, eax
    dec     esi
    

 Frag:   
    mov     al, [ebx]
    mov     [esi], al
    inc     ebx
    dec     esi
    loop    Frag        


    mov     eax, 4
    mov     ebx, 1
    mov     ecx, Msg1
    mov     edx, Msg1Len
    int     80h

    mov     eax, 4
    mov     ebx, 1
    mov     ecx, buf2
    mov     edx, [leng]
    int     80h


    mov     eax, 1
    mov     ebx, 0
    int     80h

Скриншот рабоыт программы


Ответы (1 шт):

Автор решения: motpfofs

Попробуйте заменить dec esi на inc esi

    sub     eax, 2
    mov     ebx, buf1
    mov     esi, buf2
    add     esi, eax
    inc     esi

Ссылка на код

→ Ссылка