Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Детский вопрос знающим masm32, Ошибки в простой проге 
:(
    Опции темы
VictorBondarenko
Дата 2.3.2008, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2005

Репутация: нет
Всего: нет



Уважаемые друзья!

Я работаю в досе в незащищенном режиме.
Модель памяти беру
 .model tiny
Моя прога формирует код по адресу 1000h:100h
После формирования я хочу выполнить этот код.
В Tasm я делал так
   call  far  1000h:100h
и все работало отлично.

Masm32 такую команду считает ошибочной. 
Мне советовали
 push cs
 push 100h
 retf
не работает.
    Я даже пробовал от отчаяния
jmp 1000h:100h
Все ерунда.
       Посоветуйте, что делать в таких случаях.

        С уважением, Виктор      




PM MAIL   Вверх
AndNot
Дата 2.3.2008, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(VictorBondarenko @  2.3.2008,  11:54 Найти цитируемый пост)
Мне советовали
 push cs
 push 100h
Правильно делает, что не работает smile В CS у тебя сегмент проги, а тебе нужно 1000h, поэтому замени CS на эту константу, все заработает.

PM MAIL   Вверх
VictorBondarenko
Дата 2.3.2008, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2005

Репутация: нет
Всего: нет



Ну конечно же я делал

mov ax,1000h
mov cs,ax
push cs
mov di,100h
push di    ; если дать push 100h выдает грамматическую ошибку
retf

не работает
PM MAIL   Вверх
AndNot
Дата 2.3.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Во первых, попробуй call dword ptr 1000h:100h. За масм не гарантирую, но тасм, в режиме масма, вроде бы проглатывал.
А во вторых, зачем портишь CS? Сам подумай, какая инструкция будет выполняться, если CS станет 1000h? Не ломай голову - 1000h:IP, т.е. следующей инструкцией будет не твоя, а что-то другое. Сделай проще: 
Код
mov ax, 1000h
push ax
mov ax, 100h
push ax
retf
Суть в том, что по RETF извлекаемые из стека значения записываются в регистры CS и IP, вот и получается переход на новый адрес.

Добавлено через 13 минут и 45 секунд
Забыл добавить smile Можно ведь и другой подход использовать.
Код
callf macro seg: req, ofs: req
db 9ah ;; call far
dw ofs
dw seg
callf endm

....

callf 1000h, 100h


Это сообщение отредактировал(а) AndNot - 2.3.2008, 14:30
PM MAIL   Вверх
VictorBondarenko
Дата 2.3.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2005

Репутация: нет
Всего: нет



Спасибо AndNot !
Буду пробовать.
PM MAIL   Вверх
dumb
Дата 2.3.2008, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



Цитата(VictorBondarenko @  2.3.2008,  11:54 Найти цитируемый пост)
Я работаю в досе в незащищенном режиме.

Цитата(VictorBondarenko @  2.3.2008,  11:54 Найти цитируемый пост)
Masm32 такую команду считает ошибочной.

брал бы сразу masm64 - чего уж... с чего тебя вообще на masm32 потянуло? - под DOS-ом ты его даже запустить не сможешь...
PM MAIL   Вверх
AndNot
Дата 2.3.2008, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(dumb @  2.3.2008,  17:20 Найти цитируемый пост)
брал бы сразу masm64 - чего уж... с чего тебя вообще на masm32 потянуло?
А чем плох выбор? Отличный ассемблер, на все случаи жизни. Взял для примера: 
Код
        .model tiny
        .686
.code
    .startup
        mov    ah, 9h
        mov    dx, offset hello
        int    21h
        retn

  hello db 'Hello World!',13,10,'$'
end

Собственно слепок консоли: 
Код
E:\Lang\TASM\BIN>ml /AT /c 0.asm
Microsoft (R) Macro Assembler Version 6.14.8444
Copyright (C) Microsoft Corp 1981-1997.  All rights reserved.

 Assembling: 0.asm
E:\Lang\TASM\BIN>tlink /t 0.obj
Turbo Link  Version 7.1.30.1. Copyright (c) 1987, 1996 Borland International
E:\Lang\TASM\BIN>0
Hello World!

Как видишь масм32 даже не пикнул, и вполне успешно сработал в паре с линкером тасма ;) 

PM MAIL   Вверх
dumb
Дата 3.3.2008, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



Цитата(AndNot @  2.3.2008,  22:38 Найти цитируемый пост)
Как видишь масм32 даже не пикнул
спасибо за старания smile, но о способности этого ассемблера работать с 16-битным кодом я знаю.
 это становится очевидным уже даже из того факта, что во всех подобных топиках приводятся сообщения об ошибках именно линкера, а не ассемблера.

и таки основная направленность этого пакета - win32, иначе авторы вложили бы и 16-битный компоновщик.

а уж объяснять все эти тонкости людям, пишущим "хелло ворлд" - увольте-с. smile
для меня проще - посоветовать, а для вопрошающего - использовать другой пакет.

Цитата(AndNot @  2.3.2008,  22:38 Найти цитируемый пост)
А чем плох выбор?
в данном случае - неосознанностью.
PM MAIL   Вверх
AndNot
Дата 3.3.2008, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(dumb @  3.3.2008,  02:30 Найти цитируемый пост)
спасибо за старания smile, но о способности этого ассемблера работать с 16-битным кодом я знаю
Только я почему то этого не заметил smile Ну знаешь, так знаешь. В чем проблемы то?
Цитата(dumb @  3.3.2008,  02:30 Найти цитируемый пост)
это становится очевидным уже даже из того факта, что во всех подобных топиках приводятся сообщения об ошибках именно линкера, а не ассемблера
При чем здесь подобные топики? Был вопрос по синтаксису масма, который почти не различается у 16-ти и 32-х битного. Я дал ответ. Чего не так? Только автор топика вправе решать, каким асмом ему пользоваться, это его личное дело. Спросил бы он явно, мол какой лучше, тогда и ответ был бы другим.
Цитата(dumb @  3.3.2008,  02:30 Найти цитируемый пост)
и таки основная направленность этого пакета - win32, иначе авторы вложили бы и 16-битный компоновщик.
Ассемблер MASM лишь входит в пакет, но он не является его "родным. Разницу чувствуете? ;) Отсюда и Ваш вывод, насчет компоновщика, немного ошибочен, поскольку с "родным", для масма пакетом, идет линкер и для 16-ти битной компоновки.
Цитата(dumb @  3.3.2008,  02:30 Найти цитируемый пост)
а уж объяснять все эти тонкости людям, пишущим "хелло ворлд" - увольте-с. smile
Иногда лучше жевать, чем говорить © Реклама. Я вроде как не просил учить меня "тонкостям", я уж как нибудь сам разберусь. ;)

Добавлено через 1 минуту и 7 секунд
Цитата(dumb @  3.3.2008,  02:30 Найти цитируемый пост)
Цитата(AndNot @  2.3.2008,  22:38 )
А чем плох выбор?

в данном случае - неосознанностью. 
Это не нам решать. Если автор пересел с тасма на масм, то у него были причины.

PM MAIL   Вверх
VictorBondarenko
Дата 3.3.2008, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 14.2.2005

Репутация: нет
Всего: нет



Спасибо AndNot !


mov ax,1000h
push ax
mov ax,100h
push ax
retf

работает отлично.

А по по поводу того, почему masm32. Да не почему, просто он был
у меня вот и все аргументы. А что masm64? Там что-то покруче?
Скажите в двух словах, кто раболал с ним . Если отзывы хорошие,то буду искать его. 

Спасибо всем,
   Виктор

PM MAIL   Вверх
sergejzr
Дата 3.3.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
dumb
Дата 3.3.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



Цитата(AndNot @  3.3.2008,  05:39 Найти цитируемый пост)
Только я почему то этого не заметил
заметь

Цитата(AndNot @  3.3.2008,  05:39 Найти цитируемый пост)
При чем здесь подобные топики?
фраза про "подобные топики" должна была лишь показать, что способность компилить 16-битный код не относится к разряду тайных знаний.

Цитата(AndNot @  3.3.2008,  05:39 Найти цитируемый пост)
Ассемблер MASM лишь входит в пакет, но он не является его "родным
разговор шел о пакете masm32, а не о "родственных связях" masm'а.
Цитата
There is a difference between MASM32 and MASM. MASM32 is a package that includes MASM 6.14 along with include files, libraries, macros, tutorials and documentation. MASM is the Microsoft Macro Assembler itself (ML.EXE).
...
masm32 project is purely a 32 bit project and does not support 16 bit DOS code at all.


Цитата(AndNot @  3.3.2008,  05:39 Найти цитируемый пост)
Я вроде как не просил учить меня "тонкостям"
не стоит понимать все так буквально! но должен извиниться: я попросту не обратил внимания, что в твоем примере была фраза "Hello World" smile я имел ввиду обычных новичков, к коим тебя причислять не собирался, поскольку сам тебя сюда и "привел" smile (имеется ввиду то, что я имею примерное представление о твоем уровне знаний асма)

Цитата(AndNot @  3.3.2008,  05:39 Найти цитируемый пост)
Это не нам решать. Если автор пересел с тасма на масм, то у него были причины.
если бы он написал "masm", а не "masm32", я бы здесь и не появился. кстати, вот и причины:
Цитата(VictorBondarenko @  3.3.2008,  14:06 Найти цитируемый пост)
А по по поводу того, почему masm32. Да не почему, просто он был у меня вот и все аргументы.


Цитата(VictorBondarenko @  3.3.2008,  14:06 Найти цитируемый пост)
А что masm64? Там что-то покруче?
это шутка была.
Цитата(VictorBondarenko @  3.3.2008,  14:06 Найти цитируемый пост)
...
push ax
retf
работает отлично.
на всякий случай напомню, что это аналог не call'а, а jmp'а.

ps. AndNot, можно я откланяюсь? - нет желания вести спор не о чем. smile
PM MAIL   Вверх
AndNot
Дата 4.3.2008, 17:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 28.2.2008

Репутация: нет
Всего: нет



Цитата(dumb @  3.3.2008,  17:22 Найти цитируемый пост)
разговор шел о пакете masm32
Видно мы просто по разному поняли вопрос. Для меня разговор шел о компиляторе масма, взятого из пакета Хатча, но не о самом пакете, что довольно разные вещи, ИМХО. Ну да ладно, проехали smile 
Цитата(dumb @  3.3.2008,  17:22 Найти цитируемый пост)
Цитата(AndNot @  3.3.2008,  05:39 )
Только я почему то этого не заметил

заметь
Да я не о том, твой уровень мне известен smile Я о твоем первом посте, который не содержал ничего, кроме иронии ;) Хотя я, как всегда, опустил некоторые слова из фразы, вот и вышло такое утверждение :unsure: 

Цитата(dumb @  3.3.2008,  17:22 Найти цитируемый пост)
можно я откланяюсь?
Как будто я могу помешать smile Самому уже надоело.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0695 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.