|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 15
|
|||||||||||
FASM Не работает программа02.04.2022, 19:49. Показов 3071. Ответов 18
Только начал изучать assembler(FASM). Решил написать программу из учебника, но она не заработала. Как можно решить проблему? Может я что-то делаю не так?
0
|
|||||||||||
| 02.04.2022, 19:49 | |
|
Ответы с готовыми решениями:
18
Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает не пойму в чем дело, программа должна работать, но она черт побери не работает :( (программа по работе с реестром) |
|
Модератор
|
|
| 02.04.2022, 20:17 | |
|
Есть несколько операционных систем, есть несколько режимов работы процессора (16, 32, 64), есть несколько форматов исполняемых файлов, есть несколько компиляторов ассемблера со своим уникальным синтаксисом. Путать и смешивать нельзя - в неправильном сочетании работать не будет.
Для какой операционной системы пишите программу?
0
|
|
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 15
|
|
| 02.04.2022, 20:27 [ТС] | |
|
Пишу на windows 10.
0
|
|
|
Модератор
|
||||||
| 02.04.2022, 21:16 | ||||||
|
Для Windows x64 пример программы на FASM будет следующим
Соглашение о вызове (передаче параметров): https://docs.microsoft.com/ru-... w=msvc-160
0
|
||||||
|
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
|
||
| 02.04.2022, 22:41 | ||
|
sh1Fr,
проверьте не включена ли кириллица в данную строку. перепишите на латинице еще раз. ФедосеевПавел, прерывания же досовские. Добавлено через 1 минуту
0
|
||
|
Модератор
|
|
| 02.04.2022, 22:59 | |
|
Исходник топикстартера жутчайшая смесь кода для DOS и формата исполняемого файла для Windows i386 (32 разряда). Она не будет работать.
Если нужна программа для DOS, то потребуется эмулятор DOS или виртуальная машина с DOS. Значит это должно быть в учебнике. Да и голова у топикстартера будет быстрее работать, когда поймёт, что удачная компиляция и выполнение программы, написанной на ассемблере, зависит от: - режима процессора (16/32/64, Real/Protect mode) - операционной системы - названия компилятора - формата исполняемого файла и соответственно состава и структуры исходника Формально, мой исходник скомпилируется и выполнится из IDE FASM. Перед публикацией кода я уточнил целевую операционку.
0
|
|
|
6 / 6 / 5
Регистрация: 21.10.2021
Сообщений: 31
|
|
| 02.04.2022, 23:12 | |
|
В диалекте FASM нету offset.
2
|
|
|
programmer
2391 / 525 / 69
Регистрация: 01.06.2011
Сообщений: 3,639
|
|
| 02.04.2022, 23:55 | |
|
RatOSER,
и в самом деле
0
|
|
|
Модератор
|
|||||||||||
| 03.04.2022, 00:35 | |||||||||||
|
И программа для DOS, которую нужно запускать через DOSBox имеет формат MZ
1
|
|||||||||||
|
Эксперт Hardware
|
|||||||
| 03.04.2022, 07:29 | |||||||
Сообщение было отмечено Mikl___ как решение
Решениеdata\const\bss с одинаковыми атрибутами?2. format console + MessageBox() - отличное решение!3. call используют только не оторвавшиеся от досовской сиськи ламеры - для этого есть invoke.4. Если уж воткнул в шапку инклуд win64ax.inc, то потрудись заглянуть в его содержимое. 5. Что за оформление секции-импорта? Всю эту шнягу заменяет всего один макрос .end start. В общем - полное витание в облаках, но в тему залезть обязательно нужно. sh1Fr, вот типичный пример вывода текста и числа 102345 в виндовое окно MessageBox(). Вторая функция wsprintf() переводит число в строку, и записывает результат в буфер секции-данных. Инклуд "win32ax.inc" позволяет задавать укороченные директивы типа .data, а так-же использовать макрос .end, чтобы одной строчкой оформить всю секцию импорта функций, из системных библиотек DLL:
2
|
|||||||
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 15
|
||||||
| 03.04.2022, 10:10 [ТС] | ||||||
|
Спасибо, работает. Только остался один вопрос. При компилировании мне выходит такая ошибка:
0
|
||||||
|
6 / 6 / 5
Регистрация: 21.10.2021
Сообщений: 31
|
|
| 03.04.2022, 10:12 | |
|
Ошибки нет, все нормально скомпилировалась
1
|
|
|
Эксперт Hardware
|
||
| 03.04.2022, 10:27 | ||
|
Вам нужно использовать из той-же папки файл FASMW.EXE для виндовс, и скопировав в его окно исходник, нажать клавишу F9.
2
|
||
|
0 / 0 / 0
Регистрация: 30.07.2020
Сообщений: 15
|
|
| 03.04.2022, 10:29 [ТС] | |
|
Всё понял, спасибо
0
|
|
|
Модератор
|
|||||||||||||||
| 03.04.2022, 12:36 | |||||||||||||||
|
Сейчас не найду это соглашение, но его смысл следующий - в data инициализированные данные, в bss неинициализированные (они не влияют на размер исходника, секция формируется операционкой при запуске программы), в const содержатся неизменяемые данные типа строк (это элемент защиты целостности программы). И если новичок узнает о таких секциях - разве хуже? Видел, что вы сваливаете всё в один сегмент данных, у студентов видел даже вариант сваливания в сегмент кода - так тоже можно для достижения некоторых целей. Приведите свой пример и поясните различия, какие ошибки или неточности устранены тем или иным способом.
Различие проявляется в создании (console) или отсутствии (GUI) консольного окна при запуске программы. Для консольной программы можно использовать связку wsprintf+WriteConsole (WriteFile) или printf. Для демонстрации различий между DOS и Windows программами я решил вывод осуществить во всплывающее окно. Да, признаю, что в данном случае использование формата консольной программы - небрежность. Да вы что, не знаете, что в однобортном сейчас уже никто не воюет?
Виноват! Не уследил! Исправлюсь! По поводу использования макросов для сокращения и объявления строк из секции кода - иногда удобно, иногда не удобно. В данной ситуации я счёл необходимым показать "потроха" обращения к операционке, наиболее интересный момент при вызове wsprintf - количество параметров превышает количество регистров и параметры необходимо размещать в стеке. Мой исходник содержит ошибку - обратно не освобождаю фрейм стека. И балансирую на грани разрушения содержимого стека. Этого можно было бы избежать, применяя макрос frame, но у меня не разработка на скорость набора, поэтому все манипуляции со стеком наглядно показаны. Просмотрите ещё раз собственный пример. Как понимаю - это заготовка для последующего изучения отказа в доступе к памяти.
0
|
|||||||||||||||
|
Эксперт Hardware
|
||||||
| 03.04.2022, 14:08 | ||||||
.data, а остальные-то зачем? т.к. именно такого мин.размера в дефолте выделяется секция. То-есть эта комбинация резервирует 4К-буфер. Открыл-бы хоть отладчик, и посмотрел.
1
|
||||||
|
Модератор
|
|
| 03.04.2022, 15:01 | |
|
Все замечания по поводу
.data, буфера нулевой длины, макросов invoke, определения строк из сегмента кода - чистой воды вкусовщина.Буфер нулевой длины - это ошибка, т.к. новички будут копировать код, не зная о неявном правиле Windows, и располагать следом за буфером другие переменные. Мне уже несколько раз в прошлом семестре попадались такие исходники. Я всё гадал, кто же способствует распространению. Тогда уж добавляйте комментарии, что используете хак. Кстати, использовали бы секцию bss и трюк бы не понадобился.
0
|
|
|
Модератор
|
|
| 03.04.2022, 16:24 | |
|
Почему, же... Знаю. Но не использую, т.к. после макросов проблематичен перенос на другой компилятор.
Секции data, const, bss использую сознательно. Макрос invoke для x64 имеется только у FASM, у MASM64 он реализован не компилятором, как раньше, а тоже макросом из включаемого файла, и не все реализации удачны, всё зависит от включаемого файла. Т.е. для x64 много удобнее не использовать его совсем. Анонимные метки @@:, @f, @b - использую.В режиме x64 не использую макрос frame{} - опять же, из-за его отсутствия в MASM64. Секцию импорта использую по инерции, можно избавиться от неё, но пока не мешает. Хотя знакомство с ней, помогло недавно подключить какую-то нештатную динамическую библиотеку. Если на форуме будут рабочие примеры с секцией импорта - хуже не станет. Могу перейти на code/data/const/bss/end - это непринципиально. Макрос proc - использовал бы, но размеры программ малы. Пожалуй и всё - из часто употребимого нечего больше перечислить. Предлагаю, в темах для FASM публиковать по два варианта решения - моё (с базовым синтаксисом) и ваше (с синтаксисом, расширенном макросами). Так будет нагляднее видны различия и достоинства применения наработок во включаемых файлах.
0
|
|
| 03.04.2022, 16:24 | |
|
Помогаю со студенческими работами здесь
19
Программа работает, но частично (косяк с вводом строк и не работает определение принадлежности элемента списка)
Почему программа работает с английскими буквами и не работает с русскими? После AVZ не работает программа Credo Межевой план автоматически закрывается и не работает цифровая подпись Программа не работает правильно. Программа должна брать значения из файла Avto_a.accdb из третьих столбцов таблицы TOYOT Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|