-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||FF /6 PUSH m16 4 Помещение в стек || слова памяти ||FF /6 PUSH m32 4 Помещение в стек || двойного слова памяти ||50+ /r PUSH r16 1 Помещение в стек || слова - регистра ||50+ /r PUSH r32 1 Помещение в стек || двойного слова - регистра ||6A PUSH imm8 1 Помещение в стек || непосредственного байта ||68 PUSH imm16 1 Помещение в стек || непосредственного слова ||68 PUSH imm32 1 Помещение в стек || непосредственного двойного слова||0E PUSH CS 3 Помещение в стек CS ||16 PUSH SS 3 Помещение в стек SS ||1E PUSH DS 3 Помещение в стек DS ||06 PUSH ES 3 Помещение в стек ES ||0F A0 PUSH FS 3 Помещение в стек FS ||0F A8 PUSH GS 3 Помещение в стек GS | Работа команды IF StackAddrSize = 16THEN IF OperandSize = 16 THEN SP <- SP - 2; (SS:SP) <- (источник); (* Назначение слова *) ELSE SP <- SP - 4; (SS:SP) <- (источник); (* Назначение двойного слова *) FI; ELSE (* StackAddrSize = 32 *) IF OperandSize = 16 THEN ESP <- ESP - 2; (SS:ESP) <- (источник); (* Назначение слова *) ELSE ESP <- ESP - 4; (SS:ESP) <- (источник); (* Назначение двойного слова *) FI; ОписаниеКоманда PUSH декрементирует указатель стека на 2, если атрибут размераоперанда команды равен 16 битам; в противном случае она декрементируетуказатель стека на 4. Затем команда PUSH помещает операнд в новую вершинустека, на которую указывает указатель стека.Команда PUSH ESP помещает в стек значение регистра ESP, в том виде,который он имел до выполнения команды. В этом состоит отличие от 8086, гдекоманда PUSH SP помещает в стек новое значение (декрементированное на 2). Изменяемые флагиОтсутствуют Исключения защищенного режима#SS(0), если новое значение регистра SP или ESP не находится в границахстекового сегмента; #GP(0) в случае недопустимого исполнительного адресаоперанда памяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случаенедопустимого адреса в сегменте SS; # PF(код сбоя) в случае страничногосбоя; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3. Исключения режима реальных адресовОтсутствуют: если регистр SP или ESP равен 1, процессор переходит в режимзакрытия из-за недостаточного размера памяти стека. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3. ПримечаниеПри использовании операнда памяти команда PUSH выполняется дольше, чемпоследовательность двух команд, пересылающая операнд через регистр.Разрешены последовательности парных команд PUSH/POP, не требующиедополнительного тактового цикла между ними.