Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
47.26 Кб
Скачать

POP - €§ў«ҐзҐ­ЁҐ б«®ў  Ё§ б⥪ 

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|8F /0 POP m16 6 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў б«®ў® Ї ¬пвЁ |
|8F /0 POP m32 6 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ¤ў®©­®Ґ б«®ў® |
| Ї ¬пвЁ |
|58+ rw POP r16 4 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў б«®ў® - ॣЁбва |
|58+ rd POP r32 4 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ¤ў®©­®Ґ б«®ў® - |
| ॣЁбва |
|1F POP DS 3 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ॣЁбва DS |
|07 POP ES 3 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ॣЁбва ES |
|17 POP SS 3 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ॣЁбва SS |
|0F A1 POP FS 3 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ॣЁбва FS |
|0F A9 POP GS 3 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  Ё |
| Ї®¬ҐйҐ­ЁҐ ҐҐ ў ॣЁбва GS |
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

IF StackAddrSize = 16
THEN
IF OperandSize = 16
THEN
DEST <- (SS:SP); (* Љ®ЇЁа®ў ­ЁҐ б«®ў  *)
SP <- SP + 2;
ELSE (* OperandSize = 32 *)
DEST <- (SS:SP); (* Љ®ЇЁа®ў ­ЁҐ ¤ў®©­®Ј® б«®ў  *)
SP <- SP + 4;
FI;

ELSE (* StackAddrSize = 32 *)
IF OperandSize = 16
THEN
DEST <- (SS:ESP); (* Љ®ЇЁа®ў ­ЁҐ б«®ў  *)
ESP <- ESP + 2;
ELSE (* OperandSize = 32 *)
DEST <- (SS:ESP); (* Љ®ЇЁа®ў ­ЁҐ ¤ў®©­®Ј® б«®ў  *)
ESP <- ESP + 4;
FI;
FI;


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤  POP § ¬Ґ­пҐв ⥪г饥 ᮤҐа¦Ё¬®Ґ ®ЇҐа ­¤  Ї ¬пвЁ,
ॣЁбва  Ё«Ё ᥣ¬Ґ­в­®Ј® ॣЁбва  б«®ў®¬, б­пвл¬ б ўҐаиЁ­л б⥪ 
i486,  ¤аҐб㥬®Ј® SS:SP (ЇаЁ  ваЁЎг⥠ࠧ¬Ґа   ¤аҐб  16 ЎЁв®ў)
Ё«Ё SS:ESP (ЇаЁ  ваЁЎг⥠ࠧ¬Ґа   ¤аҐб  32 ЎЁв ). “Є § вҐ«м
б⥪  SP Ї®«гз Ґв ЇаЁа йҐ­ЁҐ 2 ЇаЁ а §¬ҐаҐ ®ЇҐа ­¤  16 ЎЁв®ў Ё«Ё
4 ЇаЁ а §¬ҐаҐ ®ЇҐа ­¤  32 ЎЁв . Џ®б«Ґ нв®Ј® гЄ § вҐ«м
гбв ­ ў«Ёў Ґвбп ­  ­®ўго ўҐаиЁ­г б⥪ .

Љ®¬ ­¤  POP CS ­Ґ пў«пҐвбп Є®¬ ­¤®© Їа®жҐбб®а  i486. €§ў«ҐзҐ­ЁҐ
Ё§ б⥪  ў ॣЁбва CS ®бгйҐбвў«пҐвбп Є®¬ ­¤®© RET.

…б«Ё ®ЇҐа ­¤ ­ §­ зҐ­Ёп н⮠ᥣ¬Ґ­в­л© ॣЁбва (DS, ES, FS Ё«Ё
SS), в® Ё§ў«ҐЄ Ґ¬®Ґ Ё§ б⥪  §­ зҐ­ЁҐ ¤®«¦­® пў«пвмбп
ᥫҐЄв®а®¬. ‚ § йЁйҐ­­®¬ ०Ё¬Ґ § Јаг§Є  ᥫҐЄв®а  Ё­ЁжЁЁагҐв
 ўв®¬ вЁзҐбЄго § Јаг§Єг Ё­д®а¬ жЁЁ ¤ҐбЄаЁЇв®а , бўп§ ­­®© б
¤ ­­л¬ ᥫҐЄв®а®¬, ў бЄалвго з бвм ᥣ¬Ґ­в­®Ј® ॣЁбва :
§ Јаг§Є  в Є¦Ґ Ё­ЁжЁЁагҐв Є®­ва®«м ¤®бв®ўҐа­®бвЁ Ё­д®а¬ жЁЁ
ᥫҐЄв®а  Ё ¤ҐбЄаЁЇв®а .

Џгб⮥ §­ зҐ­ЁҐ (0000-0003) ¬®¦Ґв Ўлвм Ё§ў«ҐзҐ­ ў ॣЁбва DS,
ES, FS Ё«Ё GS, ­Ґ ўл§лў п ЁбЄ«о祭Ёп § йЁвл. Џ®ЇлвЄ  б®б« вмбп
­  ᥣ¬Ґ­в, ᥣ¬Ґ­в­л© ॣЁбва Є®в®а®Ј® Ўл« § Ја㦥­ Їгбвл¬
§­ зҐ­ЁҐ¬, ўл§®ўҐв ЁбЄ«о祭ЁҐ #GP(0). ‘бл«®Є Є Ї ¬пвЁ ­Ґ
Їа®Ёб室Ёв. ‘ҐЈ¬Ґ­в ЇаЁ н⮬ б®еа ­пҐв Їгб⮥ §­ зҐ­ЁҐ.

Љ®¬ ­¤  POP SS § ЇаҐй Ґв ўбҐ ЇаҐалў ­Ёп, ўЄ«оз п Ё ­Ґ¬ бЄЁа㥬лҐ
ЇаҐалў ­Ёп, ¤® Є®­ж  ўлЇ®«­Ґ­Ёп б«Ґ¤го饩 Є®¬ ­¤л. ќв® Ї®§ў®«пҐв
Ї®б«Ґ¤®ў вҐ«м­®Ґ ўлЇ®«­Ґ­ЁҐ Є®¬ ­¤ POP SS Ё POP eSP ЎҐ§
®Ї б­®бвЁ Ё¬Ґвм ў® ўаҐ¬п ЇаҐалў ­Ёп ­ҐўҐа­®Ґ б®бв®п­ЁҐ б⥪ .
Ћ¤­ Є®, ЁбЇ®«м§®ў ­ЁҐ Є®¬ ­¤л LSS ¤«п § Јаг§ЄЁ ॣЁбва®ў SS Ё
eSP ЇаҐ¤Ї®звЁвҐ«м­ҐҐ.

‡ Јаг§Є  ᥣ¬Ґ­в­®Ј® ॣЁбва  ў § йЁйҐ­­®¬ ०Ё¬Ґ б®Їа®ў®¦¤ЇҐвбп
бЇҐжЁ «м­л¬Ё Їа®ўҐаЄ ¬Ё Ё ¤Ґ©бвўЁп¬Ё, Є Є Ї®Є § ­® ў б«Ґ¤го饬
«ЁбвЁ­ЈҐ:


IF § Јаг¦ Ґвбп SS:
IF ᥫҐЄв®а Їгбв®© THEN #GP(0);
€­¤ҐЄб ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е ҐЈ® в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў,
ELSE #GP(ᥫҐЄв®а);
RPL ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм а ўҐ­ CPL ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤®«¦Ґ­ § ¤ ў вм ᥣ¬Ґ­в ¤ ­­ле, ¤®бвгЇ­л© ¤«п § ЇЁбЁ,
ELSE #GP(ᥫҐЄв®а);
DPL ў Ў ©вҐ AR ¤®«¦Ґ­ Ўлвм а ўҐ­ CPL ELSE #GP(ᥫҐЄв®а);
‘ҐЈ¬Ґ­в ¤®«¦Ґ­ Ўлвм Ї®¬ҐзҐ­ Є Є ЏаЁбгвбвўгойЁ© ELSE
#NP(ᥫҐЄв®а);
‡ Јаг§Є  ॣЁбва  SS ᥫҐЄв®а®¬;
‡ Јаг§Є  ॣЁбва  SS ¤ҐбЄаЁЇв®а®¬;

IF DS, ES, FS Ё«Ё GS § Јаг¦ Ґвбп ­Ґ-Їгбвл¬ бҐ«ҐЄв®а®¬:
Ѓ ©в AR ¤®«¦Ґ­ § ¤ ў вм ᥣ¬Ґ­в ¤ ­­ле Ё«Ё Є®¤®ўл© ᥣ¬Ґ­в,
¤®бвгЇ­л© ¤«п § ЇЁбЁ з⥭Ёп, ELSE #GP(ᥫҐЄв®а);
IF ᥣ¬Ґ­в ¤ ­­ле Ё«Ё ­Ґ-Є®­д®а¬­л© ᥣ¬Ґ­в Є®¤ 
THEN RPL Ё CPL ¤®«¦­л Ўлвм ¬Ґ­миҐ Ё«Ё а ў­л DPL ў Ў ©вҐ AR;
ELSE #GP(ᥫҐЄв®а);
FI;
‘ҐЈ¬Ґ­в ¤®«¦Ґ­ Ўлвм Ї®¬ҐзҐ­ Є Є ЏаЁбгвбвўгойЁ© ELSE
#NP(ᥫҐЄв®а);
‡ Јаг§Є  ᥣ¬Ґ­в­®Ј® ॣЁбва  бҐ«ҐЄв®а®¬;
‡ Јаг§Є  ᥣ¬Ґ­в­®Ј® ॣЁбва  ¤ҐбЄаЁЇв®а®¬;

