Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Возможности ассеблера


Автор: Loginanton 11.12.2007, 13:56
Интересует такая вещь: вот разузнал, что ассемлер это команды процессору, так вот мне интересно можно ли на ассемблере решить любую задачу? Тоесть, можно ли у примеру на ассемблере игры делать или браузеры делать и т.д.?

Автор: SABROG 11.12.2007, 15:18
Все это можно. Не стоит забывать, что любые программы в итоге компилируются, по сути, в ассемблер. Пищи в гугле слово MenuetOS, операционка написанная на ассемблере (fasm), там и браузер и игры и сервера, все это умещается на одной дискетке.

Сам на ассемблере писал приложения работающие с базами данных BDE/ADO, с Lua скриптами, клиент-серверные программы, ботов для игр, irc, DirectConnect,  работа с XML через подключение готовой dllки libxml2, работа с регулярными выражениями через подключение regexp dllки, написание COM клиентов/серверов, работа с MAPI. В общем все ограничивается только твоей фантазией, а написать можно любую программу. 

Из недостатков - много писанины (обычно решается через готовые каркасы и fasmoвскими макросами), ограниченное количество библиотек с нестандартными контролами, которых нет в windows, например того же splitter'a нет в винде. Отсутствие системы классов в том виде в котором мы привыкли в C++, есть некоторые "породии" на макросной основе, но недостаточно гибкие. Компиляторы слабенько оптимизируют код, поэтому эту задачу приходится брать на себя.

Если обходиться одними стандартными средствами windows, то программы будут весить считанные килобайты, не будут жрать много памяти и при должной оптимизации работать быстро. 

У меня одно время работал WEB сервер, который весил 8кб. Ни требовалось никакой установки и настройки. Только выбрать директорию с htm файлами, без CGI правда, но для homepage сойдет.

Автор: Loginanton 11.12.2007, 15:30
SABROG спасибо огромное за ответ. Я конечно понимаю что не потеме, но всё таки подскажите плз какие нибудь ресурсы по изучению ассемблера, а то излазил кучу сайтов и всё равно не могу понять синтаксиса (ну всех этих команд)

Автор: ksili 11.12.2007, 15:34
Посмотрите на www.wasm.ru

Автор: anwe 11.12.2007, 21:14
Я думаю wasm для начало будет тяжеловато. Начни с книги Зубкова "Ассемблер для DOS, Windows и Unix" - хорошая книга.

Автор: MAKCim 11.12.2007, 22:17
Цитата(anwe @  11.12.2007,  21:14 Найти цитируемый пост)
Я думаю wasm для начало будет тяжеловато. Начни с книги Зубкова "Ассемблер для DOS, Windows и Unix" - хорошая книга. 

 smile 

Автор: SABROG 12.12.2007, 12:27
Лет 5 назад разговаривал с Зубковым в fido, на эхе ru.asm (вроде бы). Предлагал мне написать книгу по ассемблеру в windows, с освещением написания vxd, wdm, sys драйверов, разницы между win16, win32 программами и т.п. Говорил, что у него нет времени, но обещался помочь в издании, сказал, что с продажи книги идет 8% автору, а это не мало. Потом, правда, идея угасла ;)

Автор: cardinal 13.12.2007, 00:17
SABROG, не обижайся - это зависть! smile

По теме: 
Loginanton, зайди на сайт www.g24-tec.com, там есть
http://g24-tec.com/product_info.php/products_id/31
Там как бы на более простом устройстве, чем компьютер, объясняется как и что.

Главное не забывать, что ассемблер это двигание чисел туда сюда и всякие прыжки для достижения определенного результата... smile 

Автор: Loginanton 15.12.2007, 18:19
cardinal я английский не очень хорошо знаюsmile А есть какие нибудь сайты или книги по ассемблеру для нубов? А то много чего вычитал, но всё таки пока много чего непонятно. Уже неделю или больше читаю уроки, статьи по ассемблеру, а простенькую прогу сделать не получается. smile 

Автор: anwe 15.12.2007, 23:53
Я же подсказывал: http://dump.ru/files/2/20000845/

Автор: Loginanton 19.12.2007, 15:48
Можете подсказать как код ассмеблера компелировать в .exe ?

Автор: ksili 19.12.2007, 15:52
зависит от ассемблера
В Зубкове описано для TASM, MASM и WASM


