|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Ноя 10, 2004 13:14:58 · Поправил: Arvis Добрый день, господа. У меня возникла необходимость переписать программу с ТАСМа на МАСМ(615). Практически все получилось без особых проблем(по крайней мере внешне), но возник ряд сложностей. Я перечислю строки вызвавшие затруднения, если кто знает как их перевести в МАСМ и поделится, буду очень признателен. Итак: mov cl, [byte bx+di] ;error A2206: missing operator in expression mov [byte ptr di], ASCNull ;error A2032: invalid use of register mov [byte di], ASCnull ;error A2206: missing operator in expression mov [byte di], '-' ;тоже mov dl, [byte si-1] ;тоже Вот и все. Приношу свои извинения за ламерские вопросы, но у меня большая проблема с Интернетом и поиски через гуглю затруднены до невозможности. Заранее благодарен всем откликнувшимся. |
|
|
Дата: Ноя 10, 2004 14:38:58 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, так что сильно не бить :) |
|
|
Дата: Ноя 10, 2004 17:32:02 Спасибо за ответ, компилятор уже не ругается, но прога работать перестала так как надо.... :( |
|
|
Дата: Ноя 10, 2004 18:37:00 · Поправил: Asterix Arvis Посмотри в отладчике работающую прогу на tasm'е, в этом месте, чтоб не сомневаться.. в OllyDbg например, там синтаксис masm. |
|
|
Дата: Ноя 10, 2004 20:37:04 Если мне не изменяет память, в TASM-е byte - это всего лишь константа, равная 1. Так что byte [di], например, эквивалентно [di+1]. При указании типа операнда требуется ptr. |
|
|
Дата: Ноя 10, 2004 20:58:12 ava в TASM-е byte - это всего лишь константа, равная 1 В MASM-е тоже. Так что byte [di], например, эквивалентно [di+1]. Неа |
|
|
Дата: Ноя 10, 2004 23:15:39 А что этот кусок должен делать? может легче по-новой переписать? |
|
|
Дата: Ноя 11, 2004 01:16:55 Quantum, у меня TASM превращает mov al,byte [di] в 8A 45 01, а mov al,byte ptr [di] - в 8A 05. |
|
|
Дата: Ноя 11, 2004 01:56:20 ava Точно. Никогда бы не подумал :-( |
|
|
Дата: Ноя 11, 2004 12:31:41 Да, забыл сказать, может кому поможет разобраться(сам я этого пока не сделал) - прога на тасме в режиме IDEAL. [to Turkish] Вообще-то это не кусок кода, а набор строк вырванных из разных частей проги, так что переписывать нужно каждую по отдельности. И еще одно: не ругается только masm.exe, а ml.exe все равно что-то не устраивает. |
|
|
Дата: Ноя 11, 2004 21:21:58 masm.exe ? Это ж какая версия-то MASM ? уже вроде есть ml.exe v8 По поводу ideal могу сказать, что FASM основан на подобном синтаксисе, может быть проще будет взять его? (если нужен coff, то он способен его создать.) С MASM IMHO много головняка будет, т.к. mov eax,foo он понимает как mov eax,[foo], и ему нужно далать mov eax,offset foo. Из-за путаницы с режимами адресации прога и не работает наверное. Asterix дело говорит - смотри в Olly, там можно переключаться между режимами MASM / ideal. |
|
|
Дата: Ноя 12, 2004 09:52:52 Хорошо посмотрю. > masm.exe ? > Это ж какая версия-то MASM ? уже вроде есть ml.exe v8 615 :) |
|
|
Дата: Ноя 12, 2004 10:12:42 Попробывал ее загрузить в Олли. Он что-то не то выдал, она уменя под ДОС, он умеет с такими работать? |
|
|
Дата: Ноя 12, 2004 11:30:52 Все, разобрался с помощью Turbo Debugger. Заработало после того, как изменил код предоставленный ProgramMan'ом на: mov [di], ASCNull mov byte ptr [di], '-' mov dl, [si-1] И дальше в том же духе. Спасибо всем кто помогал. |