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



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

 

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

Команды сравнения: CMP, TEST

Синтаксис:

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

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

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

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

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

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

Пример:

cmp ax,lenjne m1 ;переход если (ax)<>lenjmp m2 ;переход если (ax)=len

test         ax,bx

Назовите виды адресации операндов в памяти и принципы организации каждого вида адресации. Дайте описание синтаксиса каждого вида адресации. Приведите пример каждого вида адресации.

Прямая адресация: Эффективный адрес операнда содержится в самой команде и берется непосредственно из поля смещения машинной команды, т.е. для его формирования не используется никаких дополнительных источников или регистров. Полученное значение однозначно определяет ячейку памяти в сегменте данных. 1Относительная прямая адресация  - Используется для команд условных переходов, для указания относительного адреса перехода. Эффективный адрес берется непосредственно из поля смещения машинной команды, 2Абсолютная прямая адресация. Эффективный адрес является частью машинной команды и формируется из значения поля смещения в команде. Для формирования физического адреса операнда в памяти микропроцессор складывает это поле со сдвинутым на 4 бита значением сегментного регистра. 2Косвенная адресация: Косвенная базовая регистровая адресация Эффективный адрес операнда может находитья в любом из регистров общего назначения (исключая регистры sp/esp,bp/ebp). Т.к. содержимое регистра легко изменить в ходе работы программы, данный способ адресации позволяет динамически назначить адрес операнда для некоторой машинной команды (mov ax, [ecx]), Косвенная базовая регистровая адресация со смещением (mov   ax, [edx+3h]), Косвенная индексная адресация со смещением (mov   ax, mas[esi*2]), Косвенная базовая индексная адресация (mov eax, [esi] [edx]), Косвенная базовая индексная адресация сосмещением (mov eax, [esi+5] [edx]).

 

Перечислите команды линейного сдвига. Опишите синтаксис каждой команды и принцип ее работы. Укажите отличие команд арифметического линейного сдвига от команд логического сдвига. Приведите примеры использования команд линейного сдвига.

Команды линейного сдвига: SHL, SHR

Синтаксис:

SHL операнд,счетчик_сдвигов

SHR операнд,счетчик_сдвигов

SHL — логический сдвиг влево. Содержимое операнда сдвигается влево на количество битов, определяемое значением счетчик_сдвигов. Справа в позицию младшего бита вписываются нули.

SHR — логический сдвиг вправо. Содержимое операнда сдвигается вправо на количество битов, определяемое значением счетчик_сдвигов. Слева в позицию старшего (знакового) бита вписываются нули.

Команды арифметического линейного сдвига отличаются от команд логического сдвига тем, что они особым образом работают со знаковым разрядом операнда:

Пример:

shl ah,4

shr bx,6

 

Перечислите директивы резервирования и инициализации данных простых типов. Охарактеризуйте каждый тип с точки зрения формата представления и диапазона принимаемых значений. Приведите примеры использования директив резервирования и инициализации данных.

db — резервирование памяти для данных размером 1 байт. Директивой db можно задавать следующие значения: выражение или константу, принимающую значение из диапазона;8-битовое относительное выражение, использующее операции HIGH и LOW; символьную строку из одного или более символов. dw — резервирование памяти для данных размером 2 байта. Директивой dw можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; выражение, занимающее 16 или менее бит, в качестве которого может выступать смещение в 16-битовом сегменте или адрес сегмента; 1- или 2-байтовую строку, заключенная в кавычки. dd — резервирование памяти для данных размером 4 байта. Директивой dd можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; относительное или адресное выражение, состоящее из 16-битового адреса сегмента и 16-битового смещения; строку длиной до 4 символов, заключенную в кавычки. Df , dp — резервирование памяти для данных размером 6 байт. Директивами df и dp можно задавать следующие значения: выражение или константу, принимающую значение из диапазона; относительное или адресное выражение, состоящее из 32 или менее бит (для i80386) или 16 или менее бит (для младших моделей микропроцессоров Intel); адресное выражение, состоящее из 16-битового сегмента и 32-битового смещения; константу; строку длиной до 6 байт, заключенную в кавычки.

Очень важно уяснить себе порядок размещения данных в памяти. Он напрямую связан с логикой работы микропроцессора с данными. Микропроцессоры Intel требуют следования данных в памяти по принципу: младший байт по младшему адресу.

 


Дата добавления: 2018-05-09; просмотров: 400; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!