Скачать 0.55 Mb.
|
Логические операцииИнвертирование
Логическое «И» ( dst = (dst) and (src) )- Регистра или памяти и регистра
- Непосредственных данных и регистра или памяти
- Непосредственных данных и аккумулятора
Логическое сравнение (установление регистра флагов)- Регистра или памяти и регистра
- Непосредственных данных и регистра или памяти
- Непосредственных данных и аккумулятора Логическое «ИЛИ»- Регистром или памятью и регистром
- Непосредственными данными и регистром или памятью
- Непосредственными данными и аккумулятором
Команды сдвиговЛогический арифметический сдвиг dst на cnt разрядов влево
Логический сдвиг вправо
Циклический сдвиг влево
Циклический сдвиг вправо
Циклический сдвиг влево через перенос
Циклический сдвиг вправо через перенос
8. Система команд: команды передачи управления, обработки строк, управления МП. Обработка строк movs - пересылка строки; cmps - сравнение двух строк; seas - поиск в строке заданного элемента; lods - загрузка аккумулятора (регистров AL или АХ) из строки; stos - запись элемента строки из аккумулятора (регистров АХ или AL). Хотя команды обработки строк, как правило, включаются в программу без явного указания операндов, однако каждая команда, в действительности, использует два операнда. Для команд seas и stos операндом-источником служит аккумулятор, а операнд-приемник находится в памяти. Для команды lods, наоборот, операнд-источник находится в памяти, а приемником служит аккумулятор. Наконец, для команд movs и cmps оба операнда, и источник, и приемник, находятся в памяти. Операнды, находящиеся в памяти, всегда адресуются единообразно: операнд-источник через регистры DS:SI, а операнд-приемник через регистры ES:DI. При однократном выполнении команды обрабатывают только один элемент, а для обработки строки команды должны предваряться одним из префиксов повторения. В процессе обработки строки регистры SI и DI автоматически смещаются по строке вперед (если флаг DF = 0) или назад (если флаг DF = 1), обеспечивая адресацию последующих элементов. Каждая команда имеет модификации для работы с байтами или словами (например, movsb и movsw). Управление состоянием процессора CLC Сброс признака переноса Логика: CF = 0. CLC сбрасывает признак переноса. Другие признаки не меняются. CLD Сброс признака направления Логика: DF = 0 (Разрешает инкремент в командах обработки строк). Сброшенный признак направления влечет увеличение SI и DI на единицу в командах обработки строк. CLI Сброс признака разрешения прерывания Логика: IF = 0. Немаскированные прерывания распознаются процессором всегда, независимо от значения признака IF. CMC Инвертирование признака переноса Команда: CMC. Логика: CF = -CF. ESC Выборка кода операции и операнда Команда: ESC opcode,source. Команда ESC используется для передачи управления от микропроцессора внешнему процессору. В ответ на ESC микропроцессор выбирает код операции для внешнего процессора (opcode) и код операнда source и помещает их в шину BUS. Внешний процессор поджидает команду ESC и выполняет команду, размещенную в шине, используя исполнительный адрес source. HLT Остановка Эта команда производит останов ЦП и переводит его в состояние ожидания сигнала сброса или сигнала немаскированного прерывания. LOCK Блокирование шины BUS LOCK - это однобайтный префикс, который может предшествовать любой команде. LOCK заставляет процессор выработать сигнал блокировки шины на время выполнения последующей команды. Использование сигнала блокировки делает шину недоступной для любого внешнего устройства или события, включая прерывания и передачу данных. NOP Нет операции Команда NOP является пустым оператором. Она часто используется в целях подгонки времени, для выравнивания памяти и как "держатель места". STC Установка признака переноса Логика: CF = 1 STC устанавливает признак переноса CF в единицу. Другие признаки не меняются. STD Установка признака направления Логика: DF = 1 (декремент в командах обработки строк) Установление DF в 1 влечет изменение SI и DI в сторону уменьшения в командах обработки строк. STI Установка признака разрешения прерывания Логика: IF = 1. WAIT Ожидание Команда: WAIT. Команда WAIT переводит процессор в состояние ожидания. Процессор будет оставаться в неактивном состоянии, пока на входной линии TEST микропроцессора не появится сигнал. 9. Система обработки прерываний. Команды программных прерываний. Прерывание Прерывание - асинхронная прозрачная процедура (функция), вызываемая по внешнему событию. Прерывание - это событие / сигнал, заставляющий ЦП изменить текущий порядок исполнения команд процесса. Существуют аппаратные и программные прерывания. Аппаратные прерывания инициируются аппаратурой (например, сигнал микросхемы таймера), сигналом принтера, нажатием клавиш и т.д. Программные прерывания инициируются процессом и ничего не прерывают. Это обычные процедуры, которые используются программами для выполнения рутиной работы. Однако, эти программы содержатся в ОС, и механизм прерываний дает возможность обратиться к ним из программ пользователей. Программные прерывания могут быть вложенными. Так, аппаратные прерывания могут возникнуть при выполнении программных. Когда разрешенное прерывание вызывается, ЦП оставляет свою работу, выполняет прерывание, затем возвращается в место прерывания. Обработка прерываний состоит в следующем: 1. При возникновении прерывания, управление передается в ОС. 2. ОС запоминает состояние прерванного процесса в PCB процесса. 3. ОС анализирует тип прерывания и передает управление соответствующему обработчику. После обработки прерывания ОС либо продолжает выполнять процесс, либо запускает готовый процесс с наивысшим приоритетом. Команды прерывания
Команда: INT interrupt-num. Логика : PUSHF ;загрузка регистра FLAGS в стек TF = 0 ;сброс разряда трассировки IF = 0 ;запрещаем прерывания CALL FAR (INT*4) ;вызываем обработчик прерываний Команда INT загружает регистр FLAGS в стек, сбрасывает признаки трассировки и разрешения прерывания, загружает CS и IP в стек, затем передает управление обработчику прерываний, который определяется по значению операнда interrupt-num. Если обработчик прерываний производит возврат по команде IRET, то исходное значение регистра FLAGS восстанавливается.
Команда: INTO. Логика: if (OF = 1) PUSHF ;загрузка регистра FLAGS в стек TF = 0 ;сброс разряда трассировки IF = 0 ;запрещаем прерывания CALL FAR (10h) ;вектор прерывания INTO расположен по адресу 0000:0010h Команда INTO активизирует прерывание типа 4, если признак переполнения OF равен 1; если OF = 0, то эта команда не выполняет никаких действий. Если OF = 1, то прерывание выполняется аналогично команде INT 4; в этом случае INTO загружает регистр FLAGS в стек, сбрасывает признаки трассировки и разрешения прерывания, загружает CS и IP в стек, затем передает управление обработчику прерываний, соответствующему типу 4 и на который указывает вектор по адресу 10h. Если обработчик прерываний про изводит возврат по команде IRET, то исходное значение регистра FLAGS восстанавливается.
Команда: IRET. Логика: POP IP POP CS POPF ;пересылка слова из стека в регистр FLAGS Команда IRET передает управление из подрограммы обработки прерываний в место возникновения прерывания, восстанавливая из стека значения регистров IP, CS и FLAGS. 10. Структура выполнимой программы в MS-DOS, загрузка и инициализация exe- и com-программ. Программы с расширением .СОМ, которые имеют максимальный размер около 64 К, и программы с расширением .ЕХЕ, которые могут иметь размер наибольшей доступной памяти. Программы типа .СОМ соответствуют минимальной модели, в которой все сегментные регистры содержат одну и ту же величину, т.е. программа и данные объединены. В противоположность этому программы типа .ЕХЕ образуют малую, среднюю или большую модели, в которых регистры сегмента содержат различные величины, т.е. программа, данные и стек постоянно находятся в отдельных сегментах. Программы типа .ЕХЕ могут иметь много сегментов программ и данных, адресация к которым осуществляется при помощи длинных вызовов и манипуляций е регистром сегмента данных DOS Оба типа программ с расширением .СОМ и .ЕХЕ переносятся в память для выполнения с помощью одного и того же механизма, а именно функции ЕХЕС, которая образует загрузчик системы МS DOS. Функция ЕХЕС может вызываться с именем файла программы, загружаемой СОММАND.СОМ (обычным интерпретатором командной строки системы МS DOS) либо другой оболочкой, пользовательским интерфейсом или другой программой, которая была загружена раньше с помощью ЕХЕС. Если в области транзитных программ достаточно свободной памяти, то ЕХЕС выделяет блок памяти под новую программу, строит префикс сегмента программы (РSР) по его базовому адресу, а затем считывает программу в память непосредственно над РSР. В конце своей работы ЕХЕС устанавливает регистры сегмента и стека и передает управление программе. Программы с расширением .СОМ и .ЕХЕ часто называют транзитными программами. Транзитная программа на время своего выполнения "владеет" блоком выделенной ей памяти и имеет почти полный контроль над системными ресурсами. При завершении работы такой программы выделенный ей блок памяти освобождается (отсюда термин "транзитный"). Program Segment Prefix (рус. Префикс программного сегмента, PSP) — структура данных, которая используется в операционных системах семейства DOS и CP/M для сохранения состояния компьютерных программ. В префиксе по относительному адресу 0000Н находится команда передачи управления системному обработчику завершения процесса, который удаляет программу после ее выполнения и осуществляет окончательный выход. По относительному адресу 0005Н находится команда связи с диспетчером функций МS DOS, который осуществляет дисковые операции, операции ввода-вывода через консоль и другое сервисное обслуживание по запросу транзитной программы. Программы типа .СОМ хранятся на диске в виде файлов, в которых содержится абсолютный образ машинных команд, предназначенных для выполнения. Tак как программы типа .СОМ загружаются непосредственно над префиксом сегмента программы и, кроме того, не имеют заголовка, который может задавать другую точку входа, то их начальный адрес всегда составляет 0100H, что определено размером префикса. Программы типа .EXE могут быть практически неограниченного размера. Загрузчик всегда вводит программу типа .ЕХЕ в память непосредственно над префиксом сегмента программы, хотя порядок сегментов программы, данных и стека может меняться. Файл типа .ЕХЕ содержит заголовок, или блок управляющей информации характерного формата. Размер заголовка определяется числом команд программы, настраиваемых во время загрузки, но всегда кратен 512 байт. До того как DOS передает управление программе, вычисляются начальные значения регистра сегмента программы CS и указателя команд IP, при этом используются информация о точке входа из заголовка файла типа .ЕХЕ, а также адрес загрузки программы. Эта информация извлекается из оператора ЕND исходного текста одного из модулей программы. Программа типа .ЕХЕ, поступающая на вход компоновщика, может состоять из большого числа отдельных объектных модулей. Допускается, чтобы каждый модуль использовал уникальное имя сегмента программы, а процедуры имени атрибут либо NEAR, либо FAR в зависимости от условий определения имени и размеров выполнимой программы. Программист должен заботиться о том, чтобы компонуемые вместе модули содержали только один сегмент с атрибутом SТАСК и только одну точку входа, определяемую директивой ассемблера ЕND. 11.Этапы подготовки программы: трансляция. Управление трансляцией. Трансляция программы — преобразование программы, представленной на одном из языков программирования, в программу на другом языке, эквивалентную по результатам выполнения первой. Трансляция исходного текста программы состоит в преобразовании строк исходного языка в коды машинных команд и выполняется с помощью транслятора с языка ассемблера (т.е. с помощью программы ассемблера). В результате трансляции образуется объектный файл с расширением .obj. TASM предоставляет средства для вывода текстового сообщения во время трансляции программы - директивы DISPLAY и %OUT. С их помощью можно, при необходимости, следить за ходом трансляции. К примеру: display недопустимые аргументы макрокоманды ... %out недопустимое имя регистра В результате обработки этих директив на экран будут выведены тексты сообщений. Если эти директивы использовать совместно с директивами условной компиляции, то, к примеру, можно отслеживать путь, по которому осуществляется трансляция исходного текста программы. /l — указывает на необходимость создания файла листинга, даже если он не “заказывается” в командной строке; /la — показать в листинге код, вставляемый транслятором для организации интерфейса с языком высокого уровня по директиве MODEL /zi — включить в объектный файл информацию для отладки; /zd — поместить в объектный файл информацию о номерах строк, что необходимо для работы отладчика на уровне исходного текста программы; /zn — запретить помещение в объектный файл отладочной информации. 12.Этапы подготовки программы: компоновка и выполнение. Управление компоновкой. Компоновка объектного файла выполняется с помощью программы компоновщика (редактора связей). Основное назначение — подсоединение к файлу с основной программой файлов с подпрограммами и настройка связей между ними. Изменение формата объектного файла и преобразование его в выполнимый файл, который может быть загружен в оперативную память и выполнен. В результате компоновки образуется загрузочный, или выполнимый файл с расширением *.exe. Управление компоновкой: Ассемблер должен получить от программиста информацию о подпрограммах, относящихся к другому программному модулю. Это выполняется с помощью оператора PUBLIC, извещающего ассемблер о том, что данное символическое имя доступно другим программам. Кроме того, программист указывает ассмеблеру, какие из символических имен является внешними для данного программного модуля. В языке ассемблера это реализуется оператором EXTRN, который объявляет соответствующее имя внешним для текущего ассемблирования, чтобы оно могло быть правильно обработано. Оператор EXTRN выполняет две фуекции. Во-первых, он сообщает ассемблеру, что указанное символическое имя является внешним для текущего ассемблирования. Вторая функция оператора EXTRN состоит в том, что он указывает ассемблеру тип соответствующего символического имени. Это позволяет генерировать правильные команды. От программиста требуется указать в операторе EXTRN тип символического имени. Так как кроме того ассемблером осуществляется посегментная адресация программы, то оператор EXTERN указывает на сегмент, в котором появляется данный идентификатор. Это не входит в синтаксис оператора EXTRN, а определяется местоположением этого оператора в программе. Ассемблер считает, что внешнее имя относится к тому же сегменту, в котором появляется оператор EXTERN для этого символического имени. Опции компоновщика (редактора связей) TLINK /m Создать файл карты /l Создать раздел в файле карты с номерами строк /v Включить отладочную информацию в выполняемый файл /d Предупреждать о дублировании символов в компонуемых библиотеках /t Создать файл типа .com (по умолчанию .exe) 13.Элементы языка ассемблера: переменные, константы, метки, форматы команд и директив. Переменные Удобно определять и применять символические имена, соответствующие адресам указанных элементов. Переменная - это единица программных данных, имеющая символическое имя. Большинство ассемблерных программ начинается с определения данных, которыми они будут оперировать. Распределение ячеек памяти и присвоение им идентификаторов осуществляется с помощью директив DB (Define Byte - определить байт), DW (Define Word - определить слово), DD (Define Doubleword - определить двойное слово), DQ (Define Quadword - определить 4 слова) или DT (Define Tenbyte - определить 10 байтов). Для задания начальных значений могут использоваться числовые константы и символьные цепочки. Если не нужно задавать начальное значение переменной, то вместо константы ставится вопросительный знак. Чтобы точно определить тип переменной, на которую производится ссылка, ассемблер использует операторы BYTE PTR, WORD PTR и DWORD PTR (указатель на байт, слово и двойное слово соответственно). Для инициализации массивов применяется конструкция DUP, которая в общем случае имеет вид: n DUP (нач. значение, нач. значение, ...) где параметр n задает число повторений элементов, находящихся в круглых скобках. Метки Метка представляет собой символическое имя для адреса ячейки памяти и предназначена для использования в качестве операнда в командах управления. Числовые константы Константа - это численное значение, вычисляемое во время ассемблирования по заданному выражению. Численные константы допускается представлять в системах счисления с основаниями 2, 8, 10 и 16. За младшей цифрой должен находиться однобуквенный дескриптор системы счисления: B - двоичная, O или Q - восьмеричная, D (необязательно) - десятичная, H-шестнадцатиричная. Шестнадцатиричная константа должна быть дополнена слева незначащим нулем. Символьные константы Символьная константа - это любой символ в коде ASCII. Символьная строка может содержать до 255 символов и должна быть заключена в одиночные кавычки. Команды языка ассемблера представляют взаимно однозначное соответствие с машинными кодами. В простейшем варианте они состоят из мнемокода команды с послеующими операндами. Все это непосредственно преобразуется в машинные коды. Команды могут либо иметь, либо не иметь операндов, как показано на примере ниже. CLC ; мнемокод INC EAX ; мнемокод с одним операндом MOV EAX,EBX ; мнемокод с двумя операндами Ассемблер является языком низкого уровня, потому что его команды, по сути, машинные, т.е. команды языка ассемблера имеют взаимно однозначное соответствие с машинными кодами. Операнд может быть регистром, переменной, ячейкой памяти или непосредственным Значением 10 (непосредственное значение) count (переменная) EAX (регистр) [0200] (ячейка памяти) Директивы языка – это ассемблерные команды, которые встречаются в исходном коде, но не транслируются прямо в исполняемые коды. Они используются ассемблером при трактовке мнемоники входного файла, размещении данных и формировании файла листинга. Существует четыре основных типа директив в MPASM: директивы данных; директивы листинга; управляющие директивы; макро-директивы. 14.Выражения ассемблера. Типы операндов. Примеры использования. Выражения могут быть использованы в инструкциях или директивах и состоят из операндов и операторов. Операнды представляют значения, регистры или адреса ячеек памяти, используемых определенным образом по контексту программы. Операторы выполняют арифметические, логические, побитовые и другие операции над операндами выражений. Постоянные или непосредственные операнды — число, строка, имя или выражение, имеющие некоторое фиксированное значение. Адресные операнды — задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. Перемещаемые операнды — любые символьные имена, представляющие некоторые адреса памяти. Сегментная составляющая адреса перемещаемого операнда неизвестна и будет определена после загрузки программы в память для выполнения. Счетчик адреса — специфический вид операнда. Он обозначается знаком $. Когда транслятор ассемблера встречает в исходной программе этот символ, то он подставляет вместо него текущее значение счетчика адреса. Регистровый операнд — это просто имя регистра. Базовый и индексный операнды. Этот тип операндов используется для реализации косвенной базовой, косвенной индексной адресации или их комбинаций и расширений. Структурные операнды используются для доступа к конкретному элементу сложного типа данных, называемого структурой. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи. Операнд команды может быть выражением, представляющим собой комбинацию операндов и операторов ассемблера. Транслятор ассемблера рассматривает выра- жение как единое целое и преобразует его в числовую константу. Арифметические операторы. выражение_1 * выражение_2 выражение_1 / выражение_2 выражение_1 MOD выражение_2 выражение_1 + выражение_2 выражение_1 – выражение_2 + выражение – выражение Эти операторы обеспечивают выполнение основных арифметических действий (здесь MOD - остаток от деления выражения_1 на выражение_2, а знаком / обозначается деление нацело). Результатом арифметического оператора является абсолютное значение. Операторы сдвига. Операторы SHR и SHL сдвигают значение выражения соответственно вправо и влево на число разрядов, определяемое счетчиком. Биты, выдвигаемые за пределы выражения, теряются. Замечание: не следует путать операторы SHR и SHL с одноименными инструкциями процессора. Операторы отношений. выражение_1 EQ выражение_2 выражение_1 NE выражение_2 выражение_1 LT выражение_2 выражение_1 LE выражение_2 выражение_1 GT выражение_2 выражение_1 GE выражение_2 Мнемонические коды отношений расшифровываются следующим образом: EQ – равно;NE – не равно;LT – меньше;LE – меньше или равно;GT – больше;GE – больше или равно. Операторы отношений обычно используются в директивах условного ассемблирования и инструкциях условного перехода. Операции с битами. NOT – инверсия;AND – логическое И;OR – логическое ИЛИ;XOR – исключающее логическое ИЛИ.Операции выполняются над каждыми соответствующими битами выражений. Выражения должны иметь абсолютные значения. Оператор индекса [] складывает указанные выражения подобно тому, как это делает оператор +, с той разницей, что первое выражение необязательно, при его отсутствии предполагается 0 (двойные квадратные скобки указывают на то, что операнд не обязателен). При помощи оператора PTR переменная или метка, задаваемая выражением, может трактоваться как переменная или метка указанного типа. Операторы HIGH и LOW вычисляют соответственно старшие и младшие 8 битов значения выражения. Выражение может иметь любое значение. SEG выражение вычисляет значение атрибута СЕГМЕНТ выражения. Выражение может быть меткой, переменной, именем сегмента, именем группы или другим символом. OFFSET выражение вычисляет значение атрибута СМЕЩЕНИЕ выражения. 15.Операторы ассемблера. Примеры использования. Операторы машинных команд представляют символическую форму записи обычных команд ЕС ЭВМ. Набор операторов этих команд определяется системой команд ЕС ЭВМ. Операторы команд Ассемблера определяют действия транслятора при переводе исходной программы на машинный язык. |
Визуальные средства создания, отладки и анализа программ для параллельных вычислений |
Руководство пользователя «dymo label Software» Модели: «LabelWriter» 300, 310, 320, 330, 330 Turbo, 400, 400 Turbo, Twin Turbo, Duo |
||
Техническое задание на проведение открытого запроса предложений по... Общество с ограниченной ответственностью «Судостроительный комплекс «Звезда» (ооо «сск «Звезда») (далее – Лицензиат), проводит закупку... |
1 цель работы Целью работы является освоение инструментальных средств создания и отладки программ на языке ассемблера |
||
Инструкция по применению автомобильного трансивера Си-Би диапазона... Кнопка c быстрый переход в 9-й канал. В многосеточном режиме служит для переключения сеток |
Использование общеразвивающих компьютерных игр и программ в работе с детьми с овз Особое место среди компьютерных программ занимают специализированные программы для детей с различными нарушениями развития |
||
Дипломная работа тема: использование flash технологий при разработке сайта В последние годы мультимедиа стало образом жизни для многих пользователей компьютеров, сделав программы и игры более интересными... |
Техническое задание На предоставление права на использование по редактирования... На предоставление права на использование по редактирования и визуализации управляющих программ для станков с чпу на условиях простой... |
||
Руководство пользователя «Интернет-Банк» Объем памяти и свободного дискового пространства, отсутствие установленных на пэвм клиента средств разработки и отладки и др программ... |
Это один из самых простых языков, но далеко не один из самых слабых.... Программы на Turbo Pascal пишутся только для платформы ms-dos, но никак не зависят от конфигурации компьютера. Главным требованием... |
||
Инструкция по участию в открытом Запросе предложений 11 Общий порядок... Лот №1: Передача неисключительных прав на использование программ для ЭВМ и поставка Товара |
Котировочная заявка О. (для физического лица); место нахождения (для юридического лица), место жительства (для физического лица); банковские реквизиты),... |
||
Инструкция по применению автомобильного трансивера Си-Би диапазона... Регулятор vr. Предназначен для включения/выключения радиостанции и регулировки громкости |
Практическая работа 8 Целью работы является закрепление теоретических знаний по разделу «архитектура набора команд» компьютера и получение практических... |
||
Сборник тестов «Структуры данных в языке Turbo Pascal» по дисциплине «Основы программирования» |
Доклад о ходе реализации и оценке эффективности муниципальных Программ... Программ, представленных администраторами Программ в соответствии с Порядком разработки, реализации и оценки эффективности муниципальных... |
Поиск |