Как вывести строку на экран в обратном порядке(TASM .small)

Тема в разделе "WASM.BEGINNERS", создана пользователем depocomp, 16 май 2009.

  1. depocomp

    depocomp New Member

    Публикаций:
    0
    Регистрация:
    16 май 2009
    Сообщения:
    6
    Здравствуйте!
    Помогите пожалуйста с кодом.
    TASM тип модели - SMALL
    Моя предыдущая программа(работает):
    ожидает ввод строки конец ввода <Enter>. По окончании ввода программа должна вывести полученную строку на экран, предварительно осуществив перевод строки (т.е. в результате получить две одинаковые строки друг под другом). Она работает:

    Надо написать программу, которая также ожидает ввод строки с клавиатуры, а по окончании ввода заменяет последовательность введенных символов на противоположную и выводит на экран.
    Например, вводится строка:
    QWERTY12345 <Enter>
    Программа должна вывести на экран:
    54321YTREWQ.
     
  2. depocomp

    depocomp New Member

    Публикаций:
    0
    Регистрация:
    16 май 2009
    Сообщения:
    6
    Есть еще такое пояснение:
    Пояснение. Для приведенного в задании 2 примера после выполнения макровызова
    GetStr string,20 символы строки расположатся следующим образом: string[0] = Q
    string[1] =W
    string[2] =E
    string[3] =R
    string[4] =T
    string[5] =Y
    string[6] =1
    string[7] =2
    string[8] =3
    string[9] =4
    string[10] =5,
    а в регистре АХ будет число введенных символов АХ=11.
    Введите еще одну переменную (например. string1 db 256 dup (‘$’) ), в которую перепишите строку string, начиная с последнего символа к первому. После чего выведите string1 на экран дисплея.


    А как это сделать не пойму
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    depocomp
    Организуй цикл, на каждой итерации которого копируй один символ из одной строки в другую.

    > как это сделать не пойму
    Как организовать цикл знаешь?
    Как обратиться к символу в строке по индексу знаешь?
     
  4. kero

    kero Модератор SOURCES & 2LZ Команда форума

    Публикаций:
    0
    Регистрация:
    4 апр 2006
    Сообщения:
    1.074
    Адрес:
    Москва
    push push push ... pop pop pop ? :)
     
  5. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    kero
    тада уж

    mov si,[begin_of_string]
    mov cx,[length_of_string]

    push bp
    mov bp,sp

    mov ax,0

    shr cx,1
    jnc @f
    lodsb
    xchg ah,al
    @@:
    push ax

    @@:
    lodsw
    xchg ah,al
    push aх

    dec cx
    jnz @b

    ; начало строки в sp. выводим

    mov sp,bp
    pop bp
     
  6. depocomp

    depocomp New Member

    Публикаций:
    0
    Регистрация:
    16 май 2009
    Сообщения:
    6
    Спасибо за ответы, но мне пока еще не весь пока код понятен, я парралельно еще только изучаю язык ассемблера.

    А вот макросы, которые использованы в программе и подключаются с помощью файла maсros.inc

     
  7. depocomp

    depocomp New Member

    Публикаций:
    0
    Регистрация:
    16 май 2009
    Сообщения:
    6
    Составил вот такой код, но почему-то не работает:
     
  8. depocomp

    depocomp New Member

    Публикаций:
    0
    Регистрация:
    16 май 2009
    Сообщения:
    6
    Просто забыл добавить следующие строки:
    Программа работает, тема закрыта.
    _basmp_ - для меня ваш код слишком сложен.
    Всем спасибо.