- •Оглавление
- •Вопрос №3
- •Вопрос №4
- •Вопрос №5
- •Вопрос №6 Системы исчисления
- •Вопрос №7
- •Вопрос №8
- •Вопрос №9
- •Вопрос №10
- •Вопрос №11
- •Вопрос №12
- •Вопрос №13
- •Вопрос №14
- •Вопрос №15
- •Вопрос №16
- •Вопрос №17
- •Вопрос №18
- •Вопрос №19
- •Вопрос №20
- •Вопрос 21
- •Вопрос 22
- •Вопрос 23
- •Вопрос №24
- •Вопрос № 25
- •Вопрос № 26
- •Вопрос №27
- •Вопрос №28
- •1. Команда пересылки данных.
- •Вопрос №29
- •Вопрос №30
- •Вопрос №31
- •Вопрос №32
- •Вопрос №33
- •Вопрос №33(Краткая версия)
- •1) Команда вызова процедуры.
- •2) Команда возврата управления.
- •Вопросы №34
- •Вопросы №35
- •Вопрос №36
- •1) Команда организации цикла.
- •2) Команда перехода по обнуленному счетчику.
- •3) Команды организации цикла с условием.
- •Вопрос №37
- •Вопросы №38
- •Вопрос №39
- •Вопрос №40
Вопрос №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
По принципу действия команд процессора, обеспечивающие организацию
переходов в программе, можно разделить на три группы.
Команды безусловной передачи управления:
безусловного перехода;
вызова процедуры и возврата из процедуры;
вызова программных прерываний и возврата из программных прерываний
Команды условной передачи управления:
перехода по результату команды сравнения;
перехода по состоянию определенного флага;
перехода по содержимому регистра ЕСХ/СХ.
Команды управления циклом:
организации цикла со счетчиком ЕСХ/СХ;
организации цикла со счетчиком ЕСХ/СХ с возможностью досрочного выхода из цикла по дополнительному условию.
В языке ассемблера это делается с помощью меток.
Оператором: (m1:)
директивой LABEL
Подобно переменной, транслятор ассемблера присваивает любой метке три атрибута:
имя сегмента кода, где эта метка описана;
смещение — расстояние в байтах от начала сегмента кода, в котором описана
метка;
тип, или атрибут расстояния, метки.
near — переход на метку возможен только в пределах сегмента кода, где эта метка описана, то есть для перехода на метку физически достаточно изменить только содержимое регистра EIP/IP;
far — переход на метку возможен только в результате межсегментной передачи управления, для осуществления которой требуется изменение содержимого как регистра EIP/IP, так и регистра CS.
С помощью оператора: можно определить метку только ближнего типа — near. Определенную таким образом метку можно использовать в качестве операнда в командах условных переходов и безусловного перехода.
Для директивы LABELтип метки может иметь значение near или far.