- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •Архитектуры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
Цепочечные операции
Команда
Описание
REP
REPE и REPZ
REPNE и REPNZ
REPeat string operation – повторить цепочечную операциюю
Префикс, означающий повтор следующей за ним операции до обнуления ECX. Префикс имеет разновидности:
REPZ (REPE) - выполнять, пока не нуль (ZF=1),
REPNZ (REPNE) – выпо лнять, пока нуль.
MOVSприемник, источник
MOVSB
MOVSW
MOVSD
MOVe String Byte/Word/Double word operands – пересылкацепочек.Приемник, источник можно явно не указывать. Команда передает из цепочки, адресуемой DS:[ESI], в цепочку приемника, адресуемую ES:[EDI].Разновидности для разных элементов цепочки:
байт,
слово или
двойное слово.
LODSисточник
MOVSB
MOVSW
MOVSD
LOaD String Byte/Word/Double word operands – загрузкацепочек.Загружает из ячейки памяти, адресуемой DS:ESI/si, в регистр AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:
байт,
слово или
двойное слово.
STOSприемник
STOSB
STOSW
STOSD
STOre String Byte/Word/Double word operands – сохранение цепочек.Сохраняет в ячейке памяти, адресуемой DS:ESI/SI, из регистра AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:
байт,
слово или
двойное слово.
SCASприемник
SCASB
SCASW
SCASD
SCAn String Byte/Word/Double word – сканированениецепочек.Команда вычитает элемент цепочки приемника из содержимого аккумулятора (AL\AX\EAX) и модифицирует флаги. Разновидности для разных элементов цепочки:
байт,
слово или
двойное слово.
CMPS приемник, источник
CMPSB
CMPSW
CMPSD
CoMPare String Byte/Word/Double word operands - сравнениецепочек.Команда вычитанет элемент цепочки приемника из соответствующего элемента цепочки источника и модифицирует флаги. Регистры EDI и ESI автоматически продвигаются на следующий элемент. Разновидности для разных элементов цепочки:
байт,
слово или
двойное слово.
Команды управления
Управление флагами
Команда |
Описание |
CLC |
CLear Carry flag Сброс флага переноса. |
STC |
SeT Carry flag Установка флага переноса. |
CMC |
CoMplement Carry flag Инверсия флага переноса. |
CLD |
CLear Direction flag Сброс флага направления – для цепочечных команд процессор будет выполнять инкремент регистров SI DI. |
STD |
SeT Direction flag Установка флага направления - для цепочечных команд процессор будет выполнять декремент регистров SI DI. |
CLI |
CLear Interrupt flag Сброс флага прерываний - запрет маскируемых аппаратных прерываний. |
STI |
SeT Interrupt flag Установка флага прерываний - разрешение маскируемых аппаратных прерываний. |
Команды передачи управления
Команда |
Описание |
JMP метка |
JuMP –безусловный переход. Имеется несколько форм, различающихся расстоянием метки перхода от текущего адреса, и способом задания целевого адреса. При работе в Windows используется в основном внутрисегментный переход (NEAR) в пределах 32-битного сегмента. Адрес перехода может задаваться непосредственно (в программе это метка) или косвенно, т.е. содержаться в ячейке памяти или регистре (JMP [EAX]). Другой тип перехода - короткий переход (SHORT), занимает всего 2 байта. Диапазон смещения, в пределах которого происходит переход: -128 ... 127. Использование такого перехода весьма ограниченно. |
Jcc метка |
Jumpifcondition- условный переход. Команда осуществляет переход при выполнении условия, заданного в . поле условия. Возможны условия, кодируемые 4-ех битным кодом:
В плоской модели команды условного перехода осуществляют переход в пределах 32-битного регистра. |
LOOPметка |
LOOP control by register CX - команды управления циклом по регистру CX. Команды этой группы используют счетчик цикла в регистре CX. В них осуществляется декремент CX и проверка его содержимого. Тело цикла повторяется пока содержимое CX не равно нулю. Если содержимое CX равно нулю, то управление передается команде, метка которой опреджелена в команде LOOP. |
LOOPE метка LOOPZ метка |
LOOP control by register CX not Equal 0 and ZF=1 - команды управления циклом по регистру CX с учетом ZF=1. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 1. |
LOOPNE метка LOOPNZ метка |
LOOP control by register CX not Equal 0 and ZF=0 - команды управления циклом по регистру CX с учетом ZF=0. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 0. |
CALLцель |
CALL – вызов. Передает управление процедуре (метке) с сохранением в стеке адреса, следующей за CALL командой. В плоской модели адрес возврата представляет собой 32-битное смещение. Межсегментный вызов предполагает сохранение в стеке селектора и смещения, т.е. 48-битной величины (16 бит - селектор и 32 бита - смещение). |
RET [N] |
RETurn from procedure – возврат изпроцедуры Необязательный параметр N предполагает, что команда также автоматически чистит стек (освобождает N байт). Команда имеет разновидности, которые выбираются ассемблером автоматически, в зависимости от того, является процедура ближней или дальней. |