Ассемблер с нуля. Часть 15. Процедуры (функции).

Процедуры в ассемблере.

Процедуры в ассемблере мы рассмотрим на примере нашей программы goblin.com. Сразу определимся, что понятия: процедура, функция, подпрограмма в языках программирования, включая ассемблер, являются синонимами и обозначают одно и то же. Именно в качестве равнозначных синонимов мы будем использовать эти названия.

Подробнее «Ассемблер с нуля. Часть 15. Процедуры (функции).»

Ассемблер с нуля. Часть 13. Команды ассемблера.

Команды ассемблера и команды процессора.

Стоит пояснить, что если к вопросу подойти формально строго, то команды процессора и команды ассемблера — это не одно и то же. Ассеммблер — хоть и низкоуровневый язык программирования, но иногда он без спроса программиста «корректирует код под себя». Причём у каждого ассемблера (masm, tasm, fasm) это может быть по-разному. Самый яркий пример — команда  ret. В ассемблерном коде мы запишем ret, а реальный ассемблер ассемблирует её как retf или retn 8. Может также изменяться код, добавлением в качестве выравнивания кода команды процессора nop (об этом ниже в статье) и т.п. Чтобы не усложнять суть вопроса, под понятиями  команды процессора и команды ассемблера мы будем подразумевать одно и то же.

Подробнее «Ассемблер с нуля. Часть 13. Команды ассемблера.»

Ассемблер с нуля. Часть 12. Указатель.

Понятие указателя.

Понятие указателя (pointer) — одно из самых важных в программировании. Для начинающего програмиста просто необходимо его понять и усвоить. Попробуем разобраться, что это такое и зачем он нужен.

Процесор работает с памятью. Минимально возможное значение памяти — 1 бит (bit). Память воспринимается машиной блочно. Один минимальный блок равен одному байту (byte), 1 байт = 8 бит (bit — минимальная адресуемая единица памяти).

Подробнее «Ассемблер с нуля. Часть 12. Указатель.»

Ассемблер с нуля. Часть 11. Регистры.

Регистры процессора.

Процессор работает с данными. Обрабатываемые данные содержаться в оперативной памяти, куда считываются с жёсткого диска. Для того, чтобы ими манипулировать, а также верно организовывать свою работу по их обработке — выполнению программного кода, у процессора имеется система, построенная на небольших, но очень быстрых блоках памяти — регистров. Регистры процессора — это входящие непосредственно в процессор блоки памяти.

Подробнее «Ассемблер с нуля. Часть 11. Регистры.»

Ассемблер с нуля. Часть 10. Данные.

Данные в ассемблере.

Данные в ассемблере — понятие широкое. Программу в целом можно воспринимать как одну большую совокупность данных, однако мы уже знаем и помним, что она состоит из данных и кода — набора команд, необходимых для обработки данных.

Подробнее «Ассемблер с нуля. Часть 10. Данные.»

Ассемблер с нуля. Часть 9. Системы счисления.

Три системы счисления.

Практическое программирование на ассемблере требует понимания системы счисления. Систем счисления существует бесконечное множество. Наиболее знакомая для нас — десятичная система счисления. Римская нумерация циферблата часов демонстрирует нам двенадцатеричную систему счисления. Программистам на ассемблере необходимо освоить три системы счисления : десятичную, двоичную и шестнадцатеричную.

Подробнее «Ассемблер с нуля. Часть 9. Системы счисления.»

Ассемблер с нуля. Часть 8. Ключевые понятия.

Основные понятия.

Чтобы идти дальше, нам необходимо получить ключевую информацию об определённых понятиях, научиться использовать в работе отладчики и дизассемблеры — программы, которые помогут нам изучать и анализировать наш код.

  1. Шестнадцатеричная система счисления.
  2. Данные.
  3. Регистры.
  4. Указатель.
  5. Команды ассемблера.
  6. Процедура (подпрограмма, функция).
  7. Стек.

Подробнее «Ассемблер с нуля. Часть 8. Ключевые понятия.»

Ассемблер с нуля. Часть 6. Первая программа.

Наша первая программа на ассемблере.

Наша первая программа на ассемблере будет в формате *.COM — как мы уже знаем, исполняемые файлы указанного формата очень крохотные (tiny) по размеру и  состоят из одного сегмента, в котором размещаются код, данные и стек.

Ещё мы знаем, что в указанном формате пишутся резидентные программы, драйверы и вирусы.

Подробнее «Ассемблер с нуля. Часть 6. Первая программа.»

Ассемблер с нуля. Часть 5. Turbo Assembler.

Turbo Assembler — удачный пакет разработки DOS программ.

Изучать ассемблер мы начнём со знаменитого TASM. В годы господства MS-DOS Турбо ассемблер от Borland был одним из самых распространённых средств создания программ, составляя конкуренцию MASM. Очень продуманный и приятный ассемблер, создающий хороший код. Скачать TASM можно с нашего сайта — ссылка на архив в конце статьи.

Мы создадим простейшую программу и на её примере рассмотрим основные этапы разработки приложений. Программа после запуска выведет на экран сообщение «Hello World!» и завершится. Вначале не будем пользоваться средой программирования TASMED, а сделаем всё ручками, используя текстовый редактор и Турбо Ассемблер.

Подробнее «Ассемблер с нуля. Часть 5. Turbo Assembler.»

Ассемблер с нуля. Часть 4. Кратко об MS-DOS.

Операционная система MS-DOS — необходимый минимум.

Программирование на языке низкого уровня подразумевает знание операционной системы, для которой пишутся приложения. Операционная система MS-DOS — Microsoft Disk Operating System. Её основные назначение, как и всех операционных систем — обеспечить взаимодействие между софтом и железом, человеком и компьютером. Операционная система — это основная программа, которая как минимум должна быть запущена на машине. Ниже упрощённо описан необходимый минимум, который необходимо знать о системе, чтобы начать программировать.

Подробнее «Ассемблер с нуля. Часть 4. Кратко об MS-DOS.»