Операнд информация: ОПЕРАНД И ОПЕРАТОР это

Предварительные сведения — Работа с регистрами

ТИПЫ КОМАНД

Мы видели, что команда машинного языка состоит из двух частей, поля операции и поля операндов. В Системе 360 существует по крайней мере три различных типа операндов. Операнд может находиться в регистре общего назначения, храниться в памяти, его значение также может быть указано в самой команде. Операнды последнего типа называются непосредственными операндами. В пяти типах команд встречаются различные комбинации операндов различных типов. Каждый тип команд языка ассемблера соответствует определенному формату машинного языка. Тип команды определяется типом ее операндов. Существуют следующие типы команд (в скобках указаны стандартные сокращения их названий):

Регистр-Регистр (RR): оба операнда хранятся в регистрах общего назначения.

Регистр-Индексированная Память (RX): первый операнд — в регистре общего назначения, второй — в ячейке памяти, которая может быть указана с использованием индекс-регистра.

Регистр-Память (RS): первые два операнда в регистрах, третий— в основной памяти.

Память-Память (SS): оба операнда находятся в основной памяти. Память-Непосредственный операнд (SI): первый операнд в памяти, второй задан в самой команде.

Функции команд

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

Команды пересылки: по командам этого типа производится пересылка информации из одной области памяти в другую. Например, команда MVCслужит для пересылки содержимого областей памяти по новому адресу, а команда LRпересылает содержимое одного регистра в другой регистр.

Арифметические команды: именно эти команды действительно преобразуют информацию. К этому типу относятся такие операции, как «сложить», «умножить», логические операции «и», «или» и некоторые другие команды, изменяющие форму хранимой информации.

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

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

Команды ввода-вывода: эти команды осуществляют управление работой периферийных устройств и соответствующими потоками информации.

Тип и функция позволяют определить группу, из которой следует выбирать команду, наиболее подходящую для выполнения заданных действий. Размещение операндов в памяти и их тип определяют тип команды; выполняемое по данной команде действие характеризует функцию команды. Во многих случаях эта классификация позволяет программисту однозначно выбрать необходимую команду. Иногда требуется дальнейший выбор, например выбор соответствующей арифметической команды. В любом случае описанная классификация достаточно полезна программисту, пишущему на языке ассемблера.

В нескольких последующих главах будет рассмотрен каждый тип команд в отдельности. Будут показаны типичные примеры применения команд каждого типа и подробно рассмотрены их эквиваленты на машинном языке. По окончании рассмотрения всех пяти типов команд мы будем готовы к применению основных изученных принципов в некоторых специальных случаях программирования на языке ассемблера.

Символическое представление команд

Всюду в дальнейшем мы будем пользоваться символической формой рассматриваемой команды. При этом мы будем демонстрировать возможности записи команд в этой символической форме по мере необходимости. Пока заключим следующее соглашение: все операнды, находящиеся в регистрах, мы будем обозначать с помощью буквы Rс последующим указанием номера соответствующего операнда. Так, например, R2 может означать операнд, находящийся в любом из 16 регистров общего назначения, причем этот операнд является вторым операндом данной команды. Содержимое данного регистра обозначается заключением его адреса в круглые скобки. Поэтому (5) обозначает либо содержимое ячейки памяти с номером 5, либо содержимое регистра 5. В каждом конкретном случае будет ясно, что представляет собой адрес, заключенный в скобки.

Мы будем также использовать стрелку () для обозначения операции запоминания результата в регистре или в ячейке памяти. Используя все эти соглашения, можно символически записать результат выполнения команды ARкак

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

Особые случаи в программе

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

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

НОУ ИНТУИТ | Лекция | Система кодирования команд. Способы адресации

< Лекция 14 || Лекция 11: 12

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

