Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Введение

Автор: Руслан Аблязов
6 октября 2006 года

Что это такое? Наверное, каждый из нас думает, что ассемблер это что-то сложное, очень трудное для изучения и вообще недосягаемое. Поверьте мне, я тоже так, когда-то думал. Невозможное возможно. Этот туториал рассчитан для тех, кто даже не знает никакого языка программирования, я вообще выступаю, за то, что надо сначала изучать ассемблер, а потом только языки высокого уровня. Если вы перечитаете весь туториал от этих строк до самого конца то вам будет намного проще изучать другие языки программирования, и вы уже никогда не будете спорить о том какой язык лучше С++ или Delphi.

В этом туториале я расскажу вам, что такое ассемблер и с чем его едят. Чем же примечателен этот туториал. Этот туториал примечателен тем, что я расскажу вам про ассемблер под Win32 системы, конечно, есть много учебников и книг про ассемблер, но и все писались под DOS, а ДОС это 16 разрядный отстой. Программирование под ДОС, очень сложно, но чтобы программировать под Win32 можно вообще ничего не знать про DOS. Короче забудьте про ДОС. По ходу этого туториала, я буду немного возвращаться к нему, но только для того чтобы пояснить, чем Win32 лучше DOS.

Assembler - это произведение искусства. Ниже ассемблера только машинные коды. Ассемблер создан как замена двоичному коду, который понимает процессор. При написании программы на ассемблере вы просто пишете команды процессора, которые процессор последовательно выполняет. Пример команды:

MOV EAX, EBX

В машинных кодах это будет 8BC3 (шестнадцатеричный код, теперь всё будет шестнадцатеричным, ПРИВЫКАЙТЕ). Процессор смотрит на эти циферки и делает то, что они обозначают. Любая программа, написанная на языке высокого уровня (исключая .NET), преобразовывается в ассемблерный код. А почему же ассемблер лучше, чем С++ и др.. Дело в том, что программу, написанную на языке высокого уровня надо перевести на ассемблер, а это очень трудно, потом надо его оптимизировать, современные компиляторы очень плохо с этим справляются. Я провел эксперимент, написал программу (обычное окно с одной кнопкой в центре, которая закрывает его) на разных языках высокого уровня и после компиляции получил вот такие размеры этой самой программы:

  • C++ Builder 4 - 22 kb
  • Delphi 5 - 291 kb
  • Delphi 5 + библиотека KOL - 26 kb
  • Ассемблер MASM - около 3 kb

Так, что смотрите и делайте выводы, что лучше использовать.

Есть другое различие с некоторыми языками высокого уровня, это использование runtime DLL библиотек для их функций. Visual Basic даже не преобразовывает свой язык в ассемблер (хотя версия 5 и выше делают это частично, но не полностью), это сильно зависит от msvbvm50.dll, виртуальной машины Visual Basic. Exe файл, который создан VB, состоит из простых частей кода и многих вызовов этой DLL. Вот почему VB очень медленный. Ассемблер это и есть самый быстрый язык. Он использует только системные DLL: kernel32.dll, user32.dll, и т.д.

Теперь приступим к тому, где именно мы будем писать наши программы на ассмеблере. Компиляция состоит из 2 стадий:

  • 1. Проверка синтаксиса, создание объектного файла и файла листинга
  • 2. Линковка, т.е. компоновка.

Вы, наверное, все привыкли к тому, что запускаете Microsoft Visual C++, пишете программу, нажимаете на F7 и всё готово. На ассемблере вам придётся всё делать всё вручную. У ассемблера нет такой среды разработки. Вам придётся писать программу в блокноте, сохранять его в *.asm файл. И из командной строки вызывать ассемблер и линковщик. Потом я вам всё объясню.

Теперь смотрим инструменты.

Связки ассемблер-линковщик:

  • MASM32 v9.0 (ml.exe, link.exe)
  • TASM32 v5.0 (tasm32.exe, tlink32.exe)
  • Также можно FASM, но он только для спецов, примечателен тем, что у него есть своя оболочка не надо никаких объектных файлов т.д., нажимаешь F9 и всё готово.

Текстовые редакторы

  • EmEditor Professional Version 4.13 (вне конкуренции)
  • UltraEdit v*.*.*.* (тоже хороший не я им не пользуюсь)
  • Блокнот :) (классика).

Также пригодится справочник по API функциям. Желательно из комплекта MS SDK. Полная версия весит 24 MB (почти все апи), есть урезанные версии весом 12 МВ. Русские версии весом ~400 KB даже не читайте.

Думаю, хватит для введения. Ну, как? Ещё не отбило желания изучить ассемблер.


Назад | Оглавление | Далее

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
94K
18 октября 2014 года
Глеб Иванов
0 / / 18.10.2014
Мне нравитсяМне не нравится
18 октября 2014, 22:30:16
Эм... Компилятор *.exe в *.asm здесь есть?
2.
93K
24 марта 2014 года
Альтис Пламенный
0 / / 24.03.2014
Мне нравитсяМне не нравится
24 марта 2014, 19:42:27
отбить то может и немного отбило но вот немного я не понял....всё что нужно для програмирования на асемблере нужно скачивать с интернета или гдето в самой системе искать файлы?
3.
5.1K
16 декабря 2006 года
12345678
93 / / 16.12.2006
+3 / -1
Мне нравитсяМне не нравится
2 августа 2007, 23:27:05
Несогласен!!! FASM рулит во всех отношениях!!! Я уже далеко не новичок и отвечаю за свои слова.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог