Скопировать из al в cx

Тема в разделе "WASM.BEGINNERS", создана пользователем n2, 30 янв 2012.

  1. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    В al после выполнения операций находится число. Как скопировать его значение в cx?
    Пробовал
    Код (Text):
    1. xor cx,cx
    2. mov cl,al
    Не то. Чувствую, что вопрос тупой, но найти не могу. Помогите, пожалуйста.
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    n2
    Почему не то? Вполне себе то. Хотя лучше, наверное, movzx cx,al.
     
  3. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    [del]
     
  4. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    Не работает. Суть такова:
    Код (Text):
    1. mov dx, offset buf
    2. mov ah, 0Ah
    3. int 21h
    4.  
    5. mov al, buf+1
    6. or al,30h
    7. xor ah,ah
    8. push ax
    9.  
    10. ;в al-длина введенной строки, нужно из ал скопировать в сх
    11.  
    12. ;Выводим строку
    13. mov ah, 09h
    14. mov dx, offset buf
    15. add dx,2   
    16. int 21h
    17. pop ax
    18. pop bx
    19. xor cx,cx
    20. mov cl,al
    21. push cx
    22. ; Записываем в файл
    23. mov ah,40h
    24. mov dx,offset buf
    25. pop cx ; [b]Вот здесь я указываю, сколько байт записать в файл. Должно равняться длине введенной строки[/b]
    26. add dx,2
    27. int 21h
     
  5. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    Если явно указать cx с помощью
    Код (Text):
    1. mov cx,5
    , то всё работает. В al-длина строки, проверял
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    n2
    Ввиду Вашего бесспорного авторитета в данном вопросе не смею ставить под сомнение Ваше заверение, но смею робко намекнуть на различие числа 5 и ASCII-кода цифры 5 (5 != 0x35).
     
  7. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    or al,30h
     
  8. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    l_inc
    n2
    Вариант c xor'ом не годен, мануалы рекомендуют юзать movzx. l_inc вам абсолютно верный вариант посоветовал.

    Не работает где? Если не транслируется -- то добавьте соответствующую директиву.
     
  9. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    pashe4ka13
    Еще следует пожалуй добавить, что кошернее делать не так:

    Код (Text):
    1. or    al,30h
    2. xor    cx,cx
    3. mov    cl,al
    или так:

    Код (Text):
    1. xor    cx,cx
    2. mov    cl,al
    3. or      cl,30h
    а так:

    Код (Text):
    1. movzx cx,al
    2. or       cx,30
    Сие же касается и 32 битных программ. Лучше юзать movzx и работать с целым регистром, а не с 16/8 битными рудиментами.
     
  10. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    l_inc
    чёрт, не подумал о том, что это символ..Как тогда сделать? Ассемблер-ТАСМ, он в упор не понимает movzx.
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    n2
    pashe4ka13 показал строку, которая мешает. Но по сути там все эти четыре строки желательно на одну movzx заменить.
    .386 в начале исходника должно быть, как указал MMIX. Но я бы настоятельно рекомендовал fasm.
     
  12. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    n2
    Не занимайтесь некрофилией, переходите на нормальные трансляторы.

    Или, ну если никак не уходится, то юзайте db и вбивайте опкоды хехе.
     
  13. n2

    n2 New Member

    Публикаций:
    0
    Регистрация:
    5 авг 2011
    Сообщения:
    26
    MMIX
    так и скажу преподу:ваш ассемблер на васме не котируется)
     
  14. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    n2
    А, тут вон дело в чем. Я подумал вы для себя изучаете, вот и посоветовал сразу пока не поздно сменить мертвый тасм на актуальный ассемблер.

    Если же дело в преподавателе, то тут все ясно; этих упертых ни чем не прошибешь. В наших технических вузах инженеров обучают васику и турбо паскалю до сих пор. И если паскаль я еще могу понять (как бы да, он дает нормальную базу, хотя в целом не нужен), то юзание васика, как говаривал дейкстра, неминуемо ведет к чугундеру.

    Впрочем я бы на вашем месте не упустил случая либо поговорить с преподом по душам, если он адекватен, чтобы он поменял н.голубь (или кто там у вас) на абеля; либо, если он старый маразматик, трясущийся в паркинсоне -- не упустил бы случая потроллить.

    А вообще под дос тасма 5-го хватит, так что пишите и не парьтесь.
     
  15. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    интересно, а те кто делают процессоры почему не делают трансляторов ассемблера? Или есть такие?
     
  16. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    pashe4ka13
    Трансляторы делают под конкретную ОС, т.к. форматы файлов определяются именно разработчиками ОС а не процессоров.
     
  17. MMIX

    MMIX New Member

    Публикаций:
    0
    Регистрация:
    9 дек 2011
    Сообщения:
    385
    pashe4ka13
    Почему вы так думаете что не делают? Тогда как же они собственно тестят свои камни? Или например как вы думаете работает интел с++ компилер? Любой компилер по-любому преобразует листинг на языке в листинг на асме, а потом юзает уже транслятор асма.

    Именно поэтому я считаю, что, скажем, масм никогда не умрет, потому как он нужен для работы микрософтовских компиляторов. И именно поэтому я считаю, что борланд не прекратила разработку тасма, а попросту перестала распространять его. Чем-то же с++ билдер транслирует, так?

    Ezrah
    Вы путаете с линковщиками наверное.
    Трансляторы как раз делают под процессоры в первую очередь.