- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Ассемблер цсп с6x
Введение
Ассемблер преобразовывает (транслирует) исходные файлы ассемблера в объектные файлы в машинном коде. Эти файлы находятся в общем формате объектного файла (COFF). Исходные файлы могут содержать следующие элементы ассемблера:
Директивы Ассемблера.
Макро директивы.
Команды ассемблера.
Двухпроходовый ассемблер делает следующее:
Преобразует операторы исходника в объектный файл.
Создает листинг исходника (если требуется) и дает Вам возможность управлять им.
Позволяет Вам сегментировать код по разделам и устанавливает счетчик команд SPC в каждом разделе объектного кода.
Определяет глобальные символы и ссылки на них, создает перекрестные ссылки на листинг исходника (если требуется).
Допускает условное ассемблирование.
Допускает макросы, позволяя создавать макросы в исходнике или в библиотеке.
Вызвать ассемблер можно двумя способами:
Запустить ASM6X. Ассемблер запускается с опциями по умолчанию. В частности без опции –L, которая заставляет его формировать файл листинга.
В командной строке ОС ввести путь к файлу ASM6x, имя файла и опцию –L. Файл листинга будет сформирован, и допущенные ошибки можно увидеть.
В окне ассемблера нужно задать:
Source file - исходный файл ассемблера. Если Вы не даете расширение, ассемблер использует заданное по умолчанию расширение .asm.
Формат инструкций исходника
Исходник ассемблера ЦСП С6xсостоит из инструкций, которые могут содержать директивы ассемблера, команды ассемблера, макро-директивы, и комментарии. Инструкция может содержать 7 упорядоченных полей (метка, признак параллельности ||, условие, мнемоника инструкции, спецификатор модуля, список операндов, и комментарий).
Примеры инструкций:
two .set 2 ; Символ two = 2
Label: MVK two, A2 ; Запись значения two в регистр A2
.word 016h ; Инициализация слова значением 016h
Ассемблер читает до 200 знаков в строке. Любые знаки свыше 200 усекаются. Операционная часть инструкций (т.е. все, кроме комментариев) должна быть короче 200 знаков для правильной трансляции. Комментарии могут простираться за пределы 200 знаков, но усеченная часть не включается в файл листинга.
Следуйте этим рекомендациям:
Все инструкции должны начаться с метки, пробела, звездочки, или точки с запятой.
Метки не обязательны, если они используется, они должны начаться в столбце 1.
Один (или больше) пробелов должно отделять каждое поле. Символы табуляции интерпретируются, как пробелы. Вы должны отделить список операндов от предшествующего поля пробелом.
Комментарии необязательны. Комментарии, которые начинаются в столбце 1, могут начинаться со звездочки или точки с запятой (* или ;), комментарии, которые начинаются в любом другом столбце должны начинаться с точки с запятой.
Если Вы используете условную команду, имя регистра, по содержимому которого выполняется команда, должно быть окружено квадратными скобками.
Спецификатор модуля необязательный. Если Вы не определяете функциональный блок, ассемблер назначает функциональный блок сам , основываясь на мнемоническом поле.
Мнемоника не может начинаться с 0 или 1, иначе это будет интерпретироваться, как метка.
Метки. Они необязательны для всех команд ассемблера и для большинства (но не всех) директив ассемблера. Когда используется, метка должна начаться в столбце 1 инструкции. Метка может содержать до 128 алфавитно-цифровых знаков (A-Z, a-z, 0-9, _, и $). Меткичувствительны к регистру, и первый знак не может быть числом. Метка может сопровождаться двоеточием (:).
Если Вы не используете метку, знак в столбце 1 должен быть пробелом, звездочкой, или точкой с запятой.
Признак параллельности.Символы || указывают команды, которые выполняются параллельно с предыдущей командой. Вы можете иметь до восьми команд, выполняющихся параллельно. Следующий пример демонстрирует шесть команд (Inst1…Inst6), выполняющихся параллельно:
Inst1
|| Inst2
|| Inst3
|| Inst4
|| Inst5
|| Inst6
Inst7
Условие. Квадратные скобки [] указывают условные команды. Команда выполняется на основании значения регистра в пределах скобок, допустимые имена регистров – A1, A2, B0, B1, B2. Команда выполняется, если значение регистра отлично от нуля. Если перед именем регистра стоит восклицательный знак (!), то команда выполняется, если значение регистра = 0. Например:
[A1] ZERO A2 ; Если A1 не равен 0, обнулить A2
Мнемоника инструкции. Например, ADD, MVK.
Поле спецификатора модуля. Это необязательное поле, которое следует за мнемоническим полем. Поле спецификатора модуля начинается с точки (.), сопровождаемой спецификатором функционального блока. Вообще, одна команда может быть назначена каждому функциональному блоку в одном командном цикле. Имеется восемь функциональных блоков, по два каждого функционального типа:
.D1 и .D2 Данные/сложение/вычитание. Используются для формирования адресов памяти данных.
.L1 и .L2 АЛУ/сравнение/арифметика длинных данных. АЛУ означает арифметико-логическое устройство.
.M1 и .M2 Умножение.
.S1 и .S2 Сдвиг/АЛУ/переходы/битовые поля.
Имеются несколько способов использовать поле спецификатора модуля:
Вы можете определить конкретный функциональный блок (например, .D1).
Вы можете определить только функциональный тип (например, .M), и ассемблер назначит определенный модуль (например, .M2).
Если Вы не определяете функциональный блок, ассемблер назначает модуль, основываясь на мнемоническом поле.
Поле операнда. Оно следует за мнемоническим полем и содержит один или большее количество операндов. Поле операнда требуется не для всех команд или директив. Операнд состоит из следующих элементов: символы, константы выражения (комбинация констант и символов). Операнды друг от друга отделяются запятыми (никаких пробелов!).
Комментарий. Может начинаться в любом столбце и простирается до конца исходной строки. Комментарий может содержать любые знаки ASCII, включая пробелы. Комментарии печатаются в листинге программы ассемблера, но не влияют на процесс трансляции.
Исходная инструкция, которая содержит только комментарий, допустима. Такой комментарий – заголовок части кода. Если она начинается в столбце 1, то может начинаться с точки с запятой (;) или звездочки (*).
Комментарии, которые начинаются где-нибудь еще на строке, должны начинаться с точки с запятой. Такой комментарий описывает операцию в строке кода.