Приветствуем. IndigoBits - это место, где скапливаются самые интересные и наиболее удивительные биты информации из пространства hi-tech. Наша страсть - мир высоких технологий.

Ассемблер для начинающих. Оглавление.

Список статей, посвященных ассемблеру в верном для изучения порядке. Статьи предназначаются как для начинающих изучать assembler (ассемблер для чайников), так и для опытных программистов. Программная модель микропроцессора IA-32. Режимы работы микропроцессора IA-32. Организация памяти Регистры процессора Структура оператора и псевдооператора Типы данных, с которыми работает процессор Директивы определения переменных Директивы определения констант Директивы определения сегментов,[…]

18. Команды условной передачи управления

Команды условного перехода имеют следующий синтаксис: jcc метка_перехода Межсегментная передача управления в условных переходах не допускается. Команды, позволяющие сформировать условие перехода Арифметические Команда СMP Проверка флагов Проверка регистра CS Команда cmp также, как и команда sub, выполняет вычитание операндов и устанавливает флаги. Единственное, чего она не делает — это запись результата вычитания на место первого[…]

11. Арифметические команды.

Арифметические команды делятся на 2 группы: Двоичной арифметики. Десятиной арифметики. Все арифметические команды изменяют флаги состояний CF, ZF, SF, AF, OF. Команды двоичной арифметики: инкремент/декремент (увеличение/уменьшение операнда на 1) INC/DEC регистр/память сложение/вычитание ADD/SUB получатель, источник меняет знак операнда на противоположный. NEG регистр/память сложение/вычитание дополнительно прибавляет/вычитает от результат флаг CF ADC/SBB получатель, источник умножение беззнаковое/умножение знаковое[…]

24. Команды работы со стеком

Для организации работы со стеком существуют специальные команды записи и чтения: Команда PUSH выполняет запись значения «источник» в вершину стека: PUSH источник Алгоритм работы этой команды, включает два действия: Значение SP уменьшается на 2 Значение источника записывается по адресу, указываемому парой SS:SP. Команда POP выполняет запись значения из вершины стека по месту, указанному операндом «приемник»[…]

23. Принцип организации стека

Стек – это область памяти, специально выделяемая для временного хранения данных программы. Важность стека определяется тем, что для него в структуре программы предусмотрен отдельный сегмент. Для работы со стеком предназначены три регистра: ss – сегментный регистр стека; sp/esp – регистр указателя стека; bp/ebp – регистр указателя базы кадра стека. Размер стека зависит от режима работы[…]

2. Организация памяти

Физическая память, к которой процессор имеет доступ по шине адреса называется оперативной памятью. На самом нижнем уровне памяти она представлена в виде массива битов. Минимальная адресуемая ячейка памяти — байт. Оперативная память — это последовательность байтов. Также процессор работает со словами и двойными словами (слово — 2 байта / 16 бит, двойное слово — 4[…]

35. Макродирективы повторения, управления процессом генерации, отображения сообщений во время макрогенерации.

В языке ассемблера предусмотрены несколько циклических директив, предназначенных для генерации повторяющихся блоков операторов: WHILE, REPEAT, IRP и IRPC. В отличие от команды LOOP, эти директивы работают только во время компиляции программы, причем в качестве счетчика и условия завершения цикла выступают константные выражения. WHILE константное_выражение Позволяет повторить некоторый блок операторов в зависимости от значения указанного в[…]

33. Параметры макрокоманды и макроопределения. Макрофункция

Обычно макрокоманда содержит некоторый список аргументов — список_фактических_аргументов, которыми корректируется макроопределение. Места в теле макроопределения, которые будут замещаться фактическими аргументами из макрокоманды, обозначаются с помощью так называемых формальных аргументов. Таким образом, в результате применения макрокоманды в программе формальные аргументы в макроопределении замещаются соответствующими фактическими аргументами; в этом и заключается учет контекста. Процесс такого замещения называется[…]

32. Макросредства. Макроопределение, макрокоманда, макрорасширение.

Макроопределение – специальным образом оформленная группа команд, к которой в тексте программы можно обратиться с помощью некоторого символического имени – макрокоманды. (макроопределение может иметь формальные параметры, тогда макрокоманда должна иметь фактические). Макрорасширение – некоторая последовательность инструкций ассемблера, которую формирует макроассемблер на этапе трансляции, путем замены формальных параметров макроопределения фактическими параметрами макрокоманды. Полученное макрорасширение вставляется в[…]

37. Директивы генерации ошибок

В ассемблере определен ряд директив, называемых директивами генерации пользовательской ошибки. Их можно рассматривать и как самостоятельное средство, и как метод, расширяющий возможности директив условной компиляции. Директивы генерации пользовательской ошибки по принципу работы можно разделить на два типа: безусловные директивы генерируют ошибку трансляции без проверки каких-либо условий; ERR (.ERR) [текст сообщения] Безусловно приводит к генерации ошибки[…]