Текстовые редакторы для написания программ на ассемблере.

Лекция 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)