IF DS, ES, FS Ё«Ё GS § Јаг¦ Ґвбп Їгбвл¬ бҐ«ҐЄв®а®¬:
‡ Јаг§Є  ᥣ¬Ґ­в­®Ј® ॣЁбва  бҐ«ҐЄв®а®¬;
ЋзЁбвЄ  ЎЁв  „®бв®ўҐа­®бвЁ ў ­ҐўЁ¤Ё¬®© з б⨠ॣЁбва 

€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

Ћвбгвбвўгов

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#GP, #SS Ё #NP, Ґб«Ё § Јаг¦ Ґвбп ᥣ¬Ґ­в­л© ॣЁбва; #SS(0),
Ґб«Ё ⥪гй п ўҐаиЁ­  б⥪  ­Ґ ­ е®¤Ёвбп ў Ја ­Ёж е б⥪®ў®Ј®
ᥣ¬Ґ­в ; #GP(0), Ґб«Ё ­ §­ зҐ­ЁҐ¬ пў«пҐвбп ᥣ¬Ґ­в, ­Ґ¤®бвгЇ­л©
¤«п § ЇЁбЁ; #GP(0) ў б«гз Ґ ­Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«­ЁвҐ«м­®Ј®  ¤аҐб 
®ЇҐа ­¤  Ї ¬пвЁ ў ᥣ¬Ґ­в е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў
б«гз Ґ ­Ґ¤®ЇгбвЁ¬®Ј®  ¤аҐб  ў ᥣ¬Ґ­вҐ SS; #PF(Є®¤ бЎ®п) ў
б«гз Ґ бва ­Ёз­®Ј® бЎ®п; #AC ¤«п ­Ґўла ў­Ґ­­®© ббл«ЄЁ Є Ї ¬пвЁ
ЇаЁ ⥪г饬 га®ў­Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, а ў­®¬ 3.


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ­¤  «Ґ¦Ёв ў­Ґ
Їа®бва ­бвў  ЁбЇ®«­ЁвҐ«м­ле  ¤аҐб®ў ®в 0 ¤® 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

’Ґ ¦Ґ ЁбЄ«о祭Ёп, зв® Ё ¤«п ०Ё¬  ॠ«м­ле  ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва ­Ёз­ле бЎ®Ґў. #AC ¤«п ­Ґўла ў­Ґ­­®© ббл«ЄЁ Є
Ї ¬пвЁ ЇаЁ ⥪г饬 га®ў­Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, а ў­®¬ 3.

ЏаЁ¬Ґз ­ЁҐ
----------

ђ §аҐиҐ­л Ї®б«Ґ¤®ў вҐ«м­®бвЁ Ї а­ле Є®¬ ­¤ PUSH/POP, ­Ґ
вॡгойЁҐ ¤®Ї®«­ЁвҐ«м­®Ј® в Єв®ў®Ј® жЁЄ«  ¬Ґ¦¤г ­Ё¬Ё.

-----------------------------------------------------------------


POPA/POPAD - €§ў«ҐзҐ­ЁҐ Ё§ б⥪  ўбҐе ॣЁбва®ў ®ЎйҐЈ® ­ §­ зҐ­Ёп

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|61 POPA 9 €§ў«ҐзҐ­ЁҐ Ё§ б⥪  DI, SI, |
| BP, BX, DX, CX Ё AX |
|61 POPAD 9 €§ў«ҐзҐ­ЁҐ Ё§ б⥪  EDI, ESI, |
| EBP, EBX, EDX, ECX Ё EAX |
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

IF OperandSize = 16 (* Љ®¬ ­¤  = POPA *)
THEN
DI <- Pop();
SI <- POP();
BP <- Pop();
вҐапҐвбп <- Pop(); (* Џа®ЇгбЄ SP *)
BX <- Pop();
DX <- Pop();
CX <- Pop();
AX <- Pop();
ELSE (* OperandSize = 32, Є®¬ ­¤  = POPAD *)
EDI <- Pop();
ESI <- POP();
EBP <- Pop();
вҐапҐвбп <- Pop(); (* Џа®ЇгбЄ ESP *)
EBX <- Pop();
EDX <- Pop();
ECX <- Pop();
EAX <- Pop();
FI;


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤  POPA Ё§ў«ҐЄ Ґв Ё§ б⥪  ў®бҐ¬м 16-ЎЁв®ўле ॣЁбва®ў
®ЎйҐЈ® ­ §­ зҐ­Ёп. Ћ¤­ Є®, §­ зҐ­ЁҐ SP ў¬Ґбв® § Јаг§ЄЁ ॣЁбва 
SP г­Ёз⮦ Ґвбп. Љ®¬ ­¤  POPA ॢҐабЁагҐв ¤Ґ©бвўЁҐ ЇаҐ¤л¤г饩
Є®¬ ­¤л PUSHA, ў®ббв ­ ў«Ёў п §­ зҐ­Ёп ॣЁбва®ў ®ЎйҐЈ®
­ §­ зҐ­Ёп, Є®в®алҐ ®­Ё Ё¬Ґ«Ё ЇҐаҐ¤ ўлЇ®«­Ґ­ЁҐ¬ Є®¬ ­¤л PUSHA.
ЏҐаўл© Ё§ў«ҐЄ Ґ¬л© ॣЁбва - нв® DI.

Љ®¬ ­¤  POPAD Ё§ў«ҐЄ Ґв Ё§ б⥪  ў®бҐ¬м 32-ЎЁв®ўле ॣЁбва®ў
®ЎйҐЈ® ­ §­ зҐ­Ёп. Ћ¤­ Є®, §­ зҐ­ЁҐ ESP ў¬Ґбв® § Јаг§ЄЁ ॣЁбва 
ESP г­Ёз⮦ Ґвбп. Љ®¬ ­¤  POPAD ॢҐабЁагҐв ¤Ґ©бвўЁҐ ЇаҐ¤л¤г饩
Є®¬ ­¤л PUSHAD, ў®ббв ­ ў«Ёў п §­ зҐ­Ёп ॣЁбва®ў ®ЎйҐЈ®
­ §­ зҐ­Ёп, Є®в®алҐ ®­Ё Ё¬Ґ«Ё ЇҐаҐ¤ ўлЇ®«­Ґ­ЁҐ¬ Є®¬ ­¤л PUSHAD.
ЏҐаўл© Ё§ў«ҐЄ Ґ¬л© ॣЁбва - нв® EDI.


€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

Ћвбгвбвўгов

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#SS(0), Ґб«Ё ­ з «м­л© Ё«Ё Є®­Ґз­л©  ¤аҐб б⥪  ­Ґ ­ е®¤Ёвбп ў
ЇаҐ¤Ґ« е б⥪®ў®Ј® ᥣ¬Ґ­в ; #PF(Є®¤ бЎ®п) ў б«гз Ґ бва ­Ёз­®Ј®
бЎ®п;


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ­¤  «Ґ¦Ёв ў­Ґ
Їа®бва ­бвў  ЁбЇ®«­ЁвҐ«м­ле  ¤аҐб®ў ®в 0 ¤® 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

’Ґ ¦Ґ ЁбЄ«о祭Ёп, зв® Ё ¤«п ०Ё¬  ॠ«м­ле  ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва ­Ёз­ле бЎ®Ґў.

-----------------------------------------------------------------


POPF/POPFD - €§ў«ҐзҐ­ЁҐ Ё§ б⥪  ॣЁбва®ў FLAGS Ё«Ё ERFLAGS

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|9D POPF 9,pm=6 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  ў |
| FLAGS |
|9D POPFD 9,pm=6 €§ў«ҐзҐ­ЁҐ ўҐаиЁ­л б⥪  ў |
| EFLAGS |
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

”« ЈЁ <- Pop();


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤  POPA б­Ё¬ Ґв б ўҐаиЁ­л б⥪  б«®ў® Ё«Ё ¤ў®©­®Ґ б«®ў® Ё
Ї®¬Ґй Ґв ҐЈ® ў® д« Ј®ўл© ॣЁбва. …б«Ё  ваЁЎгв а §¬Ґа  ®ЇҐа ­¤ 
Є®¬ ­¤л а ўҐ­ 16 ЎЁв ¬, Ё§ б⥪  Ё§ў«ҐЄ Ґвбп б«®ў®, Ё ҐЈ®
ᮤҐа¦Ё¬®Ґ Ї®¬Ґй Ґвбп ў ॣЁбва FLAGS. …б«Ё  ваЁЎгв а §¬Ґа 
®ЇҐа ­¤  Є®¬ ­¤л а ўҐ­ 32 ЎЁв , Ё§ б⥪  Ё§ў«ҐЄ Ґвбп ¤ў®©­®Ґ
б«®ў®, Ё ҐЈ® ᮤҐа¦Ё¬®Ґ Ї®¬Ґй Ґвбп ў ॣЁбва EFLAGS.

€­д®а¬ жЁп ® ॣЁбва е FLAGS Ё EFLAGS ­ е®¤Ёвбп ў Ј« ў е 2 Ё 4.
Ћв¬ҐвЁ¬, зв® ЎЁвл 16 Ё 17 ॣЁбва  EFLAGS, ­ §лў Ґ¬лҐ VM Ё RF,
ᮮ⢥вб⢥­­®, ­Ґ § ўЁбпв ®в а Ў®вл Є®¬ ­¤л POPF Ё POPFD.

