Всем привет. Есть в буфере слово "на", как получить "ан" ?? или "лимон" изменить на "номил"?? Заранее спасибо.
Пройтись до середины слова, попарно меняя первый и последний символы. Код (Text): char str[80]; strcpy(str, "test string"); for (char *p=str, *e=str[strlen(str)-1]; p < e; ++p, --e) { char tmp = *p; *p = *e; *e = tmp; } printf("Reversed string: %s", str);
Например, так: Код (Text): string: .ascii "test string"; strend: reverse: mov string, %rcx mov strend, %rdx cmp %rcx, %rdx jae 2f 1: mov (%rcx), %al mov (%rdx), %ah mov %ah, (%rcx) mov %al, (%rdx) inc %rcx dec %rdx cmp %rcx, %rdx jb 1b 2: ret
Читать данные с конца, сменить направление адресации и кодить не нужно SadKo, > mov (%rcx), %al Очень плохой пример, не системный(общепринятый) синтаксис. Адресация в асм всегда и везде в [ptr], выражения в (fun).
SadKo, Тоесть по вашему тот, кто хорошо не знает набор инструкций должен открыть ман, что бы определить где там адреса или сопоставить нормальный синтаксис с этим, изучив конкретный компиль ? Пример должен быть наглядным, вы бы есчо в бинарном виде показали, ну что бы не напрягать читающего всякими левыми компилями