|  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 | Вызов системного исключения | — | — | — | — | — |  Перемещение, копирование и арифметические команды ⇐ Предыдущая страница| |Следующая страница ⇒
 |