“а®ўҐ­м ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ ўў®¤ /ўлў®¤  ¬®¦Ґв Ўлвм Ё§¬Ґ­Ґ­
в®«мЄ® ЇаЁ ўлЇ®«­Ґ­ЁЁ ­  га®ў­Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ 0. ”« Ј
ЇаҐалў ­Ёп Ё§¬Ґ­пҐвбп в®«мЄ® ЇаЁ ўлЇ®«­Ґ­ЁЁ ­  га®ў­Ґ, Є Є
¬Ё­Ё¬г¬ а ў­®¬ га®ў­о ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ ўў®¤ /ўлў®¤ . (ђҐ¦Ё¬
ॠ«м­ле  ¤аҐб®ў нЄўЁў «Ґ­вҐ­ га®ў­о ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ 0).
…б«Ё Є®¬ ­¤  POPF ўлЇ®«­пҐвбп ЇаЁ ­Ґ¤®бв в®з­®¬ га®ў­Ґ
ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, ЁбЄ«о祭ЁҐ ­Ґ ў®§­ЁЄ Ґв, ­®
ЇаЁўЁ«ҐЈЁа®ў ­­лҐ ЎЁвл ­Ґ Ё§¬Ґ­повбп.

€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

‚ᥠ䫠ЈЁ, §  ЁбЄ«о祭ЁҐ¬ д« Ј®ў VM Ё RF.

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#SS(0), Ґб«Ё ўҐаиЁ­  б⥪  ­Ґ ­ е®¤Ёвбп ў ЇаҐ¤Ґ« е б⥪®ў®Ј®
ᥣ¬Ґ­в .


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ­¤  «Ґ¦Ёв ў­Ґ
Їа®бва ­бвў  ЁбЇ®«­ЁвҐ«м­ле  ¤аҐб®ў ®в 0 ¤® 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

‘Ў®© #GP(0), Ґб«Ё га®ўҐ­м ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ ¬Ґ­миҐ 3, зв®
Ї®§ў®«пҐв н¬г«пжЁо.

-----------------------------------------------------------------


PUSH - Ї®¬ҐйҐ­ЁҐ ®ЇҐа ­¤  ў б⥪

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|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 = 16
THEN
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, ­Ґ
вॡгойЁҐ ¤®Ї®«­ЁвҐ«м­®Ј® в Єв®ў®Ј® жЁЄ«  ¬Ґ¦¤г ­Ё¬Ё.

-----------------------------------------------------------------


PUSHA/PUSHAD - Џ®¬ҐйҐ­ЁҐ ў б⥪ ўбҐе ॣЁбва®ў ®ЎйҐЈ® ­ §­ зҐ­Ёп

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|60 PUSHA 11 Џ®¬ҐйҐ­ЁҐ ў б⥪ AX, CX, DX,|
| BX, Ёб室­®Ј® SP, BP, SI Ё DI|
|60 PUSHAD 11 Џ®¬ҐйҐ­ЁҐ ў б⥪ EAX, ECX, EDX,|
| EBX, Ёб室­®Ј® ESP,EBP,ESI Ё EDI|
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

IF OperandSize = 16 (* Љ®¬ ­¤  = PUSHA *)
THEN
‚६ <- (SP);
Push(AX);
Push(CX);
Push(DX);
Push(BX);
Push(‚६);
Push(BP);
Push(SI);
Push(DI);
ELSE (* OperandSize = 32, Є®¬ ­¤  = PUSHAD *)
‚६ <- (ESP);
Push(EAX);
Push(ECX);
Push(EDX);
Push(EBX);
Push(‚६);
Push(EBP);
Push(ESI);
Push(EDI);
FI;


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤л PUSHA Ё PUSHAD Ї®¬Ґй ов ў б⥪ i486 16- Ё«Ё 32-ЎЁв®ўлҐ
ॣЁбвал ®ЎйҐЈ® ­ §­ зҐ­Ёп. Љ®¬ ­¤  PUSHA ¤ҐЄаҐ¬Ґ­вЁагҐв
гЄ § вҐ«м б⥪  (SP) ­  16, з⮠ᮮ⢥вбвўгҐв ў®бм¬Ё Ї®¬Ґй Ґ¬л¬
§­ зҐ­Ёп¬ а §¬Ґа®¬ ў б«®ў®. Љ®¬ ­¤  PUSHAD ¤ҐЄаҐ¬Ґ­вЁагҐв
гЄ § вҐ«м б⥪  (ESP) ­  32, з⮠ᮮ⢥вбвўгҐв ў®бм¬Ё Ї®¬Ґй Ґ¬л¬
§­ зҐ­Ёп¬ а §¬Ґа®¬ ў ¤ў®©­®Ґ б«®ў®. Џ®бЄ®«мЄг ॣЁбвал
Ї®¬Ґй овбп ў б⥪ ў ¤ ­­®¬ Ї®ап¤ЄҐ, ў ­®ў®¬ б⥪Ґ ®­Ё Ї®пўпвбп ў
®Ўа в­®¬ Ї®ап¤ЄҐ. Џ®б«Ґ¤­Ё¬ ў б⥪ Ї®¬Ґй Ґвбп ॣЁбва DI Ё«Ё
EDI.


€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

Ћвбгвбвўгов

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#SS(0), Ґб«Ё ­ з «м­л© Ё«Ё Є®­Ґз­л©  ¤аҐб б⥪  ­Ґ ­ е®¤Ёвбп ў
ЇаҐ¤Ґ« е б⥪®ў®Ј® ᥣ¬Ґ­в ; #PF(Є®¤ бЎ®п) ў б«гз Ґ бва ­Ёз­®Ј®
бЎ®п;


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏҐаҐ¤ ўлЇ®«­Ґ­ЁҐ¬ Є®¬ ­¤л PUSHA Ё«Ё PUSHAD Їа®жҐбб®а 386 DX
ЇҐаҐе®¤Ёв ў ०Ё¬ § ЄалвЁп ЇаЁ а ўҐ­б⢥ ॣЁбва  SP Ё«Ё ESP 1,
3 Ё«Ё 5; Ґб«Ё ॣЁбва SP Ё«Ё ESP а ўҐ­ 7, 9, 11, 13 Ё«Ё 15, в®
Їа®Ёб室Ёв ЁбЄ«о祭ЁҐ 13.

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ­¤  «Ґ¦Ёв ў­Ґ
Їа®бва ­бвў  ЁбЇ®«­ЁвҐ«м­ле  ¤аҐб®ў ®в 0 ¤® 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

’Ґ ¦Ґ ЁбЄ«о祭Ёп, зв® Ё ¤«п ०Ё¬  ॠ«м­ле  ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва ­Ёз­ле бЎ®Ґў.

-----------------------------------------------------------------


PUSHF/PUSHFD - Џ®¬ҐйҐ­ЁҐ ў б⥪ д« Ј®ўле ॣЁбва®ў

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|9C PUSHF 4,pm=3 Џ®¬ҐйҐ­ЁҐ ў б⥪ FLAGS |
|9C PUSHFD 4,pm=3 Џ®¬ҐйҐ­ЁҐ ў б⥪ EFLAGS |
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

IF OperandSize = 32
THEN push(EFLAGS);
ELSE push(FLAGS);
FI;


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤  PUSHF ¤ҐЄаҐ¬Ґ­вЁагҐв гЄ § вҐ«м б⥪  ­  2 Ё Є®ЇЁагҐв
ॣЁбва FLAGS ў ­®ўго ўҐаиЁ­г б⥪ ; Є®¬ ­¤  PUSHFD
¤ҐЄаҐ¬Ґ­вЁагҐв гЄ § вҐ«м б⥪  ­  4, Ё ў ­®ўго ўҐаиЁ­г б⥪ 
Є®ЇЁагҐвбп ॣЁбва EFLAGS, ­  Є®в®аго гЄ §лў Ґв SS:ESP.
€­д®а¬ жЁо ® ॣЁбвॠEFLAGS б¬. ў Ј« ў е 2 Ё 4.


€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

Ћвбгвбвўгов

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#SS(0), Ґб«Ё ­®ў®Ґ §­ зҐ­ЁҐ ॣЁбва  ESP ­Ґ ­ е®¤Ёвбп ў ЇаҐ¤Ґ« е
б⥪®ў®Ј® ᥣ¬Ґ­в .


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

Ћвбгвбвўгов: Їа®жҐбб®а ЇҐаҐе®¤Ёв ў ०Ё¬ § ЄалвЁп Ё§-§ 
­Ґ¤®бв в®з­®Ј® а §¬Ґа  Ї ¬пвЁ б⥪ .

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

‘Ў®© #GP(0), Ґб«Ё га®ўҐ­м ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ ¬Ґ­миҐ 3, зв®
Ї®§ў®«пҐв н¬г«пжЁо.

-----------------------------------------------------------------


