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

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

Режим адресации, при котором операндом является константный байт или значение слова, называется непосредственной адресацией. Например:

СМР АХ,50

Эта команда сравнивает значение в регистре АХ с константой 50 и в зависимости от результата устанавливает биты во флаговом регистре.

Наконец, некоторые команды используют неявную адресацию. В таких командах операнд или операнды лишь подразумеваются. К примеру:

PUSH АХ

Эта команда вводит содержимое регистра АХ в стек; для этого она уменьшает значение SP на единицу, а затем копирует содержимое АХ в ячейку, на которую теперь указывает SP. При этом регистр SP в команде не упоминается. Аналогичным образом, регистр флагов состояния не упоминается в командах управления флагами. Неявные операнды применяются и в других командах.

В процессоре 8088 предусмотрены специальные команды для перемещения (M0VS), сравнения (CMPS) и просмотра (SCAS) строк. После выполнения этих строковых команд содержимое индексных регистров SI и DI автоматически обновляется. Этот механизм называется, в зависимости от направления, автоинкрементным или автодекрементным режимом. Направление приращения (положительное или отрицательное) регистров SI и DI определяется флагом направления в регистре флагов состояния. Флаг направления с нулевым значением определяет положительное приращение, а флаг с единичным значением — отрицательное. Величина приращения составляет 1 в командах для байтов и 2 в командах для слов. В некотором смысле указатель стека также имеет отношение к автоинкрементному и автодекрементному режимам: его значение уменьшается на 2 в начале операции PUSH и увеличивается на 2 по окончании операции POP. Организационная документация – комплект документов, определяющих содержание, порядок, основные направления, организационно-функциональную структуру деятельности, права и обязанности исполнителей и потребителей.

Любой компьютер характеризуется, в первую очередь, набором команд, которые он способен выполнять. Чтобы понять, как работает компьютер, необходимо основательно изучить его набор команд. В этом разделе мы обсудим наиболее важные команды 8088. Некоторые из этих команд представлены в табл. В.2, где они подразделяются на 10 групп.

Таблица В.2. Некоторые из наиболее важных команд процессора 8088

Мнемо- Описание Операнды Флаги состояния

ника

О

S

Z

с

MOV(B)

Перемещение слова, байта

г<-е, е<-г, е<-#

XCHG(B)

Обмен словами

г<—>е

LEA

Загрузка действительного адреса

г<-#е

PUSH

Введение в стек

е, #

POP

Выталкивание из стека

е

PUSHF

Введение в стек флагов

POPF

Выталкивание из стека флагов

XLAT

Трансляция AL

ADD(B)

Сложение слова

г<-е, е<-г, е<-#

*

*

*

*

ADC(B)

Сложение слова с переносом

г<-е, е<-г, е<-#

*

*

*

*

SUB(B)

Вычитание слова

г<-е, е<-г, е<-#

*

*

*

*

SBB(B)

Вычитание слова с отрицательным переносом

г<-е, е<-г, е<-#

*

*

*

*

IMUL(B)

Умножение с учетом знака

е

*

и

и

*

MUL(B)

Умножение без учета знака

е

*

и

и

*

IDIV(B)

Деление с учетом знака

е

и

и

и

и

DIV(B)

Деление без учета знака

е

и

и

и

и

CBW

Дополнение байта до слова с учетом знака

CWD

Дополнение слова до двойного слова с учетом знака

NEG(B)

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

е

*

*

*

*

NOT(B)

Логическое отрицание

е

INC(B)

Положительное приращение по целевому адресу

е

*

*

*

DEC(B)

Отрицательное приращение по целевому адресу

е

*

*

AND(B)

Логическое И

е<-г, г<-е, е<-#

0

*

*

0

OR(B)

Логическое ИЛИ

е<-г, г<-е, е<-#

0

*

*

0

Мнемо- Описание Операнды Флаги состояния

HMKa

О

S

Z

с

XOR(B)

Логическое исключающее ИЛИ

е<-г, г<-е, е<-#

0

*

*

0

SHR(B)

Логический сдвиг вправо

е<-1,

*

*

*

*

SAR(B)

Арифметический сдвиг вправо

е<—1, е<-0_

*

*

*

*

SAL(B) (=SHL(B))

Сдвиг влево

е<-1,

*

*

*

*

ROL(B)

Циклический сдвиг влево

е<-1,

*

*

ROR(B)

Циклический сдвиг вправо

е<-1,

*

*

RCL(B)

Циклический сдвиг влево с переносом

е<-1,

*

*

RCR(B)

Циклический сдвиг вправо с переносом

е<—1,

*

*

TEST(B)

Проверка операндов

е<—>г, е<—>#

0

*

*

0

CMP(B)

Сравнение операндов

е<—>г, е<—>#

*

*

*

*

STD

Установка флага направления (4-)

CLD

Сброс флага направления (Т)

STC

Установка флага переноса

1

CLC

Сброс флага переноса

0

CMC

Обратный перенос

*

LOOP

Обратный переход, если йЕС(СХ) > 0

Метка

LOOPZ LOOPE

Обратный переход, если г = 1 и йЕС(СХ) > 0

Метка

LOOPNZ LOOPNE

Обратный переход, если Ъ = 0 и йЕС(СХ) > 0

Метка

REP REPZ REPNZ

Повтор строковой команды

Строковая команда

MOVS(B)

Перемещение строки слов

LODS(B)

Загрузка строки слов

STOS(B)

Сохранение строки слов

SCAS(B)

Просмотр строки слов

*

*

*

*

CMPS(B)

Сравнение строк слов

*

*

*

*

JCC

Условный переход

Метка

JMP

Переход к метке

е, метка

CALL

Переход к подпрограмме

е, метка

RET

Возврат из подпрограммы

—, #

SYS

Вызов системного исключения

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