ICQ SHOP
5-значные
6-значные
7-значные
8-значные
9-значные
Rippers List
ОПЛАТА
СТАТЬИ
СЕКРЕТЫ
HELP CENTER
OWNED LIST
РОЗЫСК!New!
ICQ РЕЛИЗЫ
Протоколы ICQ
LOL ;-)
Настройка компьютера
Аватарки
Смайлики
СОФТ
Mail Checkers
Bruteforces
ICQTeam Soft
8thWonder Soft
Other Progs
ICQ Patches
Miranda ICQ
ФорумАрхив!
ВАШ АККАУНТ
ICQ LiveJournal
РекламаНаш канал:
irc.icqinfo.ru
|
Таненбаум Э.- Архитектура компьютера. стр.551
Таненбаум Э.- Архитектура компьютера. стр.551
В процессоре 8088 предусмотрены специальные команды для перемещения (M0VS), сравнения (CMPS) и просмотра (SCAS) строк. После выполнения этих строковых команд содержимое индексных регистров SI и DI автоматически обновляется. Этот механизм называется, в зависимости от направления, автоинкрементным или автодекрементным режимом. Направление приращения (положительное или отрицательное) регистров SI и DI определяется флагом направления в регистре флагов состояния. Флаг направления с нулевым значением определяет положительное приращение, а флаг с единичным значением — отрицательное. Величина приращения составляет 1 в командах для байтов и 2 в командах для слов. В некотором смысле указатель стека также имеет отношение к автоинкрементному и автодекрементному режимам: его значение уменьшается на 2 в начале операции PUSH и увеличивается на 2 по окончании операции POP.
Набор команд 8088
Любой компьютер характеризуется, в первую очередь, набором команд, которые он способен выполнять. Чтобы понять, как работает компьютер, необходимо основательно изучить его набор команд. В этом разделе мы обсудим наиболее важные команды 8088. Некоторые из этих команд представлены в табл. В.2, где они подразделяются на 10 групп.
Таблица В.2. Некоторые из наиболее важных команд процессора 8088
Мнемоника
MOV(B)
|
Описание
Перемещение слова, байта
|
Операнды
г<—е, е<—г, е<— #
|
Фла О
|
ги сое S
|
ІТОЯНИ
Z
|
я
С
|
XCHG(B)
|
Обмен словами
|
г<—>е
|
—
|
—
|
—
|
—
|
LEA
|
Загрузка действительного адреса
|
г<-#е
|
—
|
—
|
—
|
—
|
PUSH
|
Введение в стек
|
е, #
|
—
|
—
|
—
|
—
|
POP
|
Выталкивание из стека
|
е
|
—
|
—
|
—
|
—
|
PUSHF
|
Введение в стек флагов
|
—
|
—
|
—
|
—
|
—
|
POPF
|
Выталкивание из стека флагов
|
—
|
—
|
—
|
—
|
—
|
XLAT
|
Трансляция А1_
|
—
|
—
|
—
|
—
|
—
|
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)
|
Логическое И
|
е<-г, г<-е, е<-#
|
|
*
|
*
|
|
OR(B)
|
Логическое ИЛИ
|
е<-г, г<-е, е<-#
|
|
*
|
*
|
|
Мнемо- Описание Операнды Флаги состояния
|
HMKa
|
|
|
О
|
S
|
Z
|
с
|
XOR(B)
|
Логическое исключающее ИЛИ
|
е<-г, г<-е, е<-#
|
|
*
|
*
|
|
SHR(B)
|
Логический сдвиг вправо
|
е<-1, e<-CL
|
*
|
*
|
*
|
*
|
SAR(B)
|
Арифметический сдвиг вправо
|
е<-1, e<-CL
|
*
|
*
|
*
|
*
|
SAL(B) (=SHL(B))
|
Сдвиг влево
|
е<-1, e<-CL
|
*
|
*
|
*
|
*
|
ROL(B)
|
Циклический сдвиг влево
|
е<-1, e<-CL
|
*
|
—
|
—
|
*
|
ROR(B)
|
Циклический сдвиг вправо
|
е<-1, e<-CL
|
*
|
—
|
—
|
*
|
RCL(B)
|
Циклический сдвиг влево с переносом
|
е<-1, e<-CL
|
*
|
—
|
—
|
*
|
RCR(B)
|
Циклический сдвиг вправо с переносом
|
е<-1, e<-CL
|
*
|
—
|
—
|
*
|
TEST(B)
|
Проверка операндов
|
е<—>г, е<—>#
|
|
*
|
*
|
|
CMP(B)
|
Сравнение операндов
|
е<—>г, е<—>#
|
*
|
*
|
*
|
*
|
STD
|
Установка флага направления (4-)
|
—
|
—
|
—
|
—
|
—
|
CLD
|
Сброс флага направления (Т)
|
—
|
—
|
—
|
—
|
—
|
STC
|
Установка флага переноса
|
—
|
—
|
—
|
—
|
|
CLC
|
Сброс флага переноса
|
—
|
—
|
—
|
—
|
|
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
|
Вызов системного исключения
|
—
|
—
|
—
|
—
|
—
|
Перемещение, копирование и арифметические команды
⇐ Предыдущая страница| |Следующая страница ⇒
|