Текстовые редакторы для написания программ на ассемблере.
Лекция 04. Создание программ на языке Assembler.
Регистры общего назначения
Микропроцессор 80386
Микропроцессор 80386 - это 32-разрядный процессор, разработанный для поддержки многозадачных операционных систем. Имея 32-разрядные регистры и тракты передачи данных, микропроцессор 80386 обеспечивает 32-разрядный формат как адреса так и данных.
Микропроцессор 80386 адресуется к физической памяти объемом до 4 Гбайт и к виртуальной памяти до 64 Тбайт (246). Встроенная система управления памятью микропроцессора 80386 и защиты включает в себя регистры преобразования адреса, средства защиты и поддержки операционных систем и улучшенное многозадачное аппаратное обеспечение.
Конвеер команд, высокая разрядность шин, встроенное преобразование адреса значительно уменьшают среднее время выполнения команды. Эти архитектурные особенности разработки позволяют микропроцессору 80386 выполнять 3-4 млн. команд в секунду.
80386.
Микропроцессор 80386 содержит восемь 32-разрядных регистров общего назначения ЕАХ, ЕВХ, ЕСХ, EDX, ESP. ЕВР, ESI и EDI. Регистры ЕАХ, ЕВХ, ЕСХ и EDX являются полными 32-разрядными регистрами: младшие 16 разрядов каждого регистра общего назначения могут быть достурны отдельно. Эти 16-разрядные регистры адресуемы как АХ, ВХ, CX, DX, SP, BP, SI, DI.
Четыре из этих младших 16 разрядных регистров АХ, ВХ, СХ и DX могут быть разделены на 8-разрядные (ВН и BL). Это дает возможность пользователю обращаться к восьми 8-разрядным регистрам.
Названия регистров, начинающихся с буквы Е (таких, как ЕАХ), соответствуют полным 32 разрядным величинам. Названия регистров, заканчивающихся буквой Х (таких как EBX) соответствуют 16-разрядным величинам. Названия 8-разрядных заканчиваются Н или L (АН, AL). где Н означает старшие разряды а L – младшие.
Пара 32 разрядных регистров (E)SP (указатель стека) и (ЕBР (указатель базы), называемая -регистрами базы, обычно используются для работы со стеком определяют смещение для текущей ячейки стека. Пара регистров (E)SI индекс источника и (Е)DI (индекс приемника), называемая индексными регистрами, используют как значение индексов для увеличения или уменьшения при пошаговом перемещении через комплексные структуры данных.
Допустимыми символами при написании текста программ являются:
1. Все латинские буквы A-Z, a-z. При этом заглавные и прописные буквы считаются эквивалентными.
2. Цифры от 0 до 9.
3. Знаки ?, @, $, _ , &.
4. Разделители: ,. [] () <> {} + / * % ! " " ? \ = # ^
Предложения ассемблера формируются из лексем, представляющих собой синтаксически неразделимые последовательности допустимых символов языка, имеющие смысл для транслятора. Лексемами являются:
— идентификаторы — последовательности допустимых символов, использующиеся для обозначения таких объектов программы, как коды операций, имена переменных и названия меток. Правило записи идентификаторов заключается в следующем. Идентификатор может состоять из одного или нескольких символов. В качестве символов можно использовать буквы латинского алфавита, цифры и некоторые специальные знаки — _, ?, $, ©. Идентификатор не может начинаться символом цифры. Длина идентификатора может быть до 255 символов, хотя транслятор воспринимает лишь первые 32, а остальные игнорирует.
— цепочки символов — последовательности символов, заключенные в одинарные или двойные кавычки;
— целые числа в одной из следующих систем счисления: двоичной, десятичной, шестнадцатеричной. Отождествление чисел при записи их в программах на ассемблере производится по определенным правилам. Десятичные числа не требуют для своего отождествления указания каких-либо дополнительных символов. Для отождествления в исходном тексте программы двоичных чисел необходимо после записи нулей и единиц, входящих в их состав, поставить латинское «b». К примеру, 10010101b.
— операнды — это объекты (некоторые значения, регистры или ячейки памяти), на которые действуют инструкции или директивы, либо это объекты, которые определяют или уточняют действие инструкций или директив.
Операнды могут комбинироваться с арифметическими, логическими, побитовыми и атрибутивными операторами для расчета некоторого значения или определения ячейки памяти, на которую будет воздействовать данная команда или директива.
Рассмотрим классификацию операндов, поддерживаемых транслятором ассемблера.
— Постоянныеили непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память.
— Адресные операнды - задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения.
— Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти. Эти адреса могут обозначать местоположение в памяти некоторой инструкции (если операнд — метка) или данных (если операнд — имя области памяти в сегменте данных). Перемещаемые операнды отличаются от адресных тем, что они не привязаны к конкретному адресу физической памяти. Сегментная составляющая адреса перемещаемого операнда неизвестна и будет определена после загрузки программы в память для выполнения. К примеру:
Состав (основные модули tasm.exe; tlink.exe; td.exe)