Ключевые слова: запись, команда, операции, формат команды, поле, коды операций, кодирование команд, сложение, умножение, ПО, MOV, регистр, адрес, организация памяти, Указатель стека, ячейка, АЛУ, значение, no-op, операнд, устройство управления, информация, быстродействие, блок памяти, способ адресации, определение, прямая адресация, непосредственная адресация, время выполнения команды, регистр команд, косвенная адресация, разрядность, адресация, относительная адресация, память, удобство использования, место, ОЗУ, длина

Система кодирования команд

intuit.ru/2010/edi»>Запись любой команды определяется ее форматом. Формат команды – это структура команды, позволяющая распознать назначение отдельных ее полей.

Исходя из определения, команда должна содержать информацию о выполняемой операции, адресах операндов и адресе ячейки ЗУ для записи результата. Этому в наибольшей степени соответствует формат команды, содержащий поле кода операции и три адресных поля. Такая система кодирования команд называется трехадресной (рис.11.1,в).

Схема выполнения трехадресной команды имеет вид:

1)*(А2)->А3.

Здесь (А1) и (А2) – адреса ячеек ЗУ, в которых хранятся первый и второй операнды соответственно; * – знак обобщенной операции (например, сложение или умножение), задаваемой полем кода операции (КОп).

Знак » -> » обозначает передачу результата операции в ячейку памяти с адресом А3.

Рис. 11.1. Системы кодирования команд

Для выполнения операции сложения операндов, находящихся по адресам a и b, с записью результата в ячейку c ( c = a + b ) требуется одна команда такого формата:

КОпА1А2А3
ADDa
b
c

Здесь ADD – код операции сложения.

intuit.ru/2010/edi»>Формат двухадресной команды представлен на рис.11.1,б. Выполнение операции с помощью такой команды проходит по следующей схеме:

1) * (А2) -> А1 или

1) * (А2) -> А2

Выполнение того же самого действия c = a + b в двухадресной системе кодирования команд потребует уже двух команд, например:

КОпА
1
А2
ADDaba = a + b
MOVcac = a

intuit.ru/2010/edi»>Одноадресная команда имеет формат, приведенный на рис.11.1,а. Обычно ЭВМ с одноадресной системой команд имеют особую структуру, в состав которой входит специальный регистр (регистр результата – РР ). Он служит для хранения результата операции и используется в качестве одного из операндов при выполнении операции ( рис. 11.2).

Рис. 11.2. Схема выполнения операции в ЭВМ с одноадресной системой команд

Схема выполнения операции на ЭВМ с одноадресной системой команд имеет вид:

(А) * (РР) -> А или

(А) * (РР) -> РР.

Операцию c = a + b в одноадресной системе команд можно выполнить следующим образом:

КОпА1
MOVRaРР = a
ADDbРР = РР + b
MOVScc = РР

intuit.ru/2010/edi»>Рассмотренные форматы команд используются при так называемом естественном порядке выполнения программы. При этом подразумевается, что после выполнения любой команды, не меняющей в явном виде порядок выполнения программы, очередная команда выбирается из ячейки ЗУ, располагающейся сразу же вслед за ячейкой (или ячейками), содержащей код текущей команды. При четырехадресной системе кодирования команд (рис.11.1,г) первые три адреса выполняют те же функции, что и в трехадресной команде, а четвертый адрес указывает адрес ячейки, где хранится следующая выполняемая команда. Такая система обеспечивает принудительный порядок выполнения команд программы. Она хотя и повышает гибкость программирования, но практического применения не получила. Основной причиной этого является существенное увеличение размера каждой команды и, соответственно, увеличение объема ЗУ, необходимого для размещения программы, в то время как реальной потребности в такой кодировке каждой команды не существует.

Несколько особое положение занимает безадресное кодирование команд. Оно используются в компьютерах, имеющих стековую организацию памяти. Обращение к ячейкам такой памяти производится последовательно с помощью специального указателя стека ( УС ), определяющего рабочую в данный момент ячейку. Каждая ячейка снабжена тэгом – специальным признаком хранимой информации. Такая ЭВМ имеет структуру, представленную на рис. 11.3. В ее состав помимо АЛУ входят два специальных буферных регистра РР1 и РР2. Здесь значение тэгов следующее: Op – в данной ячейке хранится операнд, C – признак наличия в ячейке кода операции.

