-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||AA STOS m8 5 Сохранение AL в байте || ES:[(E)DI], обновление (E)DI ||AB STOS m16 5 Сохранение AX в слове || ES:[(E)DI], обновление (E)DI ||AB STOS m32 5 Сохранение EAX в двойном слове || ES:[(E)DI], обновление (E)DI ||AA STOSB 5 Сохранение AL в байте || ES:[(E)DI], обновление (E)DI ||AB STOSW 5 Сохранение AX в слове || ES:[(E)DI], обновление (E)DI ||AB STOD 5 Сохранение EAX в двойном слове || ES:[(E)DI], обновление (E)DI |----------------------------------------------------------------- Работа команды IF AddressSize = 16THEN использование ES:DI в качестве DestRegELSE (* AddressSize = 32 *) использование ES:EDI в качестве DestReg;FI;IF байтовый тип командыTHEN (ES:DestReg) <- AL; IF DF = 0 THEN DestReg <- DestReg + 1; ELSE DestReg <- DestReg - 1; FI;ELSE IF OperandSize = 16 THEN (ES:DestReg) <- AX; IF DF = 0 THEN DestReg <- DestReg + 2; ELSE DestReg <- DestReg - 2; FI; ELSE (* OperandSize = 32 *) (ES:DestReg) <- EAX; IF DF = 0 THEN DestReg <- DestReg + 4; ELSE DestReg <- DestReg - 4; FI; FI;FI; ОписаниеКоманда STOS пересылает содержимое регистра AL, AX или EAX в байт илислово памяти, заданное регистром назначения относительно сегмента ES.Регистром назначения является регистр DI для атрибута размера адреса 16битов, или EDI для атрибута размера адреса 32 бита.Операнд назначения должен адресоваться из регистра ES; переопределениесегмента не допускается.Адрес назначения определяется содержимым регистра назначения, а не явнозаданным операндом команды STOS. Этот операнд используется только дляудостоверения адресуемости сегмента ES и определения типа данных. Передвыполнением команды STOS следует загрузить в регистр DI или EDI правильноезначение индекса.После того, как пересылка выполнена, регистр DI автоматически обновляется.Если флаг направления равен 0 (была выполнена команда CLD), происходитинкремент регистра назначения; если флаг направления равен 1 (былавыполнена команда STD), происходит декремент регистра назначения. Присохранении байтов инкремент или декремент равен 1; при сохранении словинкремент или декремент равен 2; при сохранении двойных слов инкремент илидекремент равен 4. Команды STOSB, STOSW и STOSD являются синонимами команды STOS, работающимис байтом, словом и двойным словом, соответственно, не требующимиоперандов. Их проще программировать, но они не обеспечивают проверки типаили сегмента.Команде STOS может предшествовать префикс REPE или REPNE для заполненияблока из CX или ECX байтов, слов или двойных слов. Подробности см. вописании команды REP. Изменяемые флагиОтсутствуют Исключения защищенного режима#GP(0), если назначением является сегмент, недоступный для записи; #GP(0)в случае недопустимого исполнительного адреса операнда памяти в сегментахCS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS;#PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки кпамяти при текущем уровне привилегированности, равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев. #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.