Вопросы по ассемблеру
Decemberunderground
Новичок
6/1/2007, 3:27:41 PM
.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, чего это значит?
.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
Специалист
6/1/2007, 4:37:32 PM
Decemberunderground
Через какую программу следует это запустить чтобы проц её понял?
Что значит "запустить"? Это текст программы, его можно откомпилировать в exe-файл
Я так понял, тебе нужен компилятор асм'а. Ну тут выбирать, собственно, не из чего - только MASM32. Остальные по разным причинам значительно отстают от него.
Скачать его легко, он валяется в инете на каждом углу, размер - наверно около 4 МБ.
.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
Я не спец по разным диалектам ассемблера, но я бы эту программу переписал так, иначе 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.
В общем, всегда пиши 386 и не парься
Через какую программу следует это запустить чтобы проц её понял?
Что значит "запустить"? Это текст программы, его можно откомпилировать в exe-файл
Я так понял, тебе нужен компилятор асм'а. Ну тут выбирать, собственно, не из чего - только MASM32. Остальные по разным причинам значительно отстают от него.
Скачать его легко, он валяется в инете на каждом углу, размер - наверно около 4 МБ.
.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
Я не спец по разным диалектам ассемблера, но я бы эту программу переписал так, иначе 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.
В общем, всегда пиши 386 и не парься
barrakuda
Профессионал
6/1/2007, 8:39:58 PM
Собственно, это пример из учебника по асму под вин32.
Там дальше всё объяснено: "Чуть-чуть не забыл рассказать, как надо компилировать программы. Для этого вам надо написать текст программы на ассемблере и сохранить в файл с расширением *.asm. Потом надо ассемблировать его."
Автор приводит пример имея в виду TASM32. Есть ещё MASM и FASM, у каждого свои особенности.
Там дальше всё объяснено: "Чуть-чуть не забыл рассказать, как надо компилировать программы. Для этого вам надо написать текст программы на ассемблере и сохранить в файл с расширением *.asm. Потом надо ассемблировать его."
Автор приводит пример имея в виду TASM32. Есть ещё MASM и FASM, у каждого свои особенности.
maxdiversexnarod1
Специалист
6/1/2007, 11:01:40 PM
А в чём тогда состоит вопрос? Качать TASM и компилить как написано в книге.
Decemberunderground
Новичок
6/2/2007, 10:39:18 PM
Сорри не дочитал чуть-чуть. Кстати не дадите ссылку на этот самый Tasm32.
maxdiversexnarod1
Специалист
6/3/2007, 4:20:07 AM
Decemberunderground
Ну блин в интернете до фига ссылок же.
Ладно, вот ссылка с одного хорошего сайта:
WASM
(рекомендую сайт, если серьёзно заинтересуешься низкоуровневым программированием)
Ну блин в интернете до фига ссылок же.
Ладно, вот ссылка с одного хорошего сайта:
WASM
(рекомендую сайт, если серьёзно заинтересуешься низкоуровневым программированием)
Decemberunderground
Новичок
6/3/2007, 6:34:37 PM
Ну блин одолжений делать не надо, но всё равно спасибо.
maxdiversexnarod1
Специалист
6/3/2007, 7:47:55 PM
Просто гугль на запрос "tasm32 download OR скачать" выдаёт 1 740 ссылок. Всё-таки есть из чего выбрать
c0d3r
Интересующийся
6/26/2007, 9:32:00 PM
качаем MASM32+RadAsm, читаем туторы на васме и радуемся :)
alexxisr
Новичок
11/7/2007, 10:55:35 AM
народ, а зачем вообще нужен ассемблер?
сегодняшние оптимизаторы сделают все лучше и быстрее.
а если реально нужно использовать специфичные команды проца - можно юзать ассемблерные вставки в C или pascal.
сегодняшние оптимизаторы сделают все лучше и быстрее.
а если реально нужно использовать специфичные команды проца - можно юзать ассемблерные вставки в C или pascal.
do-do
Мастер
11/7/2007, 2:49:28 PM
(alexxisr @ 07.11.2007 - время: 07:55)
сегодняшние оптимизаторы сделают все лучше и быстрее.
Мда...
Вообщем то низкоуровневые драйверы пишутся, покрайней мере, сбольшими вставками ассемблерного кода. это раз, ассемблер не так уж и труден - это два. Без знания ассемблера ТРУДНО исследовать ЧУЖУЮ прогу три :) Ну и четыре УТОЧНИ в какой области тебе ассемблер мешает
сегодняшние оптимизаторы сделают все лучше и быстрее.
Мда...
Вообщем то низкоуровневые драйверы пишутся, покрайней мере, сбольшими вставками ассемблерного кода. это раз, ассемблер не так уж и труден - это два. Без знания ассемблера ТРУДНО исследовать ЧУЖУЮ прогу три :) Ну и четыре УТОЧНИ в какой области тебе ассемблер мешает
alexxisr
Новичок
11/8/2007, 11:45:48 AM
мне ассемблер не мешает.
в школе помню целиком игрушки на нем писал.
правда больше для понтов - типа я не только бейсик знаю.
драйвера под unix пишутся больше на С.
для иследования чужих программ гораздо приятнее почитать исходники с комментариями.
учиться программировать по-моему надо начинать именно с ассемблера.
только там приходит понимание что же происходит в компьютере.
а собственно программировать лучше на высокоуровневых.
они позволяют не думать о рутинных операциях.
в школе помню целиком игрушки на нем писал.
правда больше для понтов - типа я не только бейсик знаю.
драйвера под unix пишутся больше на С.
для иследования чужих программ гораздо приятнее почитать исходники с комментариями.
учиться программировать по-моему надо начинать именно с ассемблера.
только там приходит понимание что же происходит в компьютере.
а собственно программировать лучше на высокоуровневых.
они позволяют не думать о рутинных операциях.
do-do
Мастер
11/8/2007, 9:14:12 PM
про иерархию языков надо Таненбаума почитать :) Так и под Виндой пишут на С :) Но опять же аппаратно ориентированные вещи - приходится на ассемблере хоть там хоть там
contravene
Новичок
11/28/2007, 11:12:09 PM
Сейчас в индустрии программирования стока новых технологий (взять тот-же самый framework 1.1/2.0/3.0/3.5), что изучение ассемблера все равно что, даже не знаю, изучение лука с каменными стрелами в армии вместа новейших типов автоматов и пулеметов.
Мой совет - если хочешь добиться успеха в программировании начинай с языков предложенных майкрософтом в Visual Studio (C#, Visual Basic, C++, J#) - плюс освой какую-нить технологию (ASP, MFC - в зависимости от того где хочешь профилировать) - на ассемблере будешь работать в час по чайной ложке да и почти ни где знание ассемблера не требуется.
Мой совет - если хочешь добиться успеха в программировании начинай с языков предложенных майкрософтом в Visual Studio (C#, Visual Basic, C++, J#) - плюс освой какую-нить технологию (ASP, MFC - в зависимости от того где хочешь профилировать) - на ассемблере будешь работать в час по чайной ложке да и почти ни где знание ассемблера не требуется.
alexxisr
Новичок
12/14/2007, 12:34:04 AM
помню, увидел на коробке с visual studio надпись -
"на 99% совместима со стандартом"
желание писать на заведомо неправильном языке пропало
сайты на asp у меня очень часто не открываются оперой - видимо хотят что-то специфическое от IE
хотя может это просто мне так фатально не везет
"на 99% совместима со стандартом"
желание писать на заведомо неправильном языке пропало
сайты на asp у меня очень часто не открываются оперой - видимо хотят что-то специфическое от IE
хотя может это просто мне так фатально не везет