Decemberunderground | ||||||
.386 .model flat extrn ExitProcess:PROC extrn MessageBoxA:PROC .data Ttl db "First ASSEMBLER program",0h Msg db 'Hello, World!!!!',0h .code start: push 0h push offset Msg push offset Ttl push 0h call MessageBoxA push 0h call ExitProcess end start Через какую программу следует это запустить чтобы проц её понял? И ещё модель проца 386, чего это значит? |
||||||
maxdiversexnarod1 | ||||||
Decemberunderground
Что значит "запустить"? Это текст программы, его можно откомпилировать в exe-файл ![]() Я так понял, тебе нужен компилятор асм'а. Ну тут выбирать, собственно, не из чего - только MASM32. Остальные по разным причинам значительно отстают от него. Скачать его легко, он валяется в инете на каждом углу, размер - наверно около 4 МБ.
Я не спец по разным диалектам ассемблера, но я бы эту программу переписал так, иначе MASM'ом не компилируется: .386 .model flat, stdcall option casemap: none include \masm32\include\windows.inc include \masm32\include\kernel32.inc include \masm32\include\user32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib .data Ttl db "First ASSEMBLER program",0h Msg db 'Hello, World!!!!',0h .code start: push 0h push offset Msg push offset Ttl push 0h call MessageBoxA push 0h call ExitProcess end start Как видишь, я подправил только "оформление" - заголовок, инклуды. Можно было вместо этого исправить extern'ы, но там появится дополнительная сложность, которая, думаю, тебе ни к чему.
Это всего лишь означает, что в программе используются инструкции процессора только из набора проца 386. Т.е. программа будет работать на всех процах, начиная с 386. В общем, всегда пиши 386 и не парься ![]() |
||||||
barrakuda | ||||||
Собственно, это пример из учебника по асму под вин32. Там дальше всё объяснено: "Чуть-чуть не забыл рассказать, как надо компилировать программы. Для этого вам надо написать текст программы на ассемблере и сохранить в файл с расширением *.asm. Потом надо ассемблировать его." ![]() Автор приводит пример имея в виду TASM32. Есть ещё MASM и FASM, у каждого свои особенности. |
||||||
maxdiversexnarod1 | ||||||
А в чём тогда состоит вопрос? Качать TASM и компилить как написано в книге. | ||||||
Decemberunderground | ||||||
Сорри не дочитал чуть-чуть. Кстати не дадите ссылку на этот самый Tasm32. |
||||||
maxdiversexnarod1 | ||||||
Decemberunderground Ну блин в интернете до фига ссылок же. Ладно, вот ссылка с одного хорошего сайта: WASM (рекомендую сайт, если серьёзно заинтересуешься низкоуровневым программированием) |
||||||
Decemberunderground | ||||||
Ну блин одолжений делать не надо, но всё равно спасибо. | ||||||
maxdiversexnarod1 | ||||||
Просто гугль на запрос "tasm32 download OR скачать" выдаёт 1 740 ссылок. Всё-таки есть из чего выбрать ![]() |
||||||
c0d3r | ||||||
качаем MASM32+RadAsm, читаем туторы на васме и радуемся :) | ||||||
alexxisr | ||||||
народ, а зачем вообще нужен ассемблер? сегодняшние оптимизаторы сделают все лучше и быстрее. а если реально нужно использовать специфичные команды проца - можно юзать ассемблерные вставки в C или pascal. |
||||||
do-do | ||||||
Мда... Вообщем то низкоуровневые драйверы пишутся, покрайней мере, сбольшими вставками ассемблерного кода. это раз, ассемблер не так уж и труден - это два. Без знания ассемблера ТРУДНО исследовать ЧУЖУЮ прогу три :) Ну и четыре УТОЧНИ в какой области тебе ассемблер мешает |
||||||
alexxisr | ||||||
мне ассемблер не мешает. в школе помню целиком игрушки на нем писал. правда больше для понтов - типа я не только бейсик знаю. драйвера под unix пишутся больше на С. для иследования чужих программ гораздо приятнее почитать исходники с комментариями. учиться программировать по-моему надо начинать именно с ассемблера. только там приходит понимание что же происходит в компьютере. а собственно программировать лучше на высокоуровневых. они позволяют не думать о рутинных операциях. |
||||||
do-do | ||||||
про иерархию языков надо Таненбаума почитать :) Так и под Виндой пишут на С :) Но опять же аппаратно ориентированные вещи - приходится на ассемблере хоть там хоть там | ||||||
contravene | ||||||
Сейчас в индустрии программирования стока новых технологий (взять тот-же самый framework 1.1/2.0/3.0/3.5), что изучение ассемблера все равно что, даже не знаю, изучение лука с каменными стрелами в армии вместа новейших типов автоматов и пулеметов. Мой совет - если хочешь добиться успеха в программировании начинай с языков предложенных майкрософтом в Visual Studio (C#, Visual Basic, C++, J#) - плюс освой какую-нить технологию (ASP, MFC - в зависимости от того где хочешь профилировать) - на ассемблере будешь работать в час по чайной ложке да и почти ни где знание ассемблера не требуется. Это сообщение отредактировал contravene - 28-11-2007 - 21:14 |
||||||
alexxisr | ||||||
помню, увидел на коробке с visual studio надпись - "на 99% совместима со стандартом" желание писать на заведомо неправильном языке пропало сайты на asp у меня очень часто не открываются оперой - видимо хотят что-то специфическое от IE хотя может это просто мне так фатально не везет |