MS-DOS и TASM 2.0. Часть 18. Ещё раз об указателе.

Указатель в программировании.

В статье MS-DOS и TASM 2.0. Часть 9. Указатель просто и понятно было рассмотрено, что такое указатель в программировании (pointer). Сейчас мы перейдём к вопросу практического использования указателя. Ещё раз напомним, что указатель в ассемблере — более широкое понятие, чем в Си и С++, где указатель определён как переменная, значением которой является адрес ячейки памяти. Указатель — не только переменная. Указатель в программировании на ассемблере — адрес определённой ячейки памяти. Жёсткой привязки к понятию «переменной» нет.

Преимущество указателя — простая возможность обращаться к определённой части исполняемого кода либо данных, избегая их дублирования. Например, один раз написав код функции, мы можем обращаться к нему неоднократно, осуществляя вызов указанной функции. Кстати, вызов функции — это переход исполнения кода по указателю, который для удобства «обозвали» понятным для человека названием (ну, например, «MyBestFunc»). Читать далее «MS-DOS и TASM 2.0. Часть 18. Ещё раз об указателе.»

MS-DOS и TASM 2.0. Часть 17. Константы, массивы, структуры и т.д.

Организация данных в ассемблере.

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

Для упрощения написания кода необходимо преобразовать его в понятный для человека вид, желательно не в ущерб для машины. Для этого используют условности и обобщения — определённую степень абстракции. Один из простейших способов абстракции — разбивка кода и данных на части — блоки по определённым правилам и с определёнными особенностями. Затем эти блоки обзывают понятным для человека языком. Читать далее «MS-DOS и TASM 2.0. Часть 17. Константы, массивы, структуры и т.д.»

MS-DOS и TASM 2.0. Часть 16. Прерывания DOS.

Ядро операционной системы — набор системных функций.

Основу операционной системы Windows 95 — Windows XP составляет набор системных функций, содержащихся в файлах с расширением *.DLL, которые располагаются в системных дирректориях … Windows\System,  System32, SysWOW64 (для 64 битных версий операционок) — так называемый Win API. К слову, в Windows 10 поддержка Win API реализована практически в полном объёме, хотя ядро системы несколько изменилось). В MS-DOS ядро также состоит из системных функций, которые называются прерывания DOS. Ну, если точно, то есть прерывания DOS, а есть прерывания BIOS (связаны с управлением компьютерным железом, определённые прерывания DOS  можно реализовать через прерывания BIOS), да и понятие ядра системы можно расширить… Для наших целей и на данный момент отбросим усложнения в сторону! Далее мы будем использовать общее понятие для всех прерываний: прерывания DOS. Читать далее «MS-DOS и TASM 2.0. Часть 16. Прерывания DOS.»

MS-DOS и TASM 2.0. Часть 15. Упрощаем вызов функции в TASM.

Макрос — макрокоманда, макроопределение.

У большинства популярных ассемблеров (TASM, MASM, FASM), имеется определённая «вкусность», которая помогает писать более читабельный и понятный код, а также уменьшает вероятность ошибок. Мы имеем ввиду макросы. Макрос — миникод, который определяет алгоритм действий основных команд ассемблера. Этот код либо уже создан и входит в комплект ассемблера, либо пишется пользователем самостоятельно. В данной статье мы выясним, как использовать макрос функции (процедуры), встроенный в TASM. Читать далее «MS-DOS и TASM 2.0. Часть 15. Упрощаем вызов функции в TASM.»

MS-DOS и TASM 2.0. Часть 14. Конвенции вызова функции.

Параметры функции.

Функции в ассемблере — это часть кода, которая решает конкретную задачу или несколько, объединённых одной целью задач. Функция может вызываться без дополнительного дублирования кода. Человек способен помнить, воспринимать  и использовать ограниченное число информации. Для облегчения понимания и создания кода его структурируют — дробят на определенные части. Читать далее «MS-DOS и TASM 2.0. Часть 14. Конвенции вызова функции.»

MS-DOS и TASM 2.0. Часть 10. Команды ассемблера.

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

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

Читать далее «MS-DOS и TASM 2.0. Часть 10. Команды ассемблера.»

MS-DOS и TASM 2.0. Часть 7. Данные.

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

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

Читать далее «MS-DOS и TASM 2.0. Часть 7. Данные.»

MS-DOS и TASM 2.0. Часть 6. Системы счисления.

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

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

Читать далее «MS-DOS и TASM 2.0. Часть 6. Системы счисления.»

MS-DOS и TASM 2.0. Часть 5. Ключевые понятия.

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

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

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

Читать далее «MS-DOS и TASM 2.0. Часть 5. Ключевые понятия.»

MS-DOS и TASM 2.0. Часть 4. Анализ кода.

Анализ программного кода «Hello World!» на ассемблере.MS-DOS и TASM 2.0

Проведем анализ программного кода нашей первой программы на ассемблере.

Читать далее «MS-DOS и TASM 2.0. Часть 4. Анализ кода.»