Запись символов в строке в обратном порядке (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