RCL/RCR/ROL/ROR - –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|D0 /2 RCL r/m8,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| (CF, Ў ©в r/m) ў«Ґў® 1 а § |
|D2 /2 RCL r/m8, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| CL (CF, Ў ©в r/m) ў«Ґў® CL а § |
|C0 /2 ib RCL r/m8, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| imm8 (CF, Ў ©в r/m) ў«Ґў® imm8 а § |
|D1 /2 RCL r/m16,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| (CF,б«®ў® r/m) ў«Ґў® 1 а § |
|D3 /2 RCL r/m16, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| CL (CF,б«®ў® r/m) ў«Ґў® CL а § |
|C1 /2 ib RCL r/m16, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| imm8 (CF,б«®ў® r/m) ў«Ґў® imm8 а § |
|D1 /2 RCL r/m32,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| (CF,¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® 1 а § |
|D3 /2 RCL r/m32, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| CL (CF,¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® CL а § |
|C1 /2 ib RCL r/m32, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| imm8 (CF,¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® imm8 а §|
|D0 /3 RCR r/m8,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| (CF, Ў ©в r/m) ўЇа ў® 1 а § |
|D2 /3 RCR r/m8, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| CL (CF, Ў ©в r/m) ўЇа ў® CL а § |
|C0 /3 ib RCR r/m8, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 9 ЎЁв®ў |
| imm8 (CF, Ў ©в r/m) ўЇа ў® imm8 а § |
|D1 /3 RCR r/m16,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| (CF,б«®ў® r/m) ўЇа ў® 1 а § |
|D3 /3 RCR r/m16, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| CL (CF,б«®ў® r/m) ўЇа ў® CL а § |
|C1 /3 ib RCR r/m16, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 17 ЎЁв®ў |
| imm8 (CF,б«®ў® r/m) ўЇа ў® imm8 а § |
|D1 /3 RCR r/m32,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| (CF,¤ў®©­®Ґ б«®ў® r/m) ўЇа ў® 1 а § |
|D3 /3 RCR r/m32, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| CL (CF,¤ў®©­®Ґ б«®ў® r/m) ўЇа ў® CL а § |
|C1 /3 ib RCR r/m32, 8-30/9-31 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 33 ЎЁв®ў |
| imm8 (CF,¤ў®©­®Ґ б«®ў® r/m)ўЇа ў® imm8 а §|
|D0 /0 ROL r/m8,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| ( Ў ©в r/m) ў«Ґў® 1 а § |
|D2 /0 ROL r/m8, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| CL ( Ў ©в r/m) ў«Ґў® CL а § |
|C0 /0 ib ROL r/m8, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| imm8 ( Ў ©в r/m) ў«Ґў® imm8 а § |
|D1 /0 ROL r/m16,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| ( б«®ў® r/m) ў«Ґў® 1 а § |
|D3 /0 ROL r/m16, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| CL ( б«®ў® r/m) ў«Ґў® CL а § |
|C1 /0 ib ROL r/m16, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| imm8 ( б«®ў® r/m) ў«Ґў® imm8 а § |
|D1 /0 ROL r/m32,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| (¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® 1 а § |
|D3 /0 ROL r/m32, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| CL (¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® CL а § |
|C1 /0 ib ROL r/m32, 2/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| imm8 (¤ў®©­®Ґ б«®ў® r/m) ў«Ґў® imm8 а §|
|D0 /1 ROR r/m8,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| ( Ў ©в r/m) ўЇа ў® 1 а § |
|D2 /1 ROR r/m8, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| CL ( Ў ©в r/m) ўЇа ў® CL а § |
|C0 /1 ib ROR r/m8, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 8 ЎЁв®ў |
| imm8 ( Ў ©в r/m) ўЇа ў® imm8 а § |
|D1 /1 ROR r/m16,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| ( б«®ў® r/m) ўЇа ў® 1 а § |
|D3 /1 ROR r/m16, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| CL ( б«®ў® r/m) ўЇа ў® CL а § |
|C1 /1 ib ROR r/m16, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 16 ЎЁв®ў |
| imm8 ( б«®ў® r/m) ўЇа ў® imm8 а § |
|D1 /1 ROR r/m32,1 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| (¤ў®©­®Ґ б«®ў® r/m) ўЇа ў® 1 а § |
|D3 /1 ROR r/m32, 3/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| CL (¤ў®©­®Ґ б«®ў® r/m) ўЇа ў® CL а § |
|C1 /1 ib ROR r/m32, 2/4 –ЁЄ«ЁзҐбЄЁ© б¤ўЁЈ 32 ЎЁв®ў |
| imm8 (¤ў®©­®Ґ б«®ў® r/m)ўЇа ў® imm8 а §|
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

(* ROL - жЁЄ«ЁзҐбЄЁ© б¤ўЁЈ ў«Ґў® *)
ўаҐ¬ <- бзҐвзЁЄ;
WHILE(ўаҐ¬ <> 0)
DO
ўаҐ¬cf <- бв аиЁ© ЎЁв (r/m);
r/m <- r/m * 2 + (ўаҐ¬cf);
ўаҐ¬ <- ўаҐ¬ - 1;
OD;
IF бзҐвзЁЄ = 1
THEN
IF бв аиЁ© ЎЁв r/m <> CF
THEN OF <- 1;
ELSE OF <- 0;
FI;
ELSE OF <- ­Ґ®ЇаҐ¤Ґ«Ґ­®;
FI;

(* ROR - жЁЄ«ЁзҐбЄЁ© б¤ўЁЈ ўЇа ў® *)
ўаҐ¬ <- бзҐвзЁЄ;
WHILE(ўаҐ¬ <> 0)
DO
ўаҐ¬cf <- ¬« ¤иЁ© ЎЁв (r/m);
r/m <- r/m / 2 + (ўаҐ¬cf * 2 ** width(r/m));
ўаҐ¬ <- ўаҐ¬ - 1;
OD;
IF бзҐвзЁЄ = 1
THEN
IF (бв аиЁ© ЎЁв r/m) <> (ЎЁв, б®бҐ¤­Ё© б® бв аиЁ¬ ЎЁв®¬ r/m)
THEN OF <- 1;
ELSE OF <- 0;
FI;
ELSE OF <- ­Ґ®ЇаҐ¤Ґ«Ґ­®;
FI;


ЋЇЁб ­ЁҐ
--------

Љ ¦¤ п Є®¬ ­¤  жЁЄ«ЁзҐбЄ®Ј® б¤ўЁЈ  б¤ўЁЈ Ґв ЎЁвл ¤ ­­®Ј®
®ЇҐа ­¤  ॣЁбва  Ё«Ё Ї ¬пвЁ. Љ®¬ ­¤  жЁЄ«ЁзҐбЄ®Ј® б¤ўЁЈ  ў«Ґў®
б¤ўЁЈ о⠢ᥠЎЁвл ў ўҐае­Ґ¬ ­ Їа ў«Ґ­ЁЁ, §  ЁбЄ«о祭ЁҐ¬ б ¬®Ј®
ўҐае­ҐЈ® ЎЁв , Є®в®ал© ЇҐаҐе®¤Ёв ў ­Ё¦­оо Ї®§ЁжЁо. Љ®¬ ­¤л
жЁЄ«ЁзҐбЄ®Ј® б¤ўЁЈ  ўлЇ®«­пов ®Ўа в­®Ґ ¤Ґ©бвўЁҐ: ЎЁвл б¤ўЁЈ овбп
ў ­Ё¦­Ґ¬ ­ Їа ў«Ґ­ЁЁ, Ї®Є  б ¬л© ­Ё¦­Ё© ЎЁв ­Ґ ®Є ¦Ґвбп ᢥаег.

‚ б«гз Ґ Є®¬ ­¤ RCL Ё RCR д« Ј CF пў«пҐвбп з бвмо б¤ўЁЈ Ґ¬ле
¤ ­­ле. Љ®¬ ­¤  RCL б¤ўЁЈ Ґв д« Ј CF ў ­Ё¦­Ё© ЎЁв,   ўҐае­Ё© ЎЁв
б¤ўЁЈ Ґв ў® д« Ј CF; Є®¬ ­¤  RCR б¤ўЁЈ Ґв д« Ј CF ў ўҐае­Ё© ЎЁв,
  ­Ё¦­Ё© ЎЁв б¤ўЁЈ Ґв ў® д« Ј CF. „«п Є®¬ ­¤ ROL Ё ROR Ёб室­®Ґ
§­ зҐ­ЁҐ д« Ј  CF ­Ґ пў«пҐвбп з бвмо १г«мв в , ­® д« Ј CF
Ї®«гз Ґв Є®ЇЁо ЎЁв , Є®в®ал© Ўл« б¤ўЁ­гв б ®¤­®Ј® Є®­ж  ­ 
¤агЈ®©.

‘¤ўЁЈ Ї®ўв®апҐвбп зЁб«® а §, § ¤ ў Ґ¬®Ґ ўв®ал¬ ®ЇҐа ­¤®¬,
Є®в®ал© ЇаҐ¤бв ў«пҐв б®Ў®© «ЁЎ® ­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ, «ЁЎ®
ᮤҐа¦Ё¬®Ґ ॣЁбва  CL. „«п 㬥­м襭Ёп ¬ ЄбЁ¬ «м­®Ј® ўаҐ¬Ґ­Ё
ўлЇ®«­Ґ­Ёп Є®¬ ­¤л Їа®жҐбб®а i486 ­Ґ Ї®§ў®«пҐв зЁб«® жЁЄ«ЁзҐбЄЁе
б¤ўЁЈ®ў Ў®«ҐҐ 31. ЏаЁ Ї®ЇлвЄҐ ᤥ« вм бзҐвзЁЄ б¤ўЁЈ®ў Ў®«ҐҐ 31
ЁбЇ®«м§говбп в®«мЄ® ­Ё¦­ЁҐ 5 ЎЁв®ў. 8086 ­Ґ ¬ бЄЁагҐв бзҐвзЁЄ
б¤ўЁЈ®ў. ‚ ўЁавг «м­®¬ ०Ё¬Ґ 8086 Їа®жҐбб®а i486 ­Ґ ¬ бЄЁагҐв
бзҐвзЁЄ б¤ўЁЈ®ў.

”« Ј OF ®ЇаҐ¤Ґ«Ґ­ в®«мЄ® ¤«п ®¤­®Єа в­ле д®а¬ Є®¬ ­¤л (ўв®а®©
®ЇҐа ­¤ а ўҐ­ 1). ‚ ®бв «м­ле б«гз пе ®­ ­Ґ ®ЇаҐ¤Ґ«Ґ­. „«п
б¤ўЁЈ®ў/жЁЄ«ЁзҐбЄЁе б¤ўЁЈ®ў ў«Ґў® ¤«п ЎЁв  CF Ї®б«Ґ б¤ўЁЈ 
ўлЇ®«­пҐвбп ®ЇҐа жЁп XOR б ЎЁв®¬ १г«мв в  бв а襣® Ї®ап¤Є .
„«п б¤ўЁЈ®ў/жЁЄ«ЁзҐбЄЁе б¤ўЁЈ®ў ўЇа ў® ¤«п ¤ўге ЎЁв®ў бв а襣®
Ї®ап¤Є  १г«мв в  ўлЇ®«­пҐвбп ®ЇҐа жЁп XOR ¤«п Ї®«г祭Ёп д« Ј 
OF.

€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

”« Ј OF Ё§¬Ґ­пҐвбп в®«мЄ® ў б«гз Ґ жЁЄ«ЁзҐбЄЁе б¤ўЁЈ®ў ­  1 ЎЁв;
¤«п б¤ўЁЈ®ў ­  ­ҐбЄ®«мЄ® ЎЁв®ў д« Ј OF ­Ґ®ЇаҐ¤Ґ«Ґ­; д« Ј CF
ᮤҐа¦Ёв §­ зҐ­ЁҐ ЎЁв , Є®в®ал© Ўл« ў ­ҐЈ® Ї®¬ҐйҐ­ б¤ўЁЈ®¬;
д« ЈЁ SF, ZF, AF Ё PF ­Ґ Ё§¬Ґ­повбп.

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#GP(0), Ґб«Ё ­ §­ зҐ­ЁҐ¬ пў«пҐвбп ᥣ¬Ґ­в, ­Ґ¤®бвгЇ­л© ¤«п
§ ЇЁбЁ; #GP(0) ў б«гз Ґ ­Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«­ЁвҐ«м­®Ј®  ¤аҐб 
®ЇҐа ­¤  Ї ¬пвЁ ў ᥣ¬Ґ­в е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў
б«гз Ґ ­Ґ¤®ЇгбвЁ¬®Ј®  ¤аҐб  ў ᥣ¬Ґ­вҐ SS; #PF(Є®¤ бЎ®п) ў
б«гз Ґ бва ­Ёз­®Ј® бЎ®п; #AC ¤«п ­Ґўла ў­Ґ­­®© ббл«ЄЁ Є Ї ¬пвЁ
ЇаЁ ⥪г饬 га®ў­Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, а ў­®¬ 3.


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ­¤  «Ґ¦Ёв ў­Ґ
Їа®бва ­бвў  ЁбЇ®«­ЁвҐ«м­ле  ¤аҐб®ў ®в 0 ¤® 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

’Ґ ¦Ґ ЁбЄ«о祭Ёп, зв® Ё ¤«п ०Ё¬  ॠ«м­ле  ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва ­Ёз­ле бЎ®Ґў. #AC ¤«п ­Ґўла ў­Ґ­­®© ббл«ЄЁ Є
Ї ¬пвЁ ЇаЁ ⥪г饬 га®ў­Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, а ў­®¬ 3.

-----------------------------------------------------------------


REP/REPE/REPZ/REPNE/REPNZ - Џ®ўв®аҐ­ЁҐ б«Ґ¤го饩 бва®Є®ў®© Є®¬ ­¤л

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|F3 6C REP INS 16+8(E)CX, ‚ў®¤ (E)CX Ў ©в®ў Ё§ |
| r/m8,DX pm=10+8(E)CX *1/ Ї®ав  DX ў ES:[(E)DI] |
| 30+8(E)CX *2, |
| VM=29+8(E)CX |
|F3 6D REP INS 16+8(E)CX, ‚ў®¤ (E)CX б«®ў Ё§ |
| r/m16,DX pm=10+8(E)CX *1/ Ї®ав  DX ў ES:[(E)DI] |
| 30+8(E)CX *2, |
| VM=29+8(E)CX |
|F3 6D REP INS 16+8(E)CX, ‚ў®¤ (E)CX ¤ў®©­ле б«®ў|
| r/m32,DX pm=10+8(E)CX *1/ Ё§ Ї®ав  DX ў ES:[(E)DI]|
| 30+8(E)CX *2, |
| VM=29+8(E)CX |
|F3 A4 REP MOVS 5 *3, 13 *4, ЏҐаҐбл«Є  (E)CX Ў ©в®ў |
| m8,m8 12+3(E)CX *5 Ё§ [(E)SI] ў ES:[(E)DI]|
|F3 A5 REP MOVS 5 *3, 13 *4, ЏҐаҐбл«Є  (E)CX б«®ў |
| m16,m16 12+3(E)CX *5 Ё§ [(E)SI] ў ES:[(E)DI]|
|F3 A5 REP MOVS 5 *3, 13 *4, ЏҐаҐбл«Є  (E)CX ¤ў®©­ле|
| m32,m32 12+3(E)CX *5 б«®ў |
| Ё§ [(E)SI] ў ES:[(E)DI]|
|F3 6E REP OUTS 17+5(E)CX, ‚лў®¤ (E)CX Ў ©в®ў Ё§ |
| DX,r/m8 pm=11+5(E)CX *1/ [(E)SI] ў Ї®ав DX |
| 31+5(E)CX *2, |
| VM=30+5(E)CX |
|F3 6F REP OUTS 17+5(E)CX, ‚лў®¤ (E)CX б«®ў Ё§ |
| DX,r/m16 pm=11+5(E)CX *1/ [(E)SI] ў Ї®ав DX |
| 31+5(E)CX *2, |
| VM=30+5(E)CX |
|F3 6F REP INS 17+5(E)CX, ‚лў®¤ (E)CX ¤ў®©­ле б«®ў|
| DX,r/m32 pm=11+5(E)CX *1/ Ё§ [(E)SI] ў Ї®ав DX |
| 31+5(E)CX *2, |
| VM=30+5(E)CX |
|F2 AC REP LODS 5 *3, ‡ Јаг§Є  (E)CX Ў ©в®ў |
| m8 7 +4(E)CX *6 Ё§ [(E)SI] ў AL |
|F2 AD REP LODS 5 *3, ‡ Јаг§Є  (E)CX б«®ў |
| m16 7 +4(E)CX *6 Ё§ [(E)SI] ў AX |
|F2 AD REP LODS 5 *3, ‡ Јаг§Є  (E)CX ¤ў®©­ле|
| m32 7 +4(E)CX *6 б«®ў |
| Ё§ [(E)SI] ў EAX |
|F3 AA REP STOS 5 *3, ‡ Ї®«­Ґ­ЁҐ(E)CX Ў ©в®ў |
| m8 7 +4(E)CX *6 ў ES:[(E)DI] Ё§ AL |
|F3 AB REP STOS 5 *3, ‡ Ї®«­Ґ­ЁҐ(E)CX б«®ў |
| m16 7 +4(E)CX *6 ў ES:[(E)DI] Ё§ AX |
|F3 AB REP STOS 5 *3, ‡ Ї®«­Ґ­ЁҐ(E)CX ¤ў®©­ле|
| m32 7 +4(E)CX *6 б«®ў |
| ў ES:[(E)DI] Ё§ EAX |
|F3 A6 REPE CMPS 5 *3, Џ®ЁбЄ ­Ґб®ўЇ ¤ ойЁе |
| m8,M8 7 +7(E)CX *6 Ў ©в®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F3 A7 REPE CMPS 5 *3, Џ®ЁбЄ ­Ґб®ўЇ ¤ ойЁе |
| m16,m16 7 +7(E)CX *6 б«®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F3 A7 REPE CMPS 5 *3, Џ®ЁбЄ ­Ґб®ўЇ ¤ ойЁе |
| m32,m32 7 +7(E)CX *6 ¤ў®©­ле б«®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F3 AE REPE SCAS 5 *3, Џ®ЁбЄ ­Ґ а ў­ле AL |
| m8 7 +5(E)CX *6 Ў ©в®ў, ­ зЁ­ п б |
| ES:[(E)DI] |
|F3 AF REPE SCAS 5 *3, Џ®ЁбЄ ­Ґ а ў­ле AX |
| m16 7 +5(E)CX *6 б«®ў , ­ зЁ­ п б |
| ES:[(E)DI] |
|F3 AF REPE SCAS 5 *3, Џ®ЁбЄ ­Ґ а ў­ле EAX|
| m32 7 +5(E)CX *6 ¤ў®©­ле б«®ў, ­ зЁ­ п б|
| ES:[(E)DI] |
|F2 A6 REPNE CMPS 5 *3, Џ®ЁбЄ б®ўЇ ¤ ойЁе |
| m8,M8 7 +7(E)CX *6 Ў ©в®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F2 A7 REPNE CMPS 5 *3, Џ®ЁбЄ б®ўЇ ¤ ойЁе |
| m16,m16 7 +7(E)CX *6 б«®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F2 A7 REPNE CMPS 5 *3, Џ®ЁбЄ б®ўЇ ¤ ойЁе |
| m32,m32 7 +7(E)CX *6 ¤ў®©­ле б«®ў |
| ў ES:[(E)DI] Ё [(E)SI] |
|F2 AE REPNE SCAS 5 *3, Џ®ЁбЄ а ў­ле AL |
| m8 7 +5(E)CX *6 Ў ©в®ў, ­ зЁ­ п б |
| ES:[(E)DI] |
|F2 AF REPNE SCAS 5 *3, Џ®ЁбЄ а ў­ле AX |
| m16 7 +5(E)CX *6 б«®ў , ­ зЁ­ п б |
| ES:[(E)DI] |
|F2 AF REPNE SCAS 5 *3, Џ®ЁбЄ а ў­ле EAX|
| m32 7 +5(E)CX *6 ¤ў®©­ле б«®ў, ­ зЁ­ п б|
| ES:[(E)DI] |
-----------------------------------------------------------------

ЏаЁ¬Ґз ­Ёп: *1 Ґб«Ё CPL <= IOPL
*2 Ґб«Ё CPL > IOPL
*3 (E)CX = 0
*4 (E)CX = 1
*5 (E)CX > 1
*6 (E)CX > 0

ђ Ў®в  Є®¬ ­¤л
--------------

IF AddressSize = 16
THEN ў Є зҐб⢥ CountReg ЁбЇ®«м§гҐвбп CX;
ELSE (* AddressSize = 32 *) ў Є зҐб⢥ CountReg ЁбЇ®«м§гҐвбп ECX;
FI;

WHILE CountReg <> 0
DO
®Ўб«г¦Ёў ­ЁҐ Ї®¤ўҐиҐ­­ле ЇаҐалў ­Ё© (Ґб«Ё ®­Ё Ґбвм);
ўлЇ®«­Ґ­ЁҐ ЇаЁ¬ЁвЁў­®© бва®Є®ў®© Є®¬ ­¤л;
CountReg <- CountReg - 1;
IF ЇаЁ¬ЁвЁў­ п ®ЇҐа жЁп нв® CMPB,CMPW,SCAB Ё«Ё SCAW
THEN
IF (Є®¬ ­¤  REP/REPE/REPZ) AND (ZF=1)
THEN ўл室 Ё§ жЁЄ«  WHILE
ELSE
IF (Є®¬ ­¤  REPNZ Ё«Ё REPNE) AND (ZF=0)
THEN ўл室 Ё§ жЁЄ«  WHILE;
FI;
FI;
FI;
OD;

ЋЇЁб ­ЁҐ
--------

ЏаҐдЁЄбл REP, REPE (Ї®ўв®апвм Ї®Є  а ў­®) Ё REPNE (Ї®ўв®апвм
Ї®Є  ­Ґ а ў­®) ЇаЁ¬Ґ­повбп ў бва®Є®ўле ®ЇҐа жЁпе. Љ ¦¤л© ЇаҐдЁЄб
ўл§лў Ґв Ї®ўв®аҐ­ЁҐ б«Ґ¤го饩 §  ­Ё¬ бва®Є®ў®© Є®¬ ­¤л бв®«мЄ®
а §, бЄ®«мЄ® гЄ § ­® бзҐв­л¬ ॣЁбв஬ Ё«Ё (¤«п ЇаҐдЁЄб®ў REPE Ё
REPNE) Ї®Є  ­Ґ ЇҐаҐбв ­Ґв 㤮ў«Ґвў®апвмбп гб«®ўЁҐ, гЄ § ­­®Ґ
д« Ј®¬ ZF.

‘Ё­®­Ё¬ЁзҐбЄЁ¬Ё д®а¬ ¬Ё ЇаҐдЁЄб®ў REPE Ё REPNE пў«повбп ЇаҐдЁЄбл
REPZ Ё REPNZ, ᮮ⢥вб⢥­­®.

ЏаҐдЁЄбл REP ®¤­®ўаҐ¬Ґ­­® ЇаЁ¬Ґ­повбп в®«мЄ® Є ®¤­®© бва®Є®ў®©
Є®¬ ­¤Ґ. „«п Ї®ўв®аҐ­Ёп Ў«®Є  Є®¬ ­¤ ЁбЇ®«м§г©вҐ Є®¬ ­¤г LOOP
Ё«Ё ¤агЈго Є®­бвагЄжЁо жЁЄ« .

’®з­®Ґ ®ЇЁб ­ЁҐ ¤Ґ©бвўЁ© ЇаЁ Є ¦¤®© ЁвҐа жЁЁ б«Ґ¤г饥:

1. …б«Ё  ваЁЎгв а §¬Ґа   ¤аҐб  а ўҐ­ 16 ЎЁв ¬, ў Є зҐб⢥
ॣЁбва -бзҐвзЁЄ  ЁбЇ®«м§гҐвбп CX; …б«Ё ¦Ґ  ваЁЎгв а §¬Ґа 
 ¤аҐб  а ўҐ­ 32 ЎЁв ¬, ў Є зҐб⢥ ॣЁбва -бзҐвзЁЄ 
ЁбЇ®«м§гҐвбп ECX;

2. Џа®ўҐапҐвбп ॣЁбва CX. …б«Ё ®­ а ўҐ­ 0, Їа®Ёб室Ёв ўл室 Ё§
ЁвҐа жЁЁ Ё ЇҐаҐе®¤ Є б«Ґ¤го饩 Є®¬ ­¤Ґ.

3. “ўҐ¤®¬«Ґ­ЁҐ ® «оЎле Ї®¤ўҐиҐ­­ле ЇаҐалў ­Ёпе.

4. Ћ¤­®Єа в­®Ґ ўлЇ®«­Ґ­ЁҐ бва®Є®ў®© ®ЇҐа жЁЁ.

5. „ҐЄаҐ¬Ґ­в ॣЁбва  CX Ё«Ё ECX ­  Ґ¤Ё­Ёжг; д« ЈЁ ­Ґ
¬®¤ЁдЁжЁаговбп.

6. …б«Ё бва®Є®ў п Є®¬ ­¤  нв® SCAS Ё«Ё CMPS, Їа®ўҐапҐвбп д« Ј
ZF. …б«Ё гб«®ўЁҐ Ї®ўв®Ґ­Ёп ­Ґ ўлЇ®«­пҐвбп, в® Їа®Ёб室Ёв
ўл室 Ё§ ЁвҐа жЁЁ Ё ЇҐаҐе®¤ Є б«Ґ¤го饩 Є®¬ ­¤Ґ. ‚л室 Ё§
ЁвҐа жЁЁ Їа®Ёб室Ёв, Ґб«Ё ЇаҐдЁЄб нв® REPE,   д« Ј ZF а ўҐ­ 0
(Ї®б«Ґ¤­ҐҐ ба ў­Ґ­ЁҐ Ї®Є § «® ­Ґ-а ўҐ­бвў®), «ЁЎ® Ґб«Ё
ЇаҐдЁЄб нв® REPNE,   д« Ј ZF а ўҐ­ 1 (Ї®б«Ґ¤­ҐҐ ба ў­Ґ­ЁҐ
Ї®Є § «® а ўҐ­бвў®).

7. ‚®§ўа в Є и Јг 1 ¤«п б«Ґ¤го饩 ЁвҐа жЁЁ.

‚л室 Ё§ Ї®ўв®апойЁебп Є®¬ ­¤ CMPS Ё SCAS ў®§¬®¦Ґ­, Є®Ј¤  «ЁЎ®
бзҐвзЁЄ ®вбзЁв « ­г¦­®Ґ зЁб«® а §, «ЁЎ® д« Ј ZF Ї®Є § «, зв®
гб«®ўЁҐ Ї®ўв®аҐ­Ёп ­Ґ ўлЇ®«­пҐвбп. ќвЁ ¤ў  б«гз п ¬®¦­®
а §«ЁзЁвм, ЁбЇ®«м§гп ¤«п нв®Ј® «ЁЎ® Є®¬ ­¤г JCXZ, «ЁЎ® гб«®ў­лҐ
ЇҐаҐе®¤л, Їа®ўҐапойЁҐ д« Ј ZF (Є®¬ ­¤л JZ, JNZ Ё JNE).

€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

”« Ј ZF Ё§¬Ґ­пҐвбп Є®­бвагЄжЁп¬Ё REP CMPS Ё REP SCAS, Є Є Ўл«®
®ЇЁб ­® ўлиҐ.

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

Ћвбгвбвўгов


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

Ћвбгвбвўгов

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

Ћвбгвбвўгов

ЏаЁ¬Ґз ­ЁҐ
----------

ЌҐ ўбҐ Ї®авл ўў®¤ /ўлў®¤  бЇ®б®Ў­л Ї®¤¤Ґа¦Ёў вм бЄ®а®бвм, б
Є®в®а®© ўлЇ®«­повбп Є®¬ ­¤л REP INS Ё REP OUTS.

ЏаЁ ЁбЇ®«м§®ў ­ЁЁ б ­Ґ-бва®Є®ў®© Є®¬ ­¤®© ЇаҐдЁЄб Ї®ўв®аҐ­Ёп
ЁЈ­®аЁагҐвбп.

-----------------------------------------------------------------


RET - ‚®§ўа в Ё§ Їа®жҐ¤гал

-----------------------------------------------------------------
|Љ®¤ Љ®¬ ­¤  —Ёб«® ЋЇЁб ­ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|C3 RET 5 ‚®§ўа в (Ў«Ё¦­Ё©) ў |
| ўл§лў ойго Їа®жҐ¤гаг |
|CB RET 13,pm=18 ‚®§ўа в (¤ «м­Ё©) ў |
| ўл§лў ойго Їа®жҐ¤гаг, |
| в  ¦Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвм |
|CB RET 13,pm=33 ‚®§ўа в (¤ «м­Ё©) |
| ¬Ґ­ми п ЇаЁўЁ«ҐЈЁа®ў ­­®бвм, |
| б⥪Ё ЇҐаҐЄ«о祭Ёп § ¤ з |
|C2 iw RET imm16 5 ‚®§ўа в (¤ «м­Ё©), |
| Ё§ў«ҐзҐ­ЁҐ Ё§ б⥪  imm16 |
| Ў ©в®ў Ї а ¬Ґва®ў |
|CA iw RET imm16 14,pm=17 ‚®§ўа в (¤ «м­Ё©), |
| в  ¦Ґ ЇаЁўЁ«ҐЈЁа®ў ­­®бвм, |
| Ё§ў«ҐзҐ­ЁҐ Ё§ б⥪  imm16 |
| Ў ©в®ў |
|CA iw RET imm16 14,pm=33 ‚®§ўа в (¤ «м­Ё©), |
| ¬Ґ­ми п ЇаЁўЁ«ҐЈЁа®ў ­­®бвм, |
| Ё§ў«ҐзҐ­ЁҐ Ё§ б⥪  imm16 |
| Ў ©в®ў |
-----------------------------------------------------------------

ђ Ў®в  Є®¬ ­¤л
--------------

IF Є®¬ ­¤  = Ў«Ё¦­Ё© RET
THEN
IF OperandSize = 16
THEN
IP <- Pop();
EIP <- EIP AND 0000FFFFH;
ELSE (* OperandSize = 32 *)
EIP <- Pop();
FI;
IF ў Є®¬ ­¤Ґ § ¤ ­ ­ҐЇ®б।б⢥­­л© ®ЇҐа ­¤
THEN eSP <- eSP + imm16; FI;
FI;

IF (PE = 0 OR (PE = 1 AND VM = 1))
(* ०Ё¬ ॠ«м­ле  ¤аҐб®ў Ё«Ё ўЁавг «м­л© ०Ё¬ 8086 *)
AND Є®¬ ­¤  = ¤ «м­Ё© RET
THEN
IF OperandSize = 16
THEN
IP <- Pop();
EIP <- EIP AND 0000FFFFH;
CS <- Pop(); (* €§ў«ҐзҐ­ЁҐ Ё§ б⥪  16 ЎЁв®ў *)
ELSE (* OperandSize = 32 *)
EIP <- Pop();
CS <- Pop(); (* Ё§ў«ҐзҐ­ЁҐ Ё§ б⥪  32 ЎЁв®ў, 16 ЎЁв®ў
вҐаповбп *)
FI;
IF ў Є®¬ ­¤Ґ § ¤ ­ ­ҐЇ®б।б⢥­­л© ®ЇҐа ­¤
THEN eSP <- eSP + imm16; FI;
FI;

IF (PE = 1 AND VM = 0)
(* ‡ йЁйҐ­­л© ०Ё¬, ­Ґ ўЁавг «м­л© ०Ё¬ 8086 *)
AND Є®¬ ­¤  = ¤ «м­Ё© RET
THEN
IF OperandSize = 16
THEN ваҐвмҐ б«®ў® ў б⥪Ґ ¤®«¦­® ­ е®¤Ёвмбп ў Ја ­Ёж е б⥪ 
Ё­ зҐ #SS(0);
ELSE ўв®а®Ґ б«®ў® ў б⥪Ґ ¤®«¦­® ­ е®¤Ёвмбп ў Ја ­Ёж е б⥪ 
Ё­ зҐ #SS(0);
FI;
RPL ᥫҐЄв®а  ў®§ўа в  ¤®«¦Ґ­ Ўлвм >= CPL
ELSE #GP(ᥫҐЄв®а ў®§ўа в );
IF RPL ᥫҐЄв®а  ў®§ўа в  = CPL
THEN GOTO ’Ћ’-†…-“ђЋ‚…Ќњ;
ELSE GOTO ‚Ќ…Ќ€‰-“ђЋ‚…Ќњ-Џђ€‚€‹…ѓ€ђЋ‚ЂЌЌЋ‘’€;
FI;
FI;


’Ћ’-†…-“ђЋ‚…Ќњ:
‘Ґ«ҐЄв®а ў®§ўа в  ¤®«¦Ґ­ Ўлвм ­Ґ-Їгбвл¬ ELSE #GP(0)
€­¤ҐЄб ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е ҐЈ® в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў,
ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ § ¤ ў вм Є®¤®ўл© ᥣ¬Ґ­в,
ELSE #GP(ᥫҐЄв®а);
IF ­Ґ-Є®­д®а¬­л©
THEN DPL Є®¤®ў®Ј® ᥣ¬Ґ­в  ¤®«¦Ґ­ Ўлвм а ўҐ­ CPL;
ELSE #GP(ᥫҐЄв®а);
FI;
IF Є®­д®а¬­л©
THEN DPL Є®¤®ў®Ј® ᥣ¬Ґ­в  ¤®«¦Ґ­ Ўлвм <= CPL;
ELSE #GP(ᥫҐЄв®а);
FI;
Љ®¤®ўл© ᥣ¬Ґ­в ¤®«¦Ґ­ ЏаЁбгвбвў®ў вм ELSE #NP(ᥫҐЄв®а);
‚Ґае­ҐҐ б«®ў® ў б⥪Ґ ¤®«¦­® Ўлвм ў Ја ­Ёж е б⥪  ELSE #SS(0);
IP ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е Є®¤®ў®Ј® ᥣ¬Ґ­в  ELSE #GP(0);
IF OperandSize = 32
THEN
‡ Јаг§Є  CS:EIP Ё§ б⥪ 
‡ Јаг§Є  ॣЁбва  CS ¤ҐбЄаЁЇв®а®¬
€­ЄаҐ¬Ґ­в eSP ­  4 Ї«об ­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ ᬥ饭Ёп,
Ґб«Ё ®­® бгйҐбвўгҐв
FI;


‚Ќ…Ќ€‰-“ђЋ‚…Ќњ-Џђ€‚€‹…ѓ€ђЋ‚ЂЌЌЋ‘’€:
IF OperandSize = 32
THEN ‚Ґае­ЁҐ (16+­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ) Ў ©в®ў ў б⥪Ґ
¤®«¦­л Ўлвм ў ЇаҐ¤Ґ« е Ја ­Ёж б⥪ , Ё­ зҐ #SS(0);
ELSE ‚Ґае­ЁҐ (8+­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ) Ў ©в®ў ў б⥪Ґ
¤®«¦­л Ўлвм ў ЇаҐ¤Ґ« е Ја ­Ёж б⥪ , Ё­ зҐ #SS(0);
FI;
ђ бᬮваЁ¬ ᥫҐЄв®а CS ў®§ўа в  Ё бўп§ ­­л© б ­Ё¬ ¤ҐбЄаЁЇв®а:
‘Ґ«ҐЄв®а ¤®«¦Ґ­ Ўлвм ­Ґ-Їгбвл¬, Ё­ зҐ #GP(0);
€­¤ҐЄб ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е ҐЈ® в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў,
ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ § ¤ ў вм Є®¤®ўл© ᥣ¬Ґ­в,
ELSE #GP(ᥫҐЄв®а);
IF ­Ґ-Є®­д®а¬­л©
THEN DPL Є®¤®ў®Ј® ᥣ¬Ґ­в  ¤®«¦Ґ­ Ўлвм = RPL ᥫҐЄв®а 
ў®§ўа в ; ELSE #GP(ᥫҐЄв®а);
FI;
IF Є®­д®а¬­л©
THEN DPL Є®¤®ў®Ј® ᥣ¬Ґ­в  ¤®«¦Ґ­ Ўлвм <= RPL ᥫҐЄв®а 
ў®§ўа в , ELSE #GP(ᥫҐЄв®а);
FI;
‘ҐЈ¬Ґ­в ¤®«¦Ґ­ ЇаЁбгвбвў®ў вм, Ё­ зҐ #NP(ᥫҐЄв®а);

ђ бᬮваЁ¬ ᥫҐЄв®а SS ў®§ўа в  Ё бўп§ ­­л© б ­Ё¬ ¤ҐбЄаЁЇв®а:
‘Ґ«ҐЄв®а ¤®«¦Ґ­ Ўлвм ­Ґ-Їгбвл¬, Ё­ зҐ #GP(0);
€­¤ҐЄб ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е ҐЈ® в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў,
ELSE #GP(ᥫҐЄв®а);
RPL ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм а ўҐ­ RPL ᥫҐЄв®а  CS ў®§ўа в 
ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ § ¤ ў вм ᥣ¬Ґ­в ¤ ­­ле, ¤®бвгЇ­л©
¤«п § ЇЁбЁ, ELSE #GP(ᥫҐЄв®а);
DPL ¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ Ўлвм = RPL ᥫҐЄв®а  CS ў®§ўа в ;
ELSE #GP(ᥫҐЄв®а);
‘ҐЈ¬Ґ­в ¤®«¦Ґ­ ЇаЁбгвбвў®ў вм, Ё­ зҐ #NP(ᥫҐЄв®а);
“Є § вҐ«м Є®¬ ­¤ ¤®«¦Ґ­ Ўлвм ў ЇаҐ¤Ґ« е Ја ­Ёж Є®¤®ў®Ј® ᥣ¬Ґ­в ,
ELSE #GP(0);
“бв ­®ўЄ  CPL а ў­л¬ RPL ᥫҐЄв®а  CS ў®§ўа в ;
IF OperandMode = 32
THEN
‡ Јаг§Є  CS:EIP Ё§ б⥪ ;
“бв ­®ўЄ  RPL CS а ў­л¬ CPL;
€­ЄаҐ¬Ґ­в eSP ­  8 Ї«об ­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ ᬥ饭Ёп,
Ґб«Ё ®­® бгйҐбвўгҐв;
‡ Јаг§Є  SS:eSP Ё§ б⥪ ;
ELSE (* OperandMode *)
‡ Јаг§Є  CS:IP Ё§ б⥪ ;
“бв ­®ўЄ  RPL CS а ў­л¬ CPL;
€­ЄаҐ¬Ґ­в eSP ­  4 Ї«об ­ҐЇ®б।б⢥­­®Ґ §­ зҐ­ЁҐ ᬥ饭Ёп,
Ґб«Ё ®­® бгйҐбвўгҐв;
‡ Јаг§Є  SS:eSP Ё§ б⥪ ;
FI;
‡ Јаг§Є  ॣЁбва  CS ¤ҐбЄаЁЇв®а®¬ CS ў®§ўа в ;
‡ Јаг§Є  ॣЁбва  SS ¤ҐбЄаЁЇв®а®¬ SS ў®§ўа в ;
FOR Є ¦¤®Ј® Ё§ ES, FS, GS Ё DS
DO;
IF ⥪г饥 §­ зҐ­ЁҐ ॣЁбва  ­Ґ¤®бв®ўҐа­® ¤«п ў­Ґи­ҐЈ®
га®ў­п, ॣЁбва гбв ­ ў«Ёў Ґвбп Їгбвл¬
(ᥫҐЄв®а <- AR <- 0);
—в®Ўл Ўлвм ¤®бв®ўҐа­л¬, гбв ­®ўЄ  ॣЁбва  ¤®«¦­ 
㤮ў«Ґвў®апвм б«Ґ¤гойЁ¬ бў®©бвў ¬:
€­¤ҐЄб ᥫҐЄв®а  ¤®«¦Ґ­ Ўлвм ў Ја ­Ёж е ҐЈ® в Ў«Ёжл
¤ҐбЄаЁЇв®а®ў;
Ѓ ©в AR ¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ § ¤ ў вм ᥣ¬Ґ­в ¤ ­­ле Ё«Ё
Є®¤®ўл© ᥣ¬Ґ­в, ¤®бвгЇ­л© ¤«п з⥭Ёп;
IF н⮠ᥣ¬Ґ­в ¤ ­­ле Ё«Ё ­Ґ-Є®­д®а¬­л© Є®¤®ўл© ᥣ¬Ґ­в,
THEN DPL ¤®«¦Ґ­ Ўлвм >= CPL, Ё«Ё DPL ¤®«¦Ґ­ Ўлвм >= RPL;
FI;
OD;


ЋЇЁб ­ЁҐ
--------

Љ®¬ ­¤  RET ЇҐаҐ¤ Ґв гЇа ў«Ґ­ЁҐ ­   ¤аҐб ў®§ўа в , ­ е®¤пйЁ©бп ў
б⥪Ґ. Ђ¤аҐб ®Ўлз­® Ї®¬Ґй Ґвбп ў б⥪ Є®¬ ­¤®© CALL,   ў®§ўа в
ўлЇ®«­пҐвбп Є Є®¬ ­¤Ґ, а бЇ®«®¦Ґ­­®© Ї®б«Ґ Є®¬ ­¤л CALL.

ЌҐ®Ўп§ вҐ«м­л© зЁб«®ў®© Ї а ¬Ґва Є®¬ ­¤л RET ®ЇаҐ¤Ґ«пҐв зЁб«®
Ў ©в®ў (operandMode = 16) Ё«Ё б«®ў (OperandMode = 32), Є®в®алҐ
¤®«¦­л Ўлвм ®бў®Ў®¦¤Ґ­л Ї®б«Ґ Ё§ў«ҐзҐ­Ёп Ё§ б⥪   ¤аҐб 
ў®§ўа в . ќвЁ н«Ґ¬Ґ­вл ®Ўлз­® ЁбЇ®«м§говбп Є Є ўе®¤­лҐ Ї а ¬Ґвал
ўл§лў Ґ¬®© Їа®жҐ¤гал).

„«п ў­гваЁбҐЈ¬Ґ­в­®Ј® (Ў«Ё¦­ҐЈ®) ў®§ўа в   ¤аҐб ў б⥪Ґ нв®
ᬥ饭ЁҐ ᥣ¬Ґ­в , Ё§ў«ҐЄ Ґ¬®Ґ Ё§ б⥪  Ё Ї®¬Ґй Ґ¬®Ґ ў гЄ § вҐ«м
Є®¬ ­¤. ђҐЈЁбва CS ­Ґ Ё§¬Ґ­пҐвбп. „«п ¬Ґ¦бҐЈ¬Ґ­в­®Ј® (¤ «м­ҐЈ®)
ў®§ўа в   ¤аҐб ў б⥪Ґ нв® ¤«Ё­­л© гЄ § вҐ«м. ‘­ з «  Ё§ б⥪ 
Ё§ў«ҐЄ Ґвбп ᬥ饭ЁҐ,   §  ­Ё¬ ᥫҐЄв®а.

‚ ॠ«м­®¬ ०Ё¬Ґ ॣЁбвал CS Ё IP § Јаг¦ овбп Їаאַ. ‚
§ йЁйҐ­­®¬ ०Ё¬Ґ ¬Ґ¦бҐЈ¬Ґ­в­л© ў®§ўа в § бв ў«пҐв Їа®жҐбб®а
Їа®ўҐаЁвм ¤ҐбЄаЁЇв®а,  ¤аҐбгҐ¬л© бҐ«ҐЄв®а®¬ ў®§ўа в . Ѓ ©в AR
¤ҐбЄаЁЇв®а  ¤®«¦Ґ­ ®Ў®§­ з вм Є®¤®ўл© ᥣ¬Ґ­в, а ў­л© Ё«Ё ¬Ґ­ҐҐ
ЇаЁўЁ«ҐЈЁа®ў ­­л© (б Ў®«миЁ¬ Ё«Ё а ў­л¬ зЁб«®ўл¬ ­®¬Ґа®¬ га®ў­п
ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ), ­Ґ¦Ґ«Ё ⥪гйЁ© га®ўҐ­м
ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ. ‚®§ўа в ­  ¬Ґ­миЁ© га®ўҐ­м
ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ ўл§лў Ґв ЇҐаҐ§ Јаг§Єг б⥪  Ё§ §­ зҐ­Ёп,
§ ЇЁб ­­®Ј® Ї®б«Ґ Ў«®Є  Ї а ¬Ґва®ў.

‚® ўаҐ¬п ¬Ґ¦-га®ў­Ґў®© ЇҐаҐ¤ зЁ гЇа ў«Ґ­Ёп Є®¬ ­¤  RET ¬®¦Ґв
®зЁбвЁвм ॣЁбвал DS, ES, FS Ё GS. …б«Ё н⨠ॣЁбвал ®в­®бпвбп Є
ᥣ¬Ґ­в ¬, Є®в®алҐ ­Ґ ¬®Јгв Ўлвм ЁбЇ®«м§®ў ­л ­  ­®ў®¬ га®ў­Ґ
ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ, ®­Ё ®зЁй овбп, зв®Ўл ЇаҐ¤гЇаҐ¤Ёвм
­Ґа §аҐиҐ­­л© ¤®бвгЇ б ­®ў®Ј® га®ў­п ЇаЁўЁ«ҐЈЁа®ў ­­®бвЁ.


€§¬Ґ­пҐ¬лҐ д« ЈЁ
----------------

Ћвбгвбвўгов

€бЄ«о祭Ёп § йЁйҐ­­®Ј® ०Ё¬ 
----------------------------------

#GP, #NP Ё«Ё #SS, Є Є гЄ § ­® ўлиҐ ў а §¤Ґ«Ґ "ђ Ў®в  Є®¬ ­¤л"; #
PF(Є®¤ бЎ®п) ў б«гз Ґ бва ­Ёз­®Ј® бЎ®п;


€бЄ«о祭Ёп ०Ё¬  ॠ«м­ле  ¤аҐб®ў
---------------------------------------

ЏаҐалў ­ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм Ё§ў«ҐЄ Ґ¬®Ј® Ё§ б⥪ 
®ЇҐа ­¤  «Ґ¦Ёв §   ¤аҐб®¬ 0FFFFH.

€бЄ«о祭Ёп ўЁавг «м­®Ј® ०Ё¬  8086
----------------------------------------

’Ґ ¦Ґ ЁбЄ«о祭Ёп, зв® Ё ¤«п ०Ё¬  ॠ«м­ле  ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва ­Ёз­ле бЎ®Ґў.

-----------------------------------------------------------------
Соседние файлы в папке I486