- •Структурная схема пэвм
- •3. Внешние устройства пэвм
- •Архитектура локальных сетей
- •Краткая классификация лвс
- •Способ управления
- •Архитектура сети
- •Методы доступа в локальных вычислительных сетях
- •1.2. Защита локальной сети
- •9.1. Структура и принципы работы ms-dos
- •1.1. Основные компоненты операционной системы
- •Драйверы
- •Внешние команды
- •Подготовка системной дискеты
- •Программа fdisk
- •Резидентные программы
- •1.2. Процесс загрузки операционной системы
- •1.3. Состав и общая схема работы ms-dos
- •Файловая система
- •Работа с файлами
- •Работа с каталогами
- •Командная строка
- •1.4.1.3. Защита от компьютерных вирусов Компьютерные вирусы и их методы классификации
- •Признаки заражения пк вирусом
- •Краткая сводка рабочих клавиш Norton Comander
- •Меню norton commander
- •Использование манипулятора "Мышь"
- •Перемещение окна
- •Изменение размера окна
- •Закрытие окна
- •Переключение между окнами
- •Упорядочение окон при помощи привязки
- •Чтобы расположить окна рядом, выполните следующие действия.
- •Чтобы развернуть окно по вертикали, выполните следующие действия.
- •Чтобы полностью развернуть окно, выполните следующие действия.
- •Управление файлами и папками
- •Чтобы предоставить общий доступ к папке или диску
- •Чтобы включить теневые копии общих папок
- •Чтобы изменить параметры теневых копий общих папок
- •Сведения о функциональных различиях
- •23. Команды пересылки данных на языке ассемблер
- •Команды пересылки данных общего назначения
- •Команды ввода-вывода в порт
- •Команды работы с адресами и указателями памяти
- •Команды преобразования данных
- •Xlat [адрес_таблицы_перекодировки]
- •Команды работы со стеком
- •25. Команды передачи управления
- •Безусловные переходы
- •Команда безусловного перехода jmp
- •Процедуры
- •Условные переходы
- •Команда сравнения cmp
- •Команды условного перехода и флаги
- •Команды условного перехода и регистр ecx/cx
- •Организация циклов
- •26. Организация циклов
- •1.6. Система прерываний
Команда безусловного перехода jmp
Синтаксис команды безусловного перехода jmp [модификатор] адрес_перехода - безусловный переход без сохранения информации о точке возврата.
Адрес_перехода представляет собой адрес в виде метки либо адрес области памяти, в которой находится указатель перехода.
Всего в системе команд микропроцессора есть несколько кодов машинных команд безусловного перехода jmp. Их различия определяются дальностью перехода и способом задания целевого адреса. Дальность перехода определяется местоположением операнда адрес_перехода. Этот адрес может находиться в текущем сегменте кода или в некотором другом сегменте. В первом случае переход называется внутрисегментным, или близким, во втором — межсегментным, или дальним. Внутрисегментный переход предполагает, что изменяется только содержимое регистра eip/ip. Можно выделить три варианта внутрисегментного использования команды jmp:
прямой короткий;
прямой;
косвенный.
Процедуры
В языке ассемблера есть несколько средств, решающих проблему дублирования участков программного кода. К ним относятся:
механизм процедур;
макроассемблер;
механизм прерываний.
Процедура, часто называемая также подпрограммой, — это основная функциональная единица декомпозиции (разделения на несколько частей) некоторой задачи. Процедура представляет собой группу команд для решения конкретной подзадачи и обладает средствами получения управления из точки вызова задачи более высокого уровня и возврата управления в эту точку. В простейшем случае программа может состоять из одной процедуры. Другими словами, процедуру можно определить как правильным образом оформленную совокупность команд, которая, будучи однократно описана, при необходимости может быть вызвана в любом месте программы.
Для описания последовательности команд в виде процедуры в языке ассемблера используются две директивы: PROC и ENDP.
Синтаксис описания процедуры таков (рис. 1).
Рис. 1. Синтаксис описания процедуры в программе
Из рис. 1 видно, что в заголовке процедуры (директиве PROC) обязательным является только задание имени процедуры. Среди большого количества операндов директивы PROC следует особо выделить [расстояние]. Этот атрибут может принимать значения near или far и характеризует возможность обращения к процедуре из другого сегмента кода. По умолчанию атрибут [расстояние] принимает значениеnear.
Процедура может размещаться в любом месте программы, но так, чтобы на нее случайным образом не попало управление. Если процедуру просто вставить в общий поток команд, то микропроцессор будет воспринимать команды процедуры как часть этого потока и соответственно будет осуществлять выполнение команд процедуры. Более подробно вопросы, связанные с описанием и использованием процедур в программах ассемблера, рассматриваются на уроках 10 и 14. Примеры использования процедур вы можете посмотреть в приложении 7.
Условные переходы
Микропроцессор имеет 18 команд условного перехода (см. “Описание команд”). Эти команды позволяют проверить:
отношение между операндами со знаком (“больше — меньше”);
отношение между операндами без знака (“выше — ниже”)2;
состояния арифметических флагов zf, sf, cf, of, pf (но не af).
Команды условного перехода имеют одинаковый синтаксис: jcc метка_перехода
Как видно, мнемокод всех команд начинается с “j” — от слова jump (прыжок), cc — определяет конкретное условие, анализируемое командой. Что касается операнда метка_перехода, то эта метка может находится только в пределах текущего сегмента кода, межсегментная передача управления в условных переходах не допускается. В связи с этим отпадает вопрос о модификаторе, который присутствовал в синтаксисе команд безусловного перехода. В ранних моделях микропроцессора (i8086, i80186 и i80286) команды условного перехода могли осуществлять только короткие переходы — на расстояние от –128 до +127 байт от команды, следующей за командой условного перехода. Начиная с модели микропроцессора 80386 это ограничение снято, но, как видите, только в пределах текущего сегмента кода.
Для того чтобы принять решение о том, куда будет передано управление командой условного перехода, предварительно должно быть сформировано условие, на основании которого и будет приниматься решение о передаче управления. Источниками такого условия могут быть:
любая команда, изменяющая состояние арифметических флагов;
команда сравнения cmp, сравнивающая значения двух операндов;
состояние регистра ecx/cx.
Обсудим эти варианты, чтобы разобраться с тем, как работают команды условного перехода.