Помогите портировать прогу в МАСМ

Тема в разделе "WASM.ASSEMBLER", создана пользователем Arvis, 10 ноя 2004.

Статус темы:
Закрыта.
  1. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Добрый день, господа.

    У меня возникла необходимость переписать программу с ТАСМа на МАСМ(615). Практически все получилось без особых проблем(по крайней мере внешне), но возник ряд сложностей. Я перечислю строки вызвавшие затруднения, если кто знает как их перевести в МАСМ и поделится, буду очень признателен.

    Итак:


    Код (Text):
    1.  
    2. mov cl, [byte bx+di]  ;error A2206: missing operator in expression
    3. mov [byte ptr di], ASCNull ;error A2032: invalid use of register
    4. mov [byte di], ASCnull ;error A2206: missing operator in expression
    5. mov [byte di], '-' ;тоже
    6. mov dl, [byte si-1] ;тоже
    7.  




    Вот и все. Приношу свои извинения за ламерские вопросы, но у меня большая проблема с Интернетом и поиски через гуглю затруднены до невозможности.



    Заранее благодарен всем откликнувшимся.
     
  2. ProgramMan

    ProgramMan New Member

    Публикаций:
    0
    Регистрация:
    13 янв 2004
    Сообщения:
    263
    mov cl, byte [bx+di]

    mov byte ptr [di], ASCNull

    mov byte [di], ASCnull

    mov byte [di], '-'

    mov dl, byte [si-1]

    Может так...

    P.S.: сам пишу на FASM, так что сильно не бить :)
     
  3. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Спасибо за ответ, компилятор уже не ругается, но прога работать перестала так как надо....

    :dntknw:
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Arvis

    Посмотри в отладчике работающую прогу на tasm'е, в этом месте, чтоб не сомневаться..

    в OllyDbg например, там синтаксис masm.
     
  5. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    Если мне не изменяет память, в TASM-е byte - это всего лишь константа, равная 1. Так что byte [di], например, эквивалентно [di+1]. При указании типа операнда требуется ptr.
     
  6. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ava



    В MASM-е тоже.





    Неа
     
  7. Turkish

    Turkish New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2004
    Сообщения:
    80
    Адрес:
    Russia
    А что этот кусок должен делать? может легче по-новой переписать?
     
  8. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    Quantum, у меня TASM превращает mov al,byte [di] в 8A 45 01, а mov al,byte ptr [di] - в 8A 05.
     
  9. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    ava

    Точно. Никогда бы не подумал :-(
     
  10. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Да, забыл сказать, может кому поможет разобраться(сам я этого пока не сделал) - прога на тасме в режиме IDEAL.



    [to Turkish]

    Вообще-то это не кусок кода, а набор строк вырванных из разных частей проги, так что переписывать нужно каждую по отдельности.



    И еще одно: не ругается только masm.exe, а ml.exe все равно что-то не устраивает.
     
  11. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    masm.exe ?

    Это ж какая версия-то MASM ? уже вроде есть ml.exe v8



    По поводу ideal могу сказать, что FASM основан на подобном синтаксисе, может быть проще будет взять его? (если нужен coff, то он способен его создать.)

    С MASM IMHO много головняка будет, т.к. <font face="monospace]mov eax,foo</font><!--face--> он понимает как <font face="monospace]mov eax,[foo]</font><!--face-->, и ему нужно далать <font face="monospace]mov eax,offset foo</font><!--face-->.

    Из-за путаницы с режимами адресации прога и не работает наверное.



    Asterix дело говорит - смотри в Olly, там можно переключаться между режимами MASM / ideal.
     
  12. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Хорошо посмотрю.



    > masm.exe ?

    > Это ж какая версия-то MASM ? уже вроде есть ml.exe v8



    615 :)
     
  13. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Попробывал ее загрузить в Олли. Он что-то не то выдал, она уменя под ДОС, он умеет с такими работать?
     
  14. Arvis

    Arvis New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2004
    Сообщения:
    26
    Адрес:
    Ukraine
    Все, разобрался с помощью Turbo Debugger.

    Заработало после того, как изменил код предоставленный ProgramMan'ом на:


    Код (Text):
    1.  
    2. mov [di], ASCNull
    3. mov byte ptr [di], '-'
    4. mov dl, [si-1]
    5.  




    И дальше в том же духе. Спасибо всем кто помогал.
     
Статус темы:
Закрыта.