Что
такое Ассемблер?
Я думаю вам известо
что PC не понимает слов,предложений и т.п.Всё что понятно этой замечательной
машине - это наборы единиц и нолей(пример:0110 ).Зато люди двоичную систему не
сильно любят(за исключением некоторых странных личностей).Поэтому когда первым
програмистам надоело писать программы в двоичных кодах и вводить при помощи
перфорированых карт они быстро замутили hex(шестнадцатиричный) редактор(пример простой дос программы выводящей сообщение: b409ba0901cd21cd2048656c6c6f20776f726c642124).
Написать программу стало легче,но мастера
древности решили что этого мало и изобрели Ассемблер.Теперь команды процессора
можно было записать на понятном людям языке(каждой
дали название.пример простой дос программы выводящей сообщение:
; fasm example of
writing 16-bit COM program
org 100h ;код стартует со
смещения 100h
use16 ;используем
16-битный код
;Вывод текста = 9
mov ah,9;Помещаем в регистр ah значение Вывод текста
mov dx,hello;Помещаем
в dx адресс нащего текста
int 21h ;Вызываем
21 прерывание
int 20h ;Вызываем
21 прерывание-Выходим из программы
hello db 'Hello world!',24h;текст
нашего сообщения )
.Вот тот же пример на C++:
#include <iostream.h>
int main()
{
cout
<< "Hello World!\n" ;
return 0;
}
Затем стали
появлятся новые языки. Они развивались,приобретали популярность и умирали
забытые всеми,а Ассемблер сколько не пытались похоронить,каждый раз выживал .В
чём его секрет?Зачем он вообще нужен?
Зачем он нужен.
Вроде бы есть
столько языков-зачем нам нужен этот Ассемблер?Я думаю так думает основная масса
тех кто собрался учить новый язык.И начинают учить C,С++,Delphi и т.д.То что
"легче".На самом деле лёгкого языка.Что привлекает людей в C,C++?Это
масса халявы.Вам тут и куча библиотек где за вас уже накатали 80 процентов
программы,и гора справочных материалов,и примеры в изобилии.Тебе поручили
создать какуюто прогу-нет проблем.Порылся на свалках исходников,кое-что
переделал под себя(попросту испортил) и вот он наш шедевр,бежим за заслуженым
гонорором(или отметкой если вы студент).
Однако задумайтесь вот над чем.Те кто пользуется FreeBSD знают что загрузчик(та
фича с которой начинается загрузка ОС) этой замечательной ОС помещается в загрузочном
секторе(это крохотные 512 байт).Как вы думаете на чём он написан?Конечно
на C!Ведь все UNIX'оиды пишутся на C.-Скажете вы.И сильно ошибётесь.Такой
маленький загрузчик может быть написан только на Ассемблере.Вот реальный
пример:
1.Программа на Fasm написаная под DOS(*.COM)
|
22 байт
|
2.Программа на Fasm написаная под DOS(*.EXE)
|
59 байт
|
3.Программа на С++ написаная под DOS(*.EXE)
|
23 160 байт
|
Кстати C не намного
лучще.Если вы хотите получить маленькую и шуструю программу-вам необходим
Ассемблер.Вот для чего он используется:
- все, что требует максимальной скорости выполнения: основные компоненты компьютерных игр,
ядра операционных систем реального времени и просто критические участки
программ;
- все, что взаимодействует с внешними устройствами: драйверы, программы, работающие
напрямую с портами, звуковыми и видеоплатами;
- все, что использует полностью возможности процессора: ядра многозадачных операционных систем,
DPMI-серверы и вообще любые программы, переводящие процессор в защищенный
режим;
- все, что полностью использует возможности операционной системы: вирусы и
антивирусы, защиты от несанкционированного доступа, программы, обходящие
эти защиты, и программы, защищающиеся от этих программ;
- и многое другое.
Между прочем уже есть Операционные системы полностью
написаные на Ассемблере(MenuetOS,SolarOS,Miraculix и др.).Они быстро
развиваются и в будущем продемонстрируют миру на что способен Ассемблер.Кроме
того программ написаных на Ассемблере стаёт больше с каждым днём.Появились
среды разработки(IDE),библиотеки для облегчения написания программ,Сайты
посвященные написанию программ на Asm в различных ОС(Windows,DOS,Linux,FreeBsd
и др.)Если вы хотите написать первокласную программу,операционную
сиситему,драйвер,антивирус,классный вирус,кряк,патч,или keygen вам Ассемблер
необходим(но и про С/C++ не забывайте).
Я думаю с этим ясно,переходим к тому что нам будет нужно для изучения этого
великого и могучего богатыря.
Что мы будем изучать?
Я думаю не секрет что новичок всегда хочет получить
программу не затрачивая больших усилий.Поэтому мы будем изучать Win32
програмирование на Fasm.
В ближайщее время мы узнаем:
1.Как вывести MessageBox.Стили MessageBox.
2.Создаём обыкновенное окно.(прога будет иметь свою иконку).
3.Создаём диалоговое окно.
5.Выводим надпись(используя нужный нам шрифт).
4.Выводим картинку(используя BitBlt,StrechBlt и TransparentBlt).
5.Получаем время и выводим его на окно.
6.Проигрываем MP3,WAV,MIDI файлы.
7.Создаём непрямоугольные окна.
Пока я не решил что будем изучать дальше,но в скором времени определюсь и
с
этим.Ещё я научу вас писать программы отображающие XP стили.