41639

Архитектура микропроцессоров

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Команда осуществляет изменение содержания определенного регистра или передачу содержимого определенного регистра в другой регистр. Команда работает с определенными ячейками памяти или регистрами называемыми операндами команд содержимое которых при выполнении команды читается и или записывается. Основной формат кодирования команд Ассемблера на примере IBM имеет следующий вид: [метка] команда [операнды]. Команда MOV с однобайтовым непосредственным операндом.

Русский

2013-10-24

42.81 KB

7 чел.

ЛАБОРАТОРНАЯ РАБОТА № 4

Архитектура микропроцессоров

Форматы команд. Дать описание разрядов

Форматы команд и система команд

Структура машинной программы обуславливается набором команд рассматриваемой ЭВМ и порядком обработки команд машиной. Команды, каждая из которых соответствует отдельной операции, обрабатываются процессором последовательно.

Команда осуществляет изменение содержания определенного регистра или передачу содержимого определенного регистра в другой регистр. Выполнение команды, таким образом, соответствует определенному переходу из одного состояния в другое. Возможные переходы машины из одного состояния в другое описываются набором ее команд. И наоборот, действие каждой команды исчерпывающим образом характеризуется осуществляемым изменением перехода.

Команда работает с определенными ячейками памяти или регистрами, называемыми операндами команд, содержимое которых при выполнении команды читается и/или записывается. Машины обычно представляют пользователю фиксированный набор элементарных команд. Для каждой из этих команд в аппаратуре машины имеется соответствующая ее часть для выполнения данной команды. Различают следующие типы команд:

  1.  команды загрузки и передачи;
  2.  арифметические команды (двоичная арифметика для чисел с фиксированной точкой, двоичная арифметика для чисел с плавающей запятой, десятичная арифметика);
  3.  логические операции, выполняемые поразрядно над двоичными словами, выполняемые поразрядно над двоичными словами;
  4.  операции с адресами;
  5.  команды сдвига и организационные команды;
  6.  команды завершения программы;
  7.  команды перехода и вызова подпрограмм;
  8.  команды ввода/вывода;
  9.  управляющие команды (привилегированные команды для изменения статуса программ).

Здесь команды классифицированы по их действию на различные составные части машины.

Основной формат кодирования команд Ассемблера (на примере IBM) имеет следующий вид:

 [метка] команда [операнд(ы)].

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

КОД        Обозначение

40 INC     AX   Увеличение АХ на 1

50 PUSH  AX   Запись АХ в стек

C3 RET (short)  Короткий возврат из процедуры

 CB RET (far)  Длинный возврат из процедуры

 FD STD   Установка флага направления

Ни одна из перечисленных команд не использует прямой адресации памяти. Другие команды, использующие непосредственный операнд, 8-битовый регистр, регистровую пару или адрес памяти, требуют более сложного машинного кода. Команды, использующие регистр могут содержать три бита, указывающих на конкретный регистр, и один бит, определяющий размер регистра: байт или слово. Кроме того лишь некоторые команды обеспечивают доступ к сегментным регистрам.

Пример.

Команда MOV с однобайтовым непосредственным операндом.

 MOV AH, 00 1011 0 100  00000000

                           w reg = AH

Первый байт машинного кода указывает на однобайтовый размер (w=0) и на регистр AH (100).  Следующая команда MOV содержит непосредственный двухбайтовый операнд:

MOV  AX,00 1011 1 000  00000000

                                  w reg=AX

Первый байт машинного кода указывает на размер в одно слово (w=1) и на регистр AX (000).

Обобщать приведенные примеры не следует, так как указание регистра и бита w может быть в различных позициях кода.

Двухбайтовые команды.

Рассмотрим пример сложения содержимого регистров DX и AX:

ADD BX, AX 0000 0011  11   011   000

                   dw mod   reg   r/m

d=1 означает, что биты reg и w описывают операнд 1 (BX), а биты mod, r/m и w — операнд 2 (AX); w=1 определяет размер регистров в одно слово; mod=11 указывает, что операнд 2 является регистром; reg = 011, указывает, что операнд 1 является регистром BX; r/m=000, указывает что операнд 2 является регистром AX.

Трехбайтовые команды.

Трехбайтовые команды можно рассмотреть на примере команды MOV.

MOV mem, AX  10100001 dddddddd  dddddddd

В данном примере w=1 означает слово, следовательно, предполагается 16-битовый регистр AX. Байты 2 и 3 содержат относительный адрес памяти.

2 Привести примеры одноадресных команд. Привести примеры двухадресных команд.

Ниже приведен формат двухадресной (двухоперандной) команды процессоров.

Основной формат кодирования команд Ассемблера для компьютеров фирмы IBM.

Основной формат кодирования команд ассемблера имеет следующий вид:

[метка] команда [операнд(ы)]

Метка (если имеется), команда и операнд (если имеется) pазделяются по крайней мере одним пробелом или символом табуляции. Максимальная длина строки - 132 символа, однако, большинство предпочитают работать со строками в 80 символов (соответственно ширине экрана). Примеры  кодирования: Метка Команда Операнд COUNT DB 1 ;Имя, команда, один операнд  MOV AX,0 ;Команда, два операнда Метка в языке ассемблера может содержать следующие символы:

Буквы: от A до Z и от a до z Цифры: от 0 до 9 Спецсимволы: знак вопроса (?) точка (.) (только первый символ) знак "коммерческое эт" (@) подчеркивание (-) доллар ($) Первым символом в метке должна быть буква или спецсимвол. Ассемблер не делает различия между заглавными и строчными буквами. Максимальная длина метки - 31 символ. Примеры меток: COUNT, PAGE25, $E10. Рекомендуется использовать описательные и смысловые метки. Имена регистров, например, AX, DI или AL являются зарезервированными и используются только для указания соответствующих регистров. Например, в команде ADD AX,BX ассемблер "знает", что AX и BX относится к регистрам. Однако, в команде MOV REGSAVE,AX ассемблер воспримет имя REGSAVE только в том случае, если оно будет определено в сегменте данных. В прил.3 приведен cписок всех зарезервированных слов ассемблера.

Команда Мнемоническая команда указывает ассемблеру какое действие должен  выполнить данный оператор. В сегменте данных команда (или директива) определяет поле, рабочую oбласть или константу. В сегменте кода команда определяет действие, например, пересылка (MOV) или сложение (ADD).

Операнд Если команда специфицирует выполняемое действие, то операнд определяет а) начальное значение данных или б) элементы, над которыми выполняется действие по команде. В следующем примере байт COUNTER определен в сегменте данных и имеет нулевое значение:

Метка Команда Операнд COUNTER DB 0 ;Определить байт (DB) с нулевым значением Команда может иметь один или два операнда, или вообще быть без операндов. Рассмотрим следующие три примера: Команда Операнд Комментарий  Нет операндов RET ;Вернуться Один операнд INC CX ;Увеличить CX  Два операнда ADD AX,12 ;Прибавить 12 к AX  Метка, команда и операнд не обязательно должны начинаться с какой-либо определенной позиции в строке. Однако, рекомендуется записывать их в колонку для большей yдобочитаемости программы. Для этого, например, редактор DOS EDLIN обеспечивает табуляцию через каждые восемь позиций.

Перечислить типы команд Ассемблера для компьютеров фирмы IBM

Ниже приведен примерный перечень команд Ассемблера для процессоров 80286, 80386.

ADD: Сложение двоичных чисел. При выполнении данной операции прибавляется один байт или одно слово в памяти, регистре или непосредственно к содержимому регистра или прибавляет один байт или слово в регистре или непосредственно к памяти.

AND: Логическое И. Команда выполняет поразрядную конъюнкцию (И) битов двух операндов. Операнды представляют собой одно- или двухбайтовые величины в регистре или памяти. Второй операнд может содержать непосредственные данные. Команда AND проверяет два операнда поразрядно. Если два проверяемых бита равны 1, то в первом операнде устанавливается единичное значение бита, в других случаях нулевое.

CMP: Сравнение. Выполняется сравнение содержимого двух полей данных. Фактически команда CPM вычитает второй операнд из первого, но содержимое полей не изменяет. Операнды должны иметь одинаковую длину: байт или слово. Команда может сравнивать содержимое регистра, памяти или непосредственное значение с содержимым регистра; или содержимое регистра или непосредственное значение с содержимым памяти.

JMP: Безусловный переход. Выполняется переход по указанному адресу при любых условиях. Команда JMP заносит в регистр IP необходимый адрес перехода. Существует пять типов команды JMP для передачи управления внутри сегмента или между сегментами. При межсегментном переходе в регистр CS заносится также новый сегментный адрес.

LOOP: Цикл. Данная команда управляет выполнением группы команд определенное число раз. До начала цикла в регистр CX должно быть загружено число выполняемых циклов. Команда LOOP находится в конце цикла, где она уменьшает значение в регистре CX на единицу. Если значение в регистре CX не равно нулю, то команда передает управление по адресу, указанному в операнде (прибавляет к регистру IP значение операнда); в противном случае управление передается на следующую после LOOP команду (происходит выход из цикла).

MOV: Пересылка данных. Один байт или одно слово пересылается между регистрами или между регистром и памятью, а также передает непосредственное значение в регистр или в память. Команда MOV не может передавать данные между двумя адресами памяти. Существует семь типов команды MOV.

NEG: Изменение знака числа. Команда меняет двоичное значение из положительного в отрицательное и из отрицательного в положительное. Команда NEG вычисляет двоичное дополнение от указанного операнда: вычитает операнд из нуля и прибавляет единицу. Операндом может быть байт или слово в регистре или памяти.

NOT: Логическое НЕТ. Меняет нулевые биты на единичные  и наоборот. Операндом может быть байт или слово в регистре или памяти.

OR: Логическое ИЛИ. Команда выполняет поразрядную дизъюнкцию (ИЛИ) над битами двух операндов. Операндами являются байты или слова в регистрах или памяти, второй операнд может иметь непосредственное значение. Команда OR обрабатывает операнды побитово. Если любой из проверяемых бит равен единице, то бит в операнде 1 становится равным единице, в противном случае бит в операнде 1 не изменяется.

OUT: Вывод байта или слова в порт. Байт или слово из регистра передается в порт вывода. Порт кодируется как фиксированный числовой операнд или как переменная в регистре.

Составные части (поля) команд

Представление команд.

Команда содержит несколько составных частей (полей). Формат команды зависит от структуры машинных слов и обычно содержит:

  1.  указание на ту операцию, которая подлежит выполнению (операционная часть);
  2.  указание на то, с какими операндами надо работать (адресная часть);
  3.  дополнительную организационную информацию (индикаторная часть), причем эта информация часто содержится в адресной части.

Команда представляется в машине двоичным словом. Отдельные части (поля) этого слова задают упомянутую выше информацию. При машинной трактовке все данные также представляются в виде двоичных слов. Поэтому важно знать, как должно интерпретироваться это слово — как команда, как адрес или как элемент данных. Это достигается путем использования признаков.

Привести примеры использования команд Ассемблера


 

А также другие работы, которые могут Вас заинтересовать

58786. Социальный проект-программа «Уроки Трезвости» 499 KB
  Областная программа Уроки трезвости призвана дополнить воспитательно-профилактическую программу учебных заведений в сфере профилактики асоциальных явлений связанных с употреблением алкоголя табака и других наркотиков детьми и молодёжью.