Рис. 11.3. Схема выполнения операции в ЭВМ с безадресной системой команд

Проиллюстрируем работу такой ЭВМ на примере вычисления выражения ((a + b) * c — d) / e.

На первых двух тактах работы из памяти извлекаются операнды a и b и помещаются в рабочие регистры РР1 и РР2. Считав следующую ячейку стековой памяти, устройство управления по ее тэгу определяет, что данная информация представляет собой код операции. Этот код направляется в АЛУ, где и проводится сложение хранящихся в регистрах операндов с записью результата в один из рабочих регистров. Так как в следующей ячейке хранится операнд, то он направляется в РР, свободный от записанного результата. После этого производится выполнение следующей операции и так далее.

Такая структура ЭВМ обеспечивает высокое быстродействие, но требует весьма сложного программирования.

Взаимозависимость формата команды и основных параметров ЭВМ

Важной характеристикой команды служит ее длина, которая складывается из длины поля кода операции и суммы длин адресных полей:

intuit.ru/2010/edi»>где n – количество адресных полей в команде.

Максимальное количество операций, которое может быть закодировано в поле кода операций длиной nкоп, составляет

Kmax = 2nКОп

Тогда по известному количеству команд ( K ), составляющих систему команд данной ЭВМ, можно определить необходимую длину поля операции:

nКОп >= log2K.

Естественно, что эта величина должна быть минимально возможным целым числом. Так, для ЭВМ, имеющей систему команд из 100 команд, длина поля кода операции составит 7 бит.

Если поле адреса команды содержит просто номер ячейки ЗУ, к которой производится обращение, то длина этого поля определяется следующим образом:

intuit.ru/2010/edi»>nA >= log2VЗУ,

где VЗУ – объем запоминающего устройства.

Правомерна и другая постановка задачи – определение максимального объема запоминающего устройства ( VЗУmax ), к которому можно обратиться при заданной длине поля адреса. В этом случае

VЗУmax=2nадр

Современные ЭВМ имеют, как правило, запоминающие устройства с минимальной адресуемой единицей 1 байт ( 1 байт = 8 бит ). Поэтому, например, адресация ЗУ объемом 1 мегабайт ( 1М байт = 220 байт ) требует 20 разрядов адресного поля, а поле адреса длиной 16 разрядов позволяет обращаться к памяти максимального объема 64 килобайта ( 1К байт = 210 байт ).

Одним из способов уменьшения длины поля адреса является введение в состав ЭВМ дополнительно специального блока памяти небольшого объема – регистровой памяти ( РП ). Это запоминающее устройство имеет высокое быстродействие и служит для хранения часто используемой информации: промежуточных результатов вычислений, счетчиков циклов, составляющих адреса при некоторых режимах адресации и т.д.. Так как объем РП невелик, адресация ее элементов требует относительно короткого адресного поля. Например, для регистровой памяти объемом 8 регистров требуется всего лишь трехразрядное адресное поле.

Дальше >>

< Лекция 14 || Лекция 11: 12

Операнд | Encyclopedia.com

oxford

просмотров обновлено 9 мая 2018 г.

операнд
1. Величина, над которой выполняется математическая или логическая операция.

2. Части машинной инструкции, определяющие объекты, над которыми должна выполняться операция. Например, в инструкции ADD A,B

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

Компьютерный словарь ДЖОН ДЕЙНТИТ

Оксфорд

просмотров обновлено 21 мая 2018

op·er·and / ˈäpəˌrand/ • н. Мат. количество, над которым должна быть выполнена операция.

Оксфордский карманный словарь современного английского языка

Еще с сайта encyclopedia.com

