Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CП_Ответы.doc
Скачиваний:
15
Добавлен:
27.09.2019
Размер:
281.09 Кб
Скачать
  1. Назовите команды условного перехода. Укажите источники условия перехода. Опишите синтаксис каждой команды и принцип ее работы. Приведите примеры использования команд условного перехода.

Микропроцессор имеет 18 команд условного перехода.

Команды условного перехода(несколько): jcc,jcxz/jecxz, je, jz, jg, jge, jl, jle

Источниками условия могут быть:

  • любая команда, изменяющая состояние арифметических флагов;

  • команда сравнения cmp, сравнивающая значения двух операндов;

  • состояние регистра ecx/cx.

Команды условного перехода имеют одинаковый синтаксис:

jcc метка_перехода

Мнемокод всех команд начинается с “j” (от слова Jump) , cc — определяет конкретное условие, анализируемое командой.

Назначение: переход внутри текущего сегмента команд в зависимости от некоторого условия.

JCXZ/JECXZ - Переход, если CX/ECX равен нулю

je - Переход, если равно

JZ - Переход, если 0

JG - Переход, если больше

JGE - Переход, если больше или равно

JL - Переход, если меньше

JLE - Переход, если меньше или равно

Пример:

cmp     ax,len

        je     m1   

....

m1:  

  1. Приведите структуру машинной команды. Опишите назначение полей машинной команды.

СТРУКТУРА: КОД ОПЕРАЦИИ Байт modr/m Байт sib Смещение в команде Непосредственный операнд. Байт режима адресации modr/m - значение этого адреса определяет используемую форму адреса операндов (память, регистры). Байт масштаб-индекс (база sib) - используется для расширения возможностей адресации операндов. Поле смещения в команде - представляет собой значение эффективного адреса операнда. Поле непосредственного операнда - представляет собой непосредственный операнд. Большинство команд требует двух операндов, один из которых является операндом-источником, а второй операндом- назначения. Способ задания операндов: Операнд задается неявно на микропрограммном уровне (напр CLD), Операнд задается в самой команде (непосредственный операнд) (напр mov ah, 09h), Операнд находится в одном из регистров (mov ax,dx), Операнд располагается в памяти, Операндом является порт ввода-вывода, Операнд находится в стеке.

  1. Назовите команды сравнения. Опишите синтаксис каждой команды и принцип ее работы. Приведите пример встраивания в код программы на ассемблере команд сравнения. Команды сравнения: cmp, test

Синтаксис:

cmp операнд1,операнд2 

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

Алгоритм работы CMP:

  • выполняет вычитание (операнд1-операнд2);

  • в зависимости от результата установить флаги, операнд1 и операнд2 не изменяются (то есть результат не запоминается).

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

Пример:

cmp     ax,len

jne     m1      ;переход если (ax)<>len

jmp     m2      ;переход если (ax)=len

test ax,bx

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