Loginanton, тебе же все пишут - Зубкоооов!  smile 

Автор: Loginanton 19.12.2007, 15:55
Дык я читаю прям сейчас вот Зубкова. Но пока как компелировать невидел. Наверно ещё не дочитал)


Люди обьясните, я чёто не понимаю:
Вот скачал http://www.masm32.com/download/m32v9r.zip, запукаю командную строку из под него, далее прописываю ml /с hello-2.asm (это я из книжонки, типо повторить хочу), а он пишет мол ml не является командой. Обьясните плиз подробно как получить из файла .asm экзешник.

Автор: ksili 21.12.2007, 07:05
Что значит "запускаю командную строку из-под него"?
Если винда пишет, что ml не является командой, значит она не видит такого экзешника. Закинь ml и свой asm-файл в одну папку и компилируй (соответственно, сначала надо в cmd зайти в эту папку)

Автор: Loginanton 2.1.2008, 18:25
Подскажите плиз что такое .data .data? .const .code и для чего они, и вообще обязательно ли их использовать, так же подскажите пожалуйста что обозначают start и end    start  в следующем коде:
Код

start: 
     push 0h 
         push offset Msg 
         push offset Ttl 
         push 0h 
         call MessageBoxA 
         push 0h 
         call ExitProcess 
end    start 

Автор: MAKCim 2.1.2008, 20:12
Loginanton
.data - секция данных
.const - секция данных только для чтения
.code - секция кода
для чего они? для описания функционально разных сегментов выходного файла
использовать их или нет зависит от конечной цели
start в данном случае определяет символ в секции кода, а также его идентификатор
каждому идентификатору поставлен в соответствие адрес
любая ссылка (в инструкциях перехода и т. д) на идентификатор в процессе компиляции (или компоновки)
преобразуется в соответствующий адрес
end start определяет разность между текущим адресом и start (используется для хранения дополнительной информации о символе)
конструкция не обязательна

Автор: Loginanton 3.1.2008, 20:31
А можешь как нибудь объяснить на более лёгком языке, обьяснить на пальцах. А то то что ты написал я уже читал во всяких книгах по асму

Автор: cardinal 3.1.2008, 20:38
Loginanton, совет только один: смотри примеры, и читай то, что написал MAKCim пока не поймешь - других вариантов нет... 

Автор: MAKCim 3.1.2008, 20:49
Цитата(Loginanton @  3.1.2008,  20:31 Найти цитируемый пост)
А можешь как нибудь объяснить на более лёгком языке, обьяснить на пальцах. А то то что ты написал я уже читал во всяких книгах по асму 

объяснил как мог, проще не представляю как

Автор: Loginanton 3.1.2008, 21:16
Цитата

start в данном случае определяет символ в секции кода, а также его идентификатор
каждому идентификатору поставлен в соответствие адрес
любая ссылка (в инструкциях перехода и т. д) на идентификатор в процессе компиляции (или компоновки)
преобразуется в соответствующий адрес
end start определяет разность между текущим адресом и start (используется для хранения дополнительной информации о символе)


Вот этот момент можешь поподробнее

Автор: cardinal 3.1.2008, 22:15
Для того, чтобы запустить подпрограмму в ассемблере тебе нужен адрес "прыжка" туда. То есть то куда ты хочешь jmp делать. Для этого в коде ты прописываешь метку (например start) и потом можешь сделать
Код

jmp start

Автор: Loginanton 4.1.2008, 20:52
Вот код одной програмки из учебника по асму:
Код

mov  ah,9
mov  dx,10Dh
int  21h
mov  ah,10h
int  16h
int  20h


Вот подскажите как она работает, а то я в ней кроме присваивания переменным значений ничего не увидел, и не понимаю каким образом она выводит какое то окно да ещё и звуки издаёт)

Автор: MAKCim 4.1.2008, 20:56
Цитата(Loginanton @  4.1.2008,  20:52 Найти цитируемый пост)
Вот код одной програмки из учебника по асму:

читай в учебнике

Автор: Loginanton 4.1.2008, 21:02
Так там просто написан код, типо первая прога, нада просто записать код в блокноте.

Автор: MAKCim 4.1.2008, 21:05
Loginanton
без объяснения?
не верю

Автор: Loginanton 4.1.2008, 21:36
Ну там обьяснения к командам, а вот как работает сама программа не написано.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)