Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Микропроцессор 486 / I486 / CH26-11
.TXTPOP - €§ў«ҐзҐЁҐ б«®ў Ё§ б⥪
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|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