В стеке находится посимвольно разложенная строка (a, b, c, d, e - не важно где верх, где низ, абстрагируемся). Как можно посимвольно вынимая из стека символы добавлять в общую строку? Чтобы по итогу получилась строка abcde или edcba
Компилятор NASM
Изначальный код
%include "io.inc"
section .data
string db '12345', 0
len dw $-string
str2 db ''
counter dw 2
section .text
global CMAIN
CMAIN:
mov ebp, esp; for correct debugging
mov cx, 1
mov esi, string
cld
;PRINT_STRING string
;mov ah, [string+1]
;mov byte[str2], ah
;PRINT_DEC 2, len
PRINT_STRING 'Push to stack'
NEWLINE
jmp start
start:
lodsb
mov byte[str2], al
PRINT_STRING str2
push word[str2]
cmp cx, word[len]
je middle
inc cx
jmp start
middle:
NEWLINE
xor cx, cx
mov cx, 0
sub word[len], 1
jmp add_to_str
add_to_str:
pop ax
;mov eax, str2
;mov [str2 + cx], ax
mov word[str2], ax
PRINT_STRING str2
cmp cx, word[len]
je end
inc cx
jmp add_to_str
end:
NEWLINE
PRINT_STRING 'END'
ret
В метке add_to_str должна происходить эта магия