Методическое пособие по решению задач лабораторного практикума по курсу "ЭВУ и системы" (изучение архитектуры и системы команд INTEL-совместимых микропроцессоров). Коршунов А.Д. - 11 стр.

UptoLike

Составители: 

11
случаях программа завершается обычно той или иной командой передачи управления
операционной системе.
NOP (28, No Operation) - так называемая «пустая» команда, при выполнении
которой МП не выполняет никаких действий, кроме увеличения содержимого своего
счётчика команд. Применяется для разного рода временных задержек и отладочных целей.
OUT (29) - команда вывода информации в порт того или иного внешнего
устройства (ВУ). Номер порта, который может находиться в пределах 0…65535 (16-
разрядное слово без знака), обычно предварительно записывается в регистр DX. В случае,
если номер порта не превосходит 0…255, его можно задать непосредственно константой в
команде.
IN (30) - команда ввода информации из порта ВУ.
XLAT (31) - команда табличной перекодировки. Таблица (набор байтов),
содержащая данные для перекодировки, размером не более 256 байт, размещается в ОЗУ
(в сегменте DS), а её начальный адрес - в регистре BX. При выполнении команды
содержимое регистра AL используется в качестве относительного адреса элемента
таблицы, из которого байт пересылается в AL. Команда очень удобна в тех случаях, когда
по одному набору байтов нужно получить другой, скажем, при кодировании десятичных
цифр кодом «2 изили кодом Грея. Соответствующий пример будет рассмотрен ниже.
Команды передачи управления (Таблица 6). Сюда относятся:
команда безусловного перехода (JMP);
команды условных переходов (для чисел со знаком, без знака и произвольных);
команды для работы с подпрограммами;
команды для работы с прерываниями;
команды организации циклов.
Команда JMP address (jump - прыжок) позволяет передать управление на адрес
address (осуществить переход на метку) независимо от значений каких-либо флагов.
Метка может находиться на любом расстоянии (в байтах) от точки расположения команды
JMP и даже в другом сегменте памяти.
Команды условных переходов осуществляют передачу управления в зависимости
от результатов предыдущих операций. Наличие разных наборов команд для чисел со
знаком и без знака объясняется тем, что одним и тем же соотношениям чисел со знаком и
чисел без знака соответствуют различные сочетания флагов.
Всякая команда условного перехода (обозначим её в общем виде Jcc address)
выполняется следующим образом: проверяется регистр флагов FLAGS; если состояние
флагов отвечает определённым условиям, то осуществляется переход на адрес address (на
указанную в команде метку). В противном случае выполняется следующая по порядку
команда.
В использованном выше обозначении под “cc” подразумевается Condition Code -
«код условия». В реальных мнемокодах команд (см. таблицу 6) при сравнении чисел со
знаком используются буквы G (Greater - больше) и L (Less - меньше), без знака - A (Above
- выше
) и B (Below - ниже). Условие равенства обозначается буквой E (Equal),
невыполнение какого-либо условия - буквой N (Not).
Команды условных переходов (а также и команды циклов) могут передавать
управление лишь на -128…+127 байт от точки своего расположения. При необходимости
более дальних переходов приходится организовывать их сочетания с командой JMP.
Команда CALL address (to call - вызывать) предназначена для организации
обращения к подпрограмме, расположенной по адресу address (с автоматическим
сохранением адреса возврата в стеке). Команда RET (to return - возвращаться)
применяется для возврата из подпрограммы в основную программу, при этом адрес
возврата берётся с вершины стека.
                                                                                     11
случаях программа завершается обычно той или иной командой передачи управления
операционной системе.
       NOP (28, No Operation) - так называемая «пустая» команда, при выполнении
которой МП не выполняет никаких действий, кроме увеличения содержимого своего
счётчика команд. Применяется для разного рода временных задержек и отладочных целей.
       OUT (29) - команда вывода информации в порт того или иного внешнего
устройства (ВУ). Номер порта, который может находиться в пределах 0…65535 (16-
разрядное слово без знака), обычно предварительно записывается в регистр DX. В случае,
если номер порта не превосходит 0…255, его можно задать непосредственно константой в
команде.
       IN (30) - команда ввода информации из порта ВУ.
       XLAT (31) - команда табличной перекодировки. Таблица (набор байтов),
содержащая данные для перекодировки, размером не более 256 байт, размещается в ОЗУ
(в сегменте DS), а её начальный адрес - в регистре BX. При выполнении команды
содержимое регистра AL используется в качестве относительного адреса элемента
таблицы, из которого байт пересылается в AL. Команда очень удобна в тех случаях, когда
по одному набору байтов нужно получить другой, скажем, при кодировании десятичных
цифр кодом «2 из 5» или кодом Грея. Соответствующий пример будет рассмотрен ниже.

       Команды передачи управления (Таблица 6). Сюда относятся:
   •   команда безусловного перехода (JMP);
   •   команды условных переходов (для чисел со знаком, без знака и произвольных);
   •   команды для работы с подпрограммами;
   •   команды для работы с прерываниями;
   •   команды организации циклов.

       Команда JMP address (jump - прыжок) позволяет передать управление на адрес
address (осуществить переход на метку) независимо от значений каких-либо флагов.
Метка может находиться на любом расстоянии (в байтах) от точки расположения команды
JMP и даже в другом сегменте памяти.
       Команды условных переходов осуществляют передачу управления в зависимости
от результатов предыдущих операций. Наличие разных наборов команд для чисел со
знаком и без знака объясняется тем, что одним и тем же соотношениям чисел со знаком и
чисел без знака соответствуют различные сочетания флагов.
       Всякая команда условного перехода (обозначим её в общем виде Jcc address)
выполняется следующим образом: проверяется регистр флагов FLAGS; если состояние
флагов отвечает определённым условиям, то осуществляется переход на адрес address (на
указанную в команде метку). В противном случае выполняется следующая по порядку
команда.
       В использованном выше обозначении под “cc” подразумевается Condition Code -
«код условия». В реальных мнемокодах команд (см. таблицу 6) при сравнении чисел со
знаком используются буквы G (Greater - больше) и L (Less - меньше), без знака - A (Above
- выше) и B (Below - ниже). Условие равенства обозначается буквой E (Equal),
невыполнение какого-либо условия - буквой N (Not).
     Команды условных переходов (а также и команды циклов) могут передавать
управление лишь на -128…+127 байт от точки своего расположения. При необходимости
более дальних переходов приходится организовывать их сочетания с командой JMP.
     Команда CALL address (to call - вызывать) предназначена для организации
обращения к подпрограмме, расположенной по адресу address (с автоматическим
сохранением адреса возврата в стеке). Команда RET (to return - возвращаться)
применяется для возврата из подпрограммы в основную программу, при этом адрес
возврата берётся с вершины стека.