
- •Трансляция программы
- •Компоновка программы
- •Система команд микропроцессора
- •32 Разрядные регистры:
- •Целочисленные арифметические команды
- •Особенности реализации микропроцессоров
- •Регистры: пользовательские и системные
- •Программа на языке ассемблера
- •Цепочечные команды
- •Осуществление переходов
- •Счётчик адреса команд
- •Безусловные переходы
- •Команда безусловного перехода jmp
- •Защищённый режим работы микропроцессора
- •Регистры управления
- •Регистры системных адресов
- •Сложные структуры данных
- •Доступ к элементам массива
- •Двумерные массивы
- •Структура
- •Сложные структуры данных 2
- •Методы работы со структурой
- •Объединение
- •Модульное программирование -1
- •Технологии программирования
- •Процедуры в языке ассемблера
- •Модульное программирование – 2 Передача аргумента через регистр
- •Передача аргументов через общую область памяти
- •Передача аргументов через стек
- •Связь ассемблера с языками высокого уровня
- •Макросредства языка ассемблера
- •Создание Windows приложений на ассемблере
- •Процесс производства микропроцессора
Регистры: пользовательские и системные
С точки зрения программиста микропроцессор содержит 2 группы регистров: пользовательские и системные
Пользовательские регистры доступны для использования в программах и включают следующие группы регистров:
Регистры общего назначения:
eax/ax/al
abx/bx/bh/bl
edx/dx/dh/dl
ecx/cx/ch/cl
ebp/bp
esi/si
edi/di
esp/sp
Регистры этой группы используются для хранения данных и адресов
Сегментные регистры: Cs, ds, ss, es, fs, gs
Регистры этой группы используются для хранения адресов сегментов памяти
Регистры сопроцессора: st(0)-st(7)
Предназначены для написания программ, использующий тип данных с плавающей точкой
Целочисленный регистры MMX-расширения: mmx0-mmx7
MMX – мультимедийное расширение. Коммерческое название дополнительного набора инструкций, выполняющих характерные для процессора кодирование/декодирование потоковых аудио-видео данных, действия за одну машинную инструкцию.
Регистры MMX-расширения с плавающей точкой: xmm0-xmm7
Регистры состояния и управления – регистры, содержащие информацию о состоянии микропроцессора, исполняемые программой и позволяющие изменить это состояние.
Делится на 2 группы:
Регистр флагов: eflags/flags
Регистр указатель команды eip/ip
Процессор Pentium MMX отличается от обычного Pentium по 6 основным пунктам:
Добавлено 57 новых команд обработки данных
В 2 раза увеличен объём внутреннего Кэш (для команд и для данных)
Увеличен объём буферов адресов перехода (BTB)
Оптимизирована работа конвейера
Увеличено количество буферов записи
Введено двойное электропитание процессора
Программа на языке ассемблера
Сегмент представляет собой непрерывный блок памяти. Как правило использование сегментов однозначно. Программа может содержать 3 сегмента: сегмент кода, сегмент данных и сегмент стека. Сегментация использовалась в старых микропроцессорах из-за ограничения их адресного пространства. Ассемблер является символическим аналогом машинного языка. По этой причин, программа написанная на ассемблере должна содержать все особенности архитектуры микропроцессора.
Программа на ассемблере представляет собой совокупность блоков памяти, которые называются сегментами. Программа может состоять из 1 или нескольких сегментов. Каждый сегмент содержит совокупность предложений языка. Каждое предложение занимает отдельную строку программы.
Предложение ассемблера бывает 4 типов:
Команды (инструкции) – представляют собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в советующие команды микропроцессора
Макрокоманды – это оформляемое определённым образом предложение текста программы, замещаемое во время трансляции другими предложениями.
Директивы – это указания транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении.
Строгий комментарий – комментарий содержит любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
Допустимыми символами при написании текста программы являются
Все латинские символы (при этом заглавные и прописные буквы являются эквивалентными)
Цифры от 0 до 9
Знаки (?@$_&)
Разделители(,.[]()<>{}+/\*%!”?=#^)
Идентификатор может состоять из одного или нескольких символов. В качестве символов можно использовать буквы латинского алфавита, цифры и некоторые специальные знаки(_?$@). Идентификатор не может начинается с символа цифры. Длина идентификатора может быть до 255