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

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

Перемещение, копирование и арифметические команды

В первую группу входят команды копирования и перемещения. Крайне важна команда M0V, в которой явно указываются исходный и целевой адреса. Если в качестве исходного адреса выступает регистр, целевой адрес может быть действительным. В табл. В.2 регистровые операнды обозначаются символом г, а действительные адреса — символом е. Соответственно, сочетание, о котором идет речь, выглядит как е<г~г. Именно это обозначение идет первым в ячейке операндов команды M0V. Поскольку, согласно синтаксису команд, целевой адрес должен быть первым операндом, а исходный адрес — вторым, при обозначении операндов используется символ направленной влево стрелки (<-). Таким образом, запись означает, что содержимое регистра копируется по действительному адресу.

Кроме того, в команде M0V действительный адрес может быть исходным, а регистр — целевым. Такая ситуация обозначается как r<—е (это вторая запись в ячейке операндов упомянутой команды). Третий вариант — по исходному адресу находятся сами данные, а целевой адрес является действительным, что выражается как Непосредственно данные в таблице обозначаются символом решетки (#). Символ «В» в скобках в конце мнемонического кода призван показать, что существуют команды перемещения слова (M0V) и байта (M0VB). Таким образом, данная строка в таблице реально описывает шесть разных команд.

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

Вторая команда, представленная в этой таблице, — XCHG. Она меняет местами содержимое регистра и действительного адреса. Для обозначения операции обмена в таблице применяется символ двунаправленной стрелки (<—>). Поскольку в данном случае существуют варианты операции с байтом и со словом, в поле операндов команды XCHG содержится обозначение г<—>е. Следующей в таблице указывается команда загрузки действительного адреса (LEA). Она определяет численное значение действительного адреса и сохраняет его в регистре.

Далее следует команда PUSH, которая вводит свой операнд в стек. Ее явный операнд может быть либо константой (что обозначается символом «#» в столбце операндов), либо действительным адресом (символ «е» в столбце операндов). Кроме того, имеет место неявный операнд SP, который не указывается в синтаксисе команды. Команда уменьшает значение SP на 2, а затем сохраняет операнд по адресу, на который SP указывает после обновления.

Следующая команда — POP. Она удаляет операнд из стека и размещает его по действительному адресу. Команды PUSHF и P0PF, выполняющие введение в стек и выталкивание из стека регистра флагов состояния, также предусматривают наличие неявных операндов. Аналогично обстоит дело и с командой XLAT, которая загружает байтовый регистр AL с адреса, формируемого сложением AL и ВХ. Эта команда позволяет проводить оперативный поиск в таблицах размером 256 байт.

Определенные в официальной спецификации 8088 команды IN и OUT не реализованы в интерпретаторе (pi по этой причине не указаны в табл. В.2). По факту, это команды перемещения данных в устройство ввода-вывода и из него. Неявным адресом в них всегда является регистр АХ, а вторым операндом команд выступает номер порта регистра целевого устройства.

Во второй группе табл. В.2 представлены команды сложения и вычитания. Для всех них характерны то же сочетание трех операндов, что и для M0V: от действительного адреса к регистру (г<—е), от регистра к действительному адресу (е<—г) и от константы к действительному адресу (е<—#). Во всех четырех командах в зависимости от результата выполнения могут быть установлены флаг переполнения (О), знаковый флаг (5), нулевой флаг (Z) и флаг переноса (С). Флаг О устанавливается в том случае, если результат невозможно с достаточной степенью точности выразить разрешенным числом битов, и сбрасывается, если такая возможность существует. Скажем, при прибавлении максимально допустимого 16-разрядного числа 0x7fff (32 767 в десятеричной системе) к самому себе результат нельзя выразить в виде 16-разрядного числа со знаком, и в этом случае для указания на ошибку устанавливается флаг О. Аналогичным образом устроен механизм установки других флагов состояния. Если команда способна влиять на флаг состояния, в соответствующем столбце это обстоятельство обозначается звездочкой (*). В командах ADC и SBB флаг переноса в начале операции выполняет роль дополнительной единицы (или нуля), выражающей положительный или отрицательный перенос после предыдущей операции. Эта возможность особенно полезна для представления 32-разрядных и более длинных целочисленных значений в нескольких словах. Помимо вышеперечисленного, предусмотрены операции сложения и вычитания байтов.

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