|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.04.2011, 08:44 | #1 |
Пользователь
Регистрация: 07.05.2010
Сообщений: 34
|
Компиляция
Доброго времени суток. Немогу откомпилировать простейшую 32 битную программу на MASMе:
Код:
Код:
Хотелосьбы разобраться в компиляции 32 битной программы без подключаемых библиотек и программных модулей.
Если бы все люди были идеальны, то любого человека можно было бы заменить любым другим...
|
16.04.2011, 09:00 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Код:
|
16.04.2011, 12:26 | #3 |
Адский тунеядец
Форумчанин
Регистрация: 11.06.2010
Сообщений: 164
|
По моему, у тебя половина программа 16-бит а половина 32-бит. Ты задаешь модел flat что означает 32-бита, а потом в коде вызываешь прерывания. Но помимо этого пытаешься загрузить в 16-битный регистр dx адрес. Для доса это будет правильно, так как там смещения, а для 32 бит это не правильно, потому что адрес уже больше регистра dx. Т.е. Надо вместо dx написать edx.
|
16.04.2011, 13:11 | #4 |
Пользователь
Регистрация: 07.05.2010
Сообщений: 34
|
dx изменил, в целом программа заработала, но есть две непонятные проблемы: При компиляции овыводится ошибка L4021: no stack segment, но exe файл создается и запускается.
программа не совсем коректно работает, перед выводом заветной строки выводится без малого две строки всякого мусора, как я понял код программы воспринимаемая как текст. Почему? Ни какой арифметики со смещением msg не производилось вроде...
Если бы все люди были идеальны, то любого человека можно было бы заменить любым другим...
|
16.04.2011, 13:32 | #5 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Даю подсказку: вы кое-что забыли в конце определения строки
|
16.04.2011, 14:21 | #6 |
Пользователь
Регистрация: 20.04.2009
Сообщений: 58
|
Судя по программе, в команде линковщика вроде надо указывать SUBSYSTEM:CONSOLE, а не SUBSYSTEM:WINDOWS
|
16.04.2011, 18:55 | #7 |
Пользователь
Регистрация: 07.05.2010
Сообщений: 34
|
Никел, проблему это не решает...
Народ неужели ни кто не поможет с прогой разобраться, вот файлы для эксперементов: exe.rar p21x $-я конечно заметил поздновато, но пару строк выводится ДО надписи, а значит это не та ошибка)))
Если бы все люди были идеальны, то любого человека можно было бы заменить любым другим...
Последний раз редактировалось Studik; 16.04.2011 в 19:07. |
17.04.2011, 10:06 | #8 |
Адский тунеядец
Форумчанин
Регистрация: 11.06.2010
Сообщений: 164
|
Я посмотрел что ты там делал, и честно говоря ты все в одну кучу смешал
Опять же работаешь с сегментами, а используешь 32 битные регистры ( edx) Ну а теперь об ошибках. Для начала твой код: Код:
Код:
Код:
Код:
Код:
Код:
Код:
.code тут тоже не нужно, так как в самом начале программы ты написал: Код:
CSEN ends И ещё, меня как то смущают двойные апострофы в месте объявления области памяти для сообщения. Т.е. я думаю в этой строке Код:
Код:
|
17.04.2011, 10:54 | #9 | |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Ibanez Wizard, не то, чтобы хотелось вмешиваться, но...
Цитата:
Расскажите человеку про апи функи ) |
|
17.04.2011, 11:50 | #10 | |
Адский тунеядец
Форумчанин
Регистрация: 11.06.2010
Сообщений: 164
|
Цитата:
Если так, то вместо прерываний дл вывода сообщения, нужно использовать API функции (раз 32 битка). Для вывода сообщения нужно использовать функцию MessagBox, а для выхода ExitProcess...В общем это совсем другая тема, которой нужно учиться. Я просто пример такой программы для наглядности приведу: Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Компиляция | Андрей 93 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 6 | 17.12.2010 15:52 |
компиляция | DeDoK | Общие вопросы Delphi | 4 | 02.11.2010 18:21 |
Компиляция | BlincAttack | Общие вопросы .NET | 12 | 20.09.2009 23:35 |
компиляция | DarK_NighT | Общие вопросы Delphi | 1 | 25.03.2009 13:18 |
Компиляция в Qt | Diman2008 | Qt и кроссплатформенное программирование С/С++ | 6 | 16.11.2008 20:57 |