Как на Ассемблере наиболее простым методом вывести хоть что-то в консоль?
Доброй ночи!
Никак не могу понять, как вывести в консоль хотя бы что-то. Win8.1 64x, Tasm 1.4
Stacks segment Stack
db 256 dup(0)
Stacks ends
Datas segment
Datas ends
Codes segment
Assume cs:Codes, ds:Datas
First:
int 21h ; вот тут пробовал массу всего, либо ошибки, либо ничего не пишет, либо какая-то ересь
end First
Как вывести любое значение, неважно откуда (число, символ), просто чтобы вывелось?..
Для начала вам надо определиться под какую архитектуру процессора и под какую ОС вы пишите. 16-битный код для DOS (похоже вы это имели в виду в своем примере) будет собираться и работать под Windows, но это не будет Windows-приложением.
Тут представлены примеры хеллоу-вордов под разные ОС. Несмотря на то, что транслятор другой, несложно переписать под tasm.
я на ассемблерах 3-х архитектур-поколений процессоров отработал (IBM, DEC, Intel), и драйверы для каждой в промышленных проектах работали - так что очень хорошо знаю цену и вредным советам, и не умным советчикам ;-)
Олег Цилюрик: Видел, удивился. Заметил, что там галка зеленая (ответ выбранный как верный), удивился. Но не поленился пролистнуть ниже.
Нет веры зеленым галкам.
abcyu:
В общем, всё это - бред сивой кобылы...
И пользование ассемблером на сегодня - это извращение. Тем более, что в GCC в GNU на этот счёт есть инлайновые ассемблерные вставки (C макросы) - более чем достаточно.
У виндаунов - там особо мазохистские наклонности ... там можно всего ожидать.
Но разговоры это - пустые.
А книгу познакомиться с ассемблером я показал.
На том и закончим.
Олег Цилюрик:
Во-вторых, изучение ассемблера в 2016 году может быть полезно по многим причинам - и по причинам понимания низкоуровневой работы, и откуда вы знаете, кем человек будет работать в будущем? Может он компиляторы будет разрабатывать? Зачем вместо ответа, вы советуете НЕ учить?
В-третьих, если вы будете читать, а не просматривать наискосок, вы обнаружите, что int21 там НЕ используется. По ссылке лежит ДВА примера - один без использования, через c++ библиотеку (через nasm создается obj файл, затем используется link.exe от вижуал студио чтобы подключить printf), второй - с использованием int21, о чем прямо и пишут что второй пример - создание .com файла для DOS.
P.S. Олег, я вас попрошу никогда не отвечать больше на мои комментарии. Вы грубы и заносчивы, и ваши советы полны презрения и снисходительности ко всем участникам тостера
А компиляторы (ну, ... приличные, по крайней мере ;-) ) давно уже никто не пишет с кодогенераций в ассембер - в инструкции RTL, например, как у GCC. А RTL далее кодогенерируется в десяток разных ассемблеров независимо от компилятора.
Олег, я вас попрошу никогда не отвечать больше на мои комментарии.
Никак не возможно ... :-(
Я ведь не на ваши комментарии отвечаю, я ТС оберегаю от ваших глупостей.
Это не для вас пишется... ;-)
(а вы не читайте? ;-) )
> А компиляторы (ну, ... приличные, по крайней мере ;-) ) давно уже никто не пишет с кодогенераций в ассемблер Олег Цилюрик: ...и поэтому разработчику компилятора самому не нужно уметь писать на ассемблере?
> в инструкции RTL, например, как у GCC
Может быть вы знаете, как в gcc генерируются прологи и эпилоги функций, и почему RTL в этом не участвует?
Проблема Олега в том, что он не способен прочитать вопрос. На вопрос "как что-то сделать на чем-то", он со снисхождением говорит что "этим чем-то пользуются только дауны". В результате ответа нет, только оскорбления.
Во-вторых, изучение ассемблера в 2016 году может быть полезно по многим причинам - и по причинам понимания низкоуровневой работы
Да надо было написать программу одну, чтобы проверять наличие пользователей на игровом сервере. И для этого пришлось анализировать трафик, чтобы изобразить игрового клиента, типа это он посылает запрос на сервер. Так там в протоколе кусок, отвечающий за доступные серверы и списки пользователей на них, пересылался в зашифрованном виде. Понадобилась обратная разработка клиента игры, чтобы понять, как он расшифровывает этот кусок трафика.
Так и застрял.
Но после этого стал изучать ассемблер, чтобы можно было дизассемблировать такие вещи.