Значения Термин «ценности» может относиться к интересам, удовольствиям, симпатиям, предпочтениям, обязанностям, моральным обязательствам, желаниям, нуждам, потребностям, отвращениям и влечениям… действовать , действовать / ˈäpəˌrāt/ • v. 1. [tr.] (о человеке) контролировать функционирование (машины, процесса или системы): нехватка рабочих для работы с новой машиной… Эксплуатация, эксплуатация 1. Функция из Sm (см. Декартово произведение) в саму S, где S — некоторое множество, специфичное для функции. К такой функции обычно относятся… Оператор , оператор / ˈäpəˌrātər/ • n. 1. лицо, управляющее оборудованием или машиной: радист. ∎ (обычно оператор) человек, который работает на теле… Центральный процессор, Компьютеры существуют как набор взаимосвязанных компонентов, функционирующих вместе под управлением центрального процессора, известного как центральный процесс… Операционный усилитель, операционный усилитель (операционный усилитель) amp) Усилитель напряжения с очень большим коэффициентом усиления, имеющий дифференциальный вход, т.е. его выходное напряжение пропорционально (и очень м…

Об этой статье

Все источники

Обновлены августа 08 2016 г. Облизости Encyclopedia.com Содержание Тема печати

Вам также понравилось
ОПЕРА
7

Операбельные

Ophount OrhyaRATORIO

-Комик, Париж

опера-балет

Опера, Париж

Северная опера

опера не окончена, пока толстая дама не поет,

Опера в мире начала восемнадцатого века

Opera во Франции

Opera Glasses

Opera Glass

Opera Foundation

Opera Do Malandro

Opera Buffa

Операция Und Drama

Oper

Opep

Open -Software

Open

0002 Open -Speerie -Software

Open

0002.

открыто

Открытие банковского сектора в Китае: прогресс, препятствия и дальнейшие шаги

Открытие Запада

Вступительное заявление

Наступительная ночь

Операнд

Оперантное поведение

Оперантное кондиционирование или обучение

Оперный

Оперная смерть

Бикини

Операция Bootstrap

Операция ЦРУ

код операции

Операция Кондор

Операция Кондор 2: Доспехи Богов

Операция Кросс Орлы

Операция Арбалет

Операция Дамс

Операция Delta Force 2: Mayday

Операция 0 Delta Force 3: Clear Target

Операция 0 Delta Force 003: Clear Target

Operation Dumbo Drop

Operation Gatekeeper

Operation Golden Phoenix

Operation Haylift

Операнды в ассемблере x86 | Ресурсы информационной безопасности

Введение

В этой статье определяется операнд, используемый в инструкциях по ассемблеру x86. Далее подробно объясняются с помощью моделирования три режима, с помощью которых задается операнд инструкции.

Эта статья предназначена для начинающих, студентов и профессионалов, которые хотят получить подробное представление об операндах и их использовании. Это поможет вам получить более подробные сведения и лучше понять операнды x86 и то, как они используются в режимах адресации.

Операнды в x86

Операнд — это подраздел инструкции x86, определяющий данные, с которыми выполняются операции или которыми манипулируют. Инструкция x86 может иметь в своем операторе от нуля до трех операндов. Операнд имеет тип, который может быть регистром, ячейкой памяти, непосредственным значением или адресом. (Источник)

Режимы адресации в x86

Режим адресации x86 кратко объясняет типы операндов и способ доступа к ним из различных мест в архитектуре микропроцессора. Срок режимы адресации относится к способу указания операнда инструкции. Информация, содержащаяся в коде инструкции, представляет собой значение операнда или адрес результата/операнда. (Источник)

Режим адресации регистров

В этом режиме адресации операнды указываются с использованием 8-битных, 16-битных или 32-битных регистров.

Зарегистрируйте операнды в двух 8-битных регистрах общего назначения

Предположим, что BL =0x2 и BH =0x0.

  1. MOV BH , BL : Эта инструкция копирует содержимое регистра BL в BH . Новое значение BH — 0x2. Операнд источника — BL , а операнд назначения — BH
  2. . Рис. 1. Предустановка регистра BL с начальным значением 0x2 перед выполнением инструкции 1.

     

    Зарегистрируйте операнды в двух 16-битных регистрах общего назначения

    Предположим, что BX = 0x2 и AX = 0x0.

    1. MOV AX , BX : Эта инструкция копирует содержимое регистра BX в AX . Новое значение AX равно 0x2. Операнд источника — BX , а операнд назначения — AX
    2. .

    Рис. 3. Зарегистрируйте предустановку BX с начальным значением 0x2 перед выполнением инструкции 2

     

    Рис. 4. Содержимое 16-битных регистров BX и AX после выполнения инструкции 2 из вычисляемых выражений. Операнды, используемые в этом режиме, называются непосредственными операндами.

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

    1. ADD AL , 0x2 : Эта инструкция добавляет шестнадцатеричное значение 2 к значению в регистре AL и затем сохраняет сумму в AL . В этой инструкции AL является операндом назначения. Непосредственные данные никогда не допускаются в операнде назначения. Мы также предположили, что начальное значение AL равно 0x0
    2. .

    Рисунок 5: Содержимое регистра AL после выполнения инструкции 3

     

    1. ADD BX , 7*7 : Эта инструкция вычисляет выражения, содержащие константы, а затем полученное значение вычитается из значения в регистре BX . Предположим, что в регистр BX предварительно загружено значение 0x0
    2. .

    Рис. 6. Содержимое регистра BX после выполнения инструкции 4 Мы предположили, что регистр-накопитель AX предварительно загружен шестнадцатеричным значением 9.9

    Рисунок 7: Регистр AX ПРЕВЕРСТИ

     

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

    • Физический адрес = начальный адрес сегмента + смещение

    Начальная точка сегмента получается добавлением 0H к содержимому

  3. СС = 7726 Н
  4. ИП = 1762 Н
  5. СП = 1188 Н
  6. ДВ = 1120 Н
  7. Базовый адрес сегмента кода 1147 H * 10H = 11470 H. Это требуется для сдвига адреса с 16 бит на 20 бит — ширина адреса памяти в x86.

    Эффективный адрес памяти определяется суммой начального адреса сдвинутого сегмента и смещения.

    CS + IP = 11470 H + 1762H = 12BD2 H. Это также можно записать как 1147:1762.

    Режим прямой адресации памяти/режим косвенной адресации регистра

    Прямая адресация памяти — это режим, в котором адрес операнда прямо указывается в инструкции. Это называется режимом косвенной адресации регистров. В частности, это выполняется в строке инструкции 12, где содержимое регистра CX копируется в ячейку памяти с адресом, указанным в регистре BX .

    Наборы инструкций с 6 по 13:

    • ORG 177h: это директива компилятора, которая указывает компилятору, что инструкции будут загружены по смещению
    • .
    • MOV AX, 0B800h: Эта инструкция устанавливает регистр AX в шестнадцатеричное значение B800h
    • MOV DS, AX: Эта инструкция копирует значение AX в DS
    • .
    • MOV CL, ‘C’: здесь мы устанавливаем CL на код ASCII ‘C’, это 43h
    • MOV CH, 1101_1101b: Затем установите CH в двоичное значение (это DD в шестнадцатеричном формате)
    • MOV BX, 17Eh: также установите для BX значение 17Eh
    • MOV [BX], CX: Теперь скопируйте содержимое CX в память по адресу B800:017E (это будет проверено после выполнения приведенного выше кода)
    • RET: вернуть управление программой операционной системе

    Рисунок 9: Копия инструкций с 6 по 13 загруженных в симулятор Emu8086 выполняется

    Рисунок 11: Содержание регистров AX, DS, CL, CH и BX После установки инструкций 6-13 выполняются

    0003

    Рисунок 12.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *