0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 2
|
||||||
1 | ||||||
Вывод на экран в SASM19.03.2018, 16:42. Показов 9727. Ответов 15
Метки нет (Все метки)
Добрый день. У меня на компе стоит Linux, пишу программы на языке ассемблера в SASM (компилятор в настройках - MASM, ибо учим именно его). Через Wine все отлично работает. Однако есть проблема - в этой вариации даже стандартный Hello World не дает вывода слов на экран. В винде нас учат пользоваться WriteConsoleA и GetStdHandle, и преподаватель говорит, что моя проблема может сводиться к дексриптору вывода - но гугление таковых для Linux ничего стоящего не дало. При этом в проектах SASM можно найти пример Hello World'а, который выводит заветный текст:
0
|
19.03.2018, 16:42 | |
Ответы с готовыми решениями:
15
SASM-вывод из сопроцессора При работе в IDE SASM программа выводит текст, при самостоятельном пуске - экран пустой (NASM, Ubuntu) Не могу понять как делать вывод на экран структуры STUDENT на заполнение и вывод данных на экран Среда разработки SASM |
Модератор
|
||||||
19.03.2018, 16:54 | 2 | |||||
Запустил в Windows эту программу - вывела строку и тут же закрылась.
Попробуйте сделать задержку на ввод Enter. Например, как в этой теме Реализация поиска k-го наименьшего элемента в массиве Или сейчас выделю из него минимальный пример. Добавлено через 4 минуты Только пути к inc и lib поменяйте на собственные и, возможно, сократите их количество
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
19.03.2018, 21:04 | 3 |
Вместо
WriteConsole и ReadConsole лучше использовать WriteFile и ReadFile (параметры те же, так что можно просто тупо заменить их и всё). Суть в том, что при перенаправлении вывода в файл WriteConsole ничего не выведет ни в файл, ни на экран...
1
|
ФедосеевПавел
|
19.03.2018, 21:13
#4
|
Не по теме: Да, это известный факт, но в библиотеках masm32 используется WriteConsole и именно по этим примерам я и учился. Может быть и не только я. Замена на эквивалент вызовет замешательство у новичков. Кроме того, иногда просят менять цвет и позицию символов - это возможно при использовании WriteFile?
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||||||||
19.03.2018, 22:30 | 5 | ||||||||||
Для студентов можно вообще использовать printf/scanf (из тех работ, что делал студентам, проблем не было).
С цветами всё в порядке:
Ну и с позицией тоже всё нормально:
2
|
3406 / 1825 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
|
|
19.03.2018, 22:39 | 6 |
0
|
Прощай, Мир!
1672 / 830 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
|
||||||
20.03.2018, 01:51 | 7 | |||||
если да, то флаг тебе в руки..
0
|
Модератор
|
|
20.03.2018, 07:09 | 8 |
Не по теме: proc3nt, зачем вы оффтопите? Andrew104109993, а не может случится так, что вы компилируете программу не как консольную, а как GUI (не те параметры командной строки у компоновщика - link)?
0
|
Jin X
|
20.03.2018, 11:17
#9
|
0
|
ФедосеевПавел
|
20.03.2018, 12:55
#10
|
Не по теме: А-а-а! Ну, тогда наоборот, молодец. На NASM, программа под Linux - при ответе на другой вопрос топикстартера - нет, это не офтоп.
0
|
0 / 0 / 0
Регистрация: 19.03.2018
Сообщений: 2
|
|
20.03.2018, 20:15 [ТС] | 11 |
Нет, я хочу продолжить работать в SASM'е, который запускается словно приложение для винды. Идея в том, что на чистом линуксе я так и не допер, как писать/компилировать/отлаживать, а Wine и SASM дает, и OllyDbg.
(Что тут остальные написали - не очень хорошо понятно. Кого слушать, и что конкретно писать, простите...)
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
||||||
20.03.2018, 20:47 | 12 | |||||
Andrew104109993, учитесь чётко выражать свои мысли: что именно вам нужно... вместо пространных бесед.
Потому что лично я до конца не понял. Это пример на MASM32. Чтобы запустить его в SASM, нужно зайти в настройки и выбрать MASM. Если нужен пример на NASM, тогда пишите так:
0
|
Модератор
|
|
20.03.2018, 20:50 | 13 |
Слушать всех по очереди.
Начните с меня. У меня несколько мыслей. 1. При компиляции вы ошиблись и скомпилировали программу, как GUI приложение, а нужно как консольное. 2. Возможно программа выполняется, но консольное окно быстро закрывается - нужно добавить паузу (код в моём сообщении - только пути к библиотекам скорректируйте).
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
|
20.03.2018, 20:56 | 14 |
Вообще, SASM есть и под Linux, поэтому, по идее, этот же исходник (на NASM) должен компилиться и под Linux в соответствующей версии SASM'а.
Добавлено через 2 минуты Настройки в SASM для MASM по умолчанию установлены в компиляцию консольной версии. При запуске проги из-под SASM вывод идёт в специальное окно, которое после завершения программы никуда не девается. Добавлено через 3 минуты В какой такой этой вариации? Какой такой стандартный Hello World? Если не даёт, то что происходит (ошибка компиляции, ошибка при запуске, просто запускается и сразу выходит, etc...)? В общем...
2
|
Модератор
|
|
20.03.2018, 21:24 | 15 |
Jin X, Andrew104109993, тогда следующее соображение
3. Перенаправление вывода WriteConsole невозможно, поэтому и не выводится в дополнительном окне. Как уже ранее отмечал Jin X - можно заменить WriteConsole на WriteFile, а ReadConsole на ReadFile.
0
|
Asm/C++/Delphi/Py/PHP/VBA
|
|||||||||||
20.03.2018, 21:49 | 16 | ||||||||||
Макрос
print использует функцию StdOut библиотеки masm32.lib, которая использует WriteFile .macros.asm:
(зачем промежуточную переменную sl сделали, когда можно было сразу eax передавать?)
1
|
20.03.2018, 21:49 | |
20.03.2018, 21:49 | |
Помогаю со студенческими работами здесь
16
SASM Получить значение выражения Как научиться работать в среде Sasm? Ubuntu 11.10 Sasm+Squid+Samba Настройка сетевых карт вывод на экран случайного одномерного массива,ввод с клавиатуры одномерного массива и вывод его на экран.и все это в одной проге.как это сделать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |