Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпорки_2.docx
Скачиваний:
9
Добавлен:
09.02.2015
Размер:
874.63 Кб
Скачать

Вопрос №29

Обмен данными с внешней средой осуществляемся с помощью следующих команд:

IN <регистр>, <порт> (ввод из порта в регистр),

IN <регистр >, DX (ввод из порта, номер которого указан в регистре DX в регистр);

OUT <порт>, <регистр> (вывод содержимого регистра в порт),

OUT DX, <регистр> ( вывод содержимого регистра в порт, номер которого указан в регистре DX).

В качестве регистра можно указать AL или AX (соответственно будет обрабатываться байт или два байта). Порт отождествляется с некоторым внешним устройством (0...255).

Однако при организации ввода - вывода помимо самой операции необходимо осуществить ряд дополнительных действий, например, проверить готовность устройства. В связи с этим для типовых устройств разработаны стандартные программы организации ввода - вывода, которые вызываются по команде прерывания int 21h.

Примеры:

a) mov ah, 1 ; номер функции

int 21h ; ввод символа: символ в AL

б) mov ah, 2 ; номер функции

mov dl, 'A'

int 21h ; вывод символа из DL

в) lea dx, STRING ; адрес буфера ввода

mov ah, 0Ah ; номер функции

int 21h ; ввод строки: во втором байте буфера - количество ... ;

STRING db 50, 50 dup (?)

г) lea dx, MSG ; адрес выводимой строки

mov ah, 9 ; номер функции

int 21h ; вывод строки ...

MSG db 'Пример вывода', 13, 10, '$'

Вопрос №30

add операнд_1,операнд_2

Команда выполняет поразрядно логическую операцию И (конъюнкцию) над битами операндов

or операнд_1,операнд_2 — операция логического сложения. Команда выполняет поразрядно логическую операцию ИЛИ (дизъюнкцию) над битами операндов

хог операнд_1,операнд_2 — операция логического исключающего сложения. Команда выполняет поразрядно логическую операцию исключающего ИЛИ надбитами операндов

test операнд_1,операнд_2 — операция проверки (способом логического умножения).

Команда выполняет поразрядно логическую операцию Я над битами операндов операнд_1 и операнд_2. Состояние операндов остается прежним, изменяются только флаги ZF, SF, и PF, что дает возможность анализировать состояние отдельных битов операнда без изменения их состояния в исходных операндах.

not операнд — операция логического отрицания.

Команда выполняет поразрядное инвертирование (замену значения на обратное) каждого бита операнда.

Для установления определенных размеров в 1 применяется команда OR.

Вопрос №31

Команды передачи управления изменяют содержимое регистров CS и EIP

По принципу действия команд процессора, обеспечивающие организацию

переходов в программе, можно разделить на три группы.

  1. Команды безусловной передачи управления:

    1. безусловного перехода;

    2. вызова процедуры и возврата из процедуры;

    3. вызова программных прерываний и возврата из программных прерываний

  2. Команды условной передачи управления:

    1. перехода по результату команды сравнения;

    2. перехода по состоянию определенного флага;

    3. перехода по содержимому регистра ЕСХ/СХ.

  3. Команды управления циклом:

    1. организации цикла со счетчиком ЕСХ/СХ;

    2. организации цикла со счетчиком ЕСХ/СХ с возможностью досрочного выхода из цикла по дополнительному условию.

В языке ассемблера это делается с помощью меток.

  1. Оператором: (m1:)

  2. директивой LABEL

Подобно переменной, транслятор ассемблера присваивает любой метке три атрибута:

  1. имя сегмента кода, где эта метка описана;

  2. смещение — расстояние в байтах от начала сегмента кода, в котором описана

метка;

  1. тип, или атрибут расстояния, метки.

near — переход на метку возможен только в пределах сегмента кода, где эта метка описана, то есть для перехода на метку физически достаточно изменить только содержимое регистра EIP/IP;

far — переход на метку возможен только в результате межсегментной передачи управления, для осуществления которой требуется изменение содержимого как регистра EIP/IP, так и регистра CS.

С помощью оператора: можно определить метку только ближнего типа — near. Определенную таким образом метку можно использовать в качестве операнда в командах условных переходов и безусловного перехода.

Для директивы LABELтип метки может иметь значение near или far.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]