Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Микропроцессор 486 / I486 / CH26-09
.TXTLEA - ‡ Јаг§Є ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|8D /r LEA r16,m 1 ‡ ЇЁб вм ЁбЇ®«ЁвҐ«мл© ¤аҐб|
| ¤«п m ў ॣЁбва r16 |
|8D /r LEA r32,m 1 ‡ ЇЁб вм ЁбЇ®«ЁвҐ«мл© ¤аҐб|
| ¤«п m ў ॣЁбва r32 |
|8D /r LEA r16,m 1 ‡ ЇЁб вм ЁбЇ®«ЁвҐ«мл© ¤аҐб|
| ¤«п m ў ॣЁбва r16 |
|8D /r LEA r32,m 1 ‡ ЇЁб вм ЁбЇ®«ЁвҐ«мл© ¤аҐб|
| ¤«п m ў ॣЁбва r32 |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
IF OperandSize = 16 AND AddressSize = 16
THEN r16 <- Addr(m);
ELSE
IF OperandSize = 16 AND AddressSize = 32
THEN
r16 <- “бҐзҐЁҐ_¤®_16_ЎЁв®ў(Addr(m)); (* 32-а §ап¤л© ¤аҐб *)
ELSE
IF OperandSize = 32 AND AddressSize = 16
THEN
r32 <- “бҐзҐЁҐ_¤®_16_ЎЁв®ў(Addr(m));
ELSE
IF OperandSize = 32 AND AddressSize = 32
THEN r32 <- Addr(m);
FI:
FI;
FI;
FI;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LEA ўлзЁб«пҐв ЁбЇ®«ЁвҐ«мл© ¤аҐб (з бвм ҐЈ®,
®ЇаҐ¤Ґ«пойго ᬥ饨Ґ) Ё § ЇЁблў Ґв ҐЈ® ў § ¤ л© аҐЈЁбва.
ЂваЁЎгв а §¬Ґа ®ЇҐа ¤ Є®¬ ¤л (ЇаҐ¤бв ў«Ґл© ў ®ЇЁб ЁЁ
а Ў®вл Є®¬ ¤л ўлиҐ Ё¬ҐҐ¬ OperandSize) ®ЇаҐ¤Ґ«пҐвбп ўлЎа л¬
ॣЁбв஬. ЂваЁЎгв а §¬Ґа ¤аҐб (ЇаҐ¤бв ў«Ґл© Ё¬ҐҐ¬
AddressSize) ®ЇаҐ¤Ґ«пҐвбп ваЁЎг⮬ USE ᥣ¬Ґв , ᮤҐа¦ 饣®
ўв®а®© ®ЇҐа ¤. ЂваЁЎгвЁл а §¬Ґа ¤аҐб Ё а §¬Ґа ®ЇҐа ¤
ў«Ёпов ¤Ґ©бвўЁҐ, ўлЇ®«пҐ¬лҐ Є®¬ ¤®© LEA, б«Ґ¤гойЁ¬ ®Ўа §®¬:
-----------------------------------------------------------------
ђ §¬Ґа ®ЇҐа ¤ ђ §¬Ґа ¤аҐб ‚лЇ®«пҐ¬®Ґ ¤Ґ©бвўЁҐ
-----------------------------------------------------------------
16 16 ‚лзЁб«пҐвбп 16-а §ап¤л© ЁбЇ®«ЁвҐ«м-
л© ¤аҐб Ё § ЇЁблў Ґвбп ў § Їа®иҐ-
л© 16-а §ап¤л© ॣЁбва § 票п.
16 32 ‚лзЁб«пҐвбп 32-а §ап¤л© ЁбЇ®«ЁвҐ«м-
л© ¤аҐб. Њ« ¤иЁҐ 16 ЎЁв®ў ¤аҐб
§ ЇЁблў овбп ў § Їа®иҐл© 16-а §-
ап¤л© ॣЁбва § 票п.
32 16 ‚лзЁб«пҐвбп 16-а §ап¤л© ЁбЇ®«ЁвҐ«м-
л© ¤аҐб. 16-а §ап¤л© ¤аҐб а биЁ-
апҐвбп г«Ґ¬ Ё § ЇЁблў Ґвбп ў § Ї-
а®иҐл© 32-а §ап¤л© ॣЁбва § -
票п.
32 32 ‚лзЁб«пҐвбп 32-а §ап¤л© ЁбЇ®«ЁвҐ«м-
л© ¤аҐб Ё § ЇЁблў Ґвбп ў § Їа®иҐ-
л© 32-а §ап¤л© ॣЁбва § 票п.
-----------------------------------------------------------------
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#UD, Ґб«Ё ўв®а®© ®ЇҐа ¤ пў«пҐвбп ॣЁбв஬.
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 6, Ґб«Ё ўв®а®© ®ЇҐа ¤ пў«пҐвбп ॣЁбв஬.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў.
-----------------------------------------------------------------
LEAVE - ‚л室 Ё§ Їа®жҐ¤гал ўлб®Є®Ј® га®ўп
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|C9 LEAVE 5 “бв ®ўЁвм SP ў BP Ё § ⥬ |
| Ё§ў«Ґзм BP Ё§ б⥪ |
|C9 LEAVE 5 “бв ®ўЁвм ESP ў EBP Ё § ⥬ |
| Ё§ў«Ґзм EBP Ё§ б⥪ |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
IF StackAddrSize = 16
THEN
SP <- BP;
ELSE (* StackAddrSize = 32 *)
ESP <- EBP;
FI;
IF OperandSize = 16
THEN
BP <- Pop();
ELSE (* OperandSize = 32 *)
EBP <- Pop();
FI;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LEAVE Ё¬ҐҐв ¤Ґ©бвўЁҐ, Їа®вЁў®Ї®«®¦®Ґ Є®¬ ¤Ґ ENTER.
Љ®ЇЁагп гЄ § вҐ«м Є ¤а ў гЄ § ⥫м б⥪ , Є®¬ ¤ LEAVE
®бў®Ў®¦¤ Ґв ®Ў« бвм б⥪ , ЁбЇ®«м§гҐ¬го Їа®жҐ¤га®© ¤«п бў®Ёе
«®Є «мле ЇҐаҐ¬Ґле. ‘в ал© гЄ § вҐ«м Є ¤а Ё§ў«ҐЄ Ґвбп Ё§
б⥪ ў ॣЁбва BP Ё«Ё EBP, ў®ббв ў«Ёў п Є ¤а б⥪ ўл§лў о饩
Їа®жҐ¤гал. Џ®б«Ґ¤гой п Є®¬ ¤ RET nn г¤ «пҐв «оЎлҐ аЈг¬Ґвл,
Ї®¬ҐйҐлҐ ў б⥪ ЇаЁ ўе®¤Ґ ў Їа®жҐ¤гаг.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#SS(0), Ґб«Ё ॣЁбва BP Ґ гЄ §лў Ґв ¤аҐб Ї ¬пвЁ ў Ја Ёж е
⥪г饣® ᥣ¬Ґв б⥪ .
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм Ё§ў«ҐЄ Ґ¬®Ј® Ё§ б⥪
®ЇҐа ¤ «Ґ¦Ёв § ¤аҐб®¬ 0FFFFH.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў.
-----------------------------------------------------------------
LGDT/LIDT - ‡ Јаг§Є ॣЁбва в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў
Ј«®Ў «м®©/ЇаҐалў Ё©
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|0F 01 /2 LGDT m16&32 11 ‡ Јаг§Є m ў GDTR |
|0F 01 /3 LIDT m16&32 11 ‡ Јаг§Є m ў IDTR |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
IF Є®¬ ¤ = LIDT
THEN
If OperandSize = 16
THEN IDTR.Ја Ёж :Ў § <- m16:24 (* ‡ Јаг¦ Ґвбп 24 ЎЁв Ў §л *)
ELSE IDTR.Ја Ёж :Ў §ў <- m16:32
FI;
ELSE (* Љ®¬ ¤ = LGDT *)
If OperandSize = 16
THEN GDTR.Ја Ёж :Ў § <- m16:24 (* ‡ Јаг¦ Ґвбп 24 ЎЁв Ў §л *)
ELSE GDTR.Ја Ёж :Ў §ў <- m16:32
FI;
FI;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤л LGDT Ё LIDT § Јаг¦ ов § зҐЁп «ЁҐ©®Ј® Ў §®ў®Ј® ¤аҐб
Ё Ја Ёжл Ё§ иҐбвЁ-Ў ©в®ў®Ј® ®ЇҐа ¤ ¤ ле ў Ї ¬пвЁ ў ॣЁбвал
GDTR Ё IDTR, ᮮ⢥вб⢥®. …б«Ё б Є®¬ ¤®© LGDT Ё«Ё LIDT
ЁбЇ®«м§гҐвбп 16-а §ап¤л© ®ЇҐа ¤, ⮠ॣЁбва § Јаг¦ Ґвбп
16-а §а冷© Ја ЁжҐ© Ё 24-а §а冷© Ў §®©, бв аиЁҐ ў®бҐ¬м
ЎЁв®ў иҐбвЁ-Ў ©в®ў®Ј® ®ЇҐа ¤ ¤ ле Ґ ЁбЇ®«м§говбп. …б«Ё
ЁбЇ®«м§гҐвбп 32-а §ап¤л© ®ЇҐа ¤, в® § Јаг¦ овбп 16-а §ап¤ п
Ја Ёж Ё 32-а §ап¤ п Ў § ; бв аиЁҐ ў®бҐ¬м ЎЁв®ў
иҐбвЁ-Ў ©в®ў®Ј® ®ЇҐа ¤ ЁбЇ®«м§говбп Є Є бв аиЁҐ ¤аҐблҐ ЎЁвл
Ў §л.
Љ®¬ ¤л SGDT Ё SIDT ўбҐЈ¤ ўлЇ®«Ґпов § ЇЁбм ў® ўбҐ 48 ЎЁв®ў
иҐбвЁ-Ў ©в®Ј® ®ЇҐа ¤ ¤ ле. ‚ б«гз Ґ Їа®жҐбб®а 80286
Ї®б«Ґ ўлЇ®«ҐЁп Є®¬ ¤ SGDT Ё SIDT бв аиЁҐ ў®бҐ¬м ЎЁв®ў
Ґ®ЇаҐ¤Ґ«Ґл. ‚ б«гз Ґ Їа®жҐбб®а®ў 386 DX Ё«Ё i486 бв аиЁҐ
ў®бҐ¬м ЎЁв®ў Ї®¬Ґй овбп ў ў®бм¬Ё бв аиЁе ¤аҐбле ЎЁв е, Є Є ¤«п
16-а §ап¤ле, в Є Ё ¤«п 32-а §ап¤ле ®ЇҐа ¤®ў. …б«Ё Є®¬ ¤
LGDT Ё«Ё LIDT ЁбЇ®«м§гҐвбп б 16-а §ап¤л¬ ®ЇҐа ¤®¬ ¤«п § Јаг§ЄЁ
ॣЁбва , § ЇЁб ®Ј® Є®¬ ¤ ¬Ё SGDT Ё«Ё SIDT, в® бв аиЁҐ ў®бҐ¬м
ЎЁв®ў еа пвбп ў ўЁ¤Ґ г«Ґ©.
Љ®¬ ¤л LGDT Ё LIDT ЁбЇ®«м§говбп ў бЁб⥬®¬ Їа®Ја ¬¬®¬
®ЎҐбЇҐзҐЁЁ; ЇаЁЄ« ¤л¬ Їа®Ја ¬¬ ¬ ®Ё Ґ г¦л. ќв®
Ґ¤ЁбвўҐлҐ Є®¬ ¤л, Їап¬го § Јаг¦ ойЁҐ «ЁҐ©л© ¤аҐб ( Ґ
¤аҐб ®в®бЁвҐ«м® ᥣ¬Ґв ) ў § йЁйҐ®¬ ०Ё¬Ґ.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0), Ґб«Ё ⥪гйЁ© га®ўҐм ЇаЁўЁ«ҐЈЁа®ў ®бвЁ Ґ а ўҐ 0;
#UD, Ґб«Ё Ёбе®¤л© ®ЇҐа ¤ пў«пҐвбп ॣЁбв஬; #GP(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤ Ї ¬пвЁ ў ᥣ¬Ґв е
CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў
ᥣ¬ҐвҐ SS; #PF(Є®¤ бЎ®п) ў б«гз Ґ бва Ёз®Ј® бЎ®п;
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ¤ «Ґ¦Ёв ўҐ
Їа®бва бвў ЁбЇ®«ЁвҐ«мле ¤аҐб®ў ®в 0 ¤® 0FFFFH. ЏаҐалў ЁҐ
6, Ґб«Ё Ёбе®¤л© ®ЇҐа ¤ пў«пҐвбп ॣЁбв஬;
ЏаЁ¬Ґз ЁҐ: ќвЁ Є®¬ ¤л ¤®ЇгбвЁ¬л ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў,
зв®Ўл Ї®§ў®«Ёвм ЁЁжЁ «Ё§ жЁо ЇаЁ ўЄ«о票Ё ЇЁв Ёп ¤«п
§ йЁйҐ®Ј® ०Ё¬ .
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ¤«п ०Ё¬ ॠ«мле ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва Ёзле бЎ®Ґў.
-----------------------------------------------------------------
LGS/LSS/LDS/LES/LFS - ‡ Јаг§Є Ї®«®Ј® гЄ § ⥫п
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|C5 /r LDS r16,m16:16 6/12 ‡ Јаг§Є ў DS:r16 гЄ § ⥫п |
| Ї ¬пвЁ |
|C5 /r LDS r32,m16:32 6/12 ‡ Јаг§Є ў DS:r32 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B2 /r LSS r16,m16:16 6/12 ‡ Јаг§Є ў SS:r16 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B2 /r LSS r32,m16:32 6/12 ‡ Јаг§Є ў SS:r32 гЄ § ⥫п |
| Ї ¬пвЁ |
|C4 /r LES r16,m16:16 6/12 ‡ Јаг§Є ў ES:r16 гЄ § ⥫п |
| Ї ¬пвЁ |
|C4 /r LES r32,m16:32 6/12 ‡ Јаг§Є ў ES:r32 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B4 /r LFS r16,m16:16 6/12 ‡ Јаг§Є ў FS:r16 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B4 /r LFS r32,m16:32 6/12 ‡ Јаг§Є ў FS:r32 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B5 /r LGS r16,m16:16 6/12 ‡ Јаг§Є ў GS:r16 гЄ § ⥫п |
| Ї ¬пвЁ |
|0F B5 /r LGS r32,m16:32 6/12 ‡ Јаг§Є ў GS:r32 гЄ § ⥫п |
| Ї ¬пвЁ |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
CASE Є®¬ ¤ OF
LSS: Sreg нв® SS; (* ‡ Јаг§Ёвм ॣЁбва SS *)
LDS: Sreg нв® DS; (* ‡ Јаг§Ёвм ॣЁбва SD *)
LES: Sreg нв® ES; (* ‡ Јаг§Ёвм ॣЁбва ES *)
LFS: Sreg нв® FS; (* ‡ Јаг§Ёвм ॣЁбва FS *)
LGS: Sreg нв® GS; (* ‡ Јаг§Ёвм ॣЁбва GS *)
ESAC;
IF (OperandSize = 16)
THEN
r16 <- [€бЇ®«ЁвҐ«мл© ¤аҐб]; (* 16-а §ап¤ п ЇҐаҐбл«Є *)
Sreg <- [€бЇ®«ЁвҐ«мл© ¤аҐб + 2]; (* 16-а §ап¤ п ЇҐаҐбл¤Є *)
(* ‚ § йЁйҐ®¬ ०Ё¬Ґ нв® § Јаг§Є ¤ҐбЄаЁЇв®а ў ᥣ¬Ґвл©
ॣЁбва *)
ELSE (* OperandSize = 32 *)
r32 <- [€бЇ®«ЁвҐ«мл© ¤аҐб]; (* 32-а §ап¤ п ЇҐаҐбл«Є *)
Sreg <- [€бЇ®«ЁвҐ«мл© ¤аҐб + 4]; (* 16-а §ап¤ п ЇҐаҐбл¤Є *)
(* ‚ § йЁйҐ®¬ ०Ё¬Ґ нв® § Јаг§Є ¤ҐбЄаЁЇв®а ў ᥣ¬Ґвл©
ॣЁбва *)
FI;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤л LGS, LSS, LDS, LES Ё LFS зЁв ов Ё§ Ї ¬пвЁ Ї®«л©
гЄ § вҐ«м Ё § ЇЁблў ов ҐЈ® ў ўлЎа го Ї аг ᥣ¬Ґвл©
ॣЁбва:ॣЁбва. Џ®«л© гЄ § вҐ«м § Јаг¦ Ґв 16 ЎЁв®ў ў
ᥣ¬Ґвл© аҐЈЁбва SS, DS, ES, FS Ё«Ё GS. „агЈ®© ॣЁбва
§ Јаг¦ Ґв 32 ЎЁв , Ґб«Ё ваЁЎгв а §¬Ґа ®ЇҐа ¤ а ўҐ 32 ЎЁв ,
Ё«Ё 16 ЎЁв®ў, Ґб«Ё нв®в ваЁЎгв а ўҐ 16. ќв®в § Јаг¦ Ґ¬л© 16-
Ё«Ё 32-а §ап¤л© ॣЁбва ®ЇаҐ¤Ґ«пҐвбп § ¤ л¬ ®ЇҐа ¤®¬ r16 Ё«Ё
r32.
Љ®Ј¤ ®¤®¬г Ё§ ᥣ¬Ґвле ॣЁбва®ў ᤥ« ® § 票Ґ, ў
ᥣ¬Ґвл© аҐЈЁбва в Є¦Ґ § Јаг¦ Ґвбп ¤ҐбЄаЁЇв®а. „ лҐ ¤«п
нв®Ј® ॣЁбва ЎҐагвбп Ё§ н«Ґ¬Ґв ¤ҐбЄаЁЇв®а®© в Ў«Ёжл,
ᮮ⢥вбвўго饣® ўлЎа ®¬г ᥫҐЄв®аг.
‚ ॣЁбвал DS, ES, FS Ё«Ё GS ¬®¦Ґв Ўлвм § Ја㦥 Їгбв®© ᥫҐЄв®а
(§ 票п 0000 - 0003), Ґ ўл§лў п ЁбЄ«озҐЁп § йЁвл.
(‹оЎлҐ Ї®б«Ґ¤гойЁҐ ббл«ЄЁ ᥣ¬Ґв, ᮮ⢥вбвўгойЁ© ᥣ¬Ґвл©
ॣЁбва Є®в®а®Ј® § Ја㦥 Їгбвл¬ бҐ«ҐЄв®а®¬, ¤«п ¤аҐб жЁЁ
Ї ¬пвЁ ўл§®ўгв ®б®Ўго бЁвг жЁо #GP(0). ‘бл«Є Є Ї ¬пвЁ ¤«п
в Є®Ј® ᥣ¬Ґв д ЄвЁзҐбЄЁ Ґ Їа®Ёб室Ёв).
ЌЁ¦Ґ ЇаЁў®¤Ёвбп «ЁбвЁЈ Їа®ўҐа®Є Ё ¤Ґ©бвўЁ© ў § йЁйҐ®¬ ०Ё¬Ґ,
ўлЇ®«пҐ¬ле ЇаЁ § Јаг§ЄҐ ᥣ¬Ґв®Ј® ॣЁбва :
IF § Јаг¦ Ґвбп SS:
IF ᥫҐЄв®а Їгбв®© THEN #GP(0); FI;
€¤ҐЄб ᥫҐЄв®а ¤®«¦Ґ Ўлвм ў Ја Ёж е ҐЈ® ¤ҐбЄаЁЇв®а®©
в Ў«Ёжл ELSE #GP(ᥫҐЄв®а);
RPL ᥫҐЄв®а ¤®«¦Ґ Ўлвм а ўҐ CPL ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤®«¦Ґ ®Ў®§ з вм ᥣ¬Ґв ¤ ле, ¤®бвгЇл© ¤«п § ЇЁбЁ
ELSE #GP(ᥫҐЄв®а);
DPL ў Ў ©вҐ AR ¤®«¦Ґ Ўлвм а ўҐ CPL ELSE #GP(ᥫҐЄв®а);
‘ҐЈ¬Ґв ¤®«¦Ґ Ўлвм Ї®¬ҐзҐ Є Є ЏаЁбгвбвўгойЁ© ELSE
#SS(ᥫҐЄв®а);
‡ Јаг§Є SS ᥫҐЄв®а®¬;
‡ Јаг§Є SS ¤ҐбЄаЁЇв®а®¬;
IF DS, ES, FS Ё«Ё GS § Ја㦥 Ґ-Їгбвл¬ бҐ«ҐЄв®а®¬:
€¤ҐЄб ᥫҐЄв®а ¤®«¦Ґ Ўлвм ў Ја Ёж е ҐЈ® ¤ҐбЄаЁЇв®а®©
в Ў«Ёжл ELSE #GP(ᥫҐЄв®а);
Ѓ ©в AR ¤®«¦Ґ ®Ў®§ з вм ᥣ¬Ґв ¤ ле Ё«Ё Є®¤ , ¤®бвгЇл©
¤«п з⥨п ELSE #GP(ᥫҐЄв®а);
IF ᥣ¬Ґв ¤ ле Ё«Ё Ґ-Є®д®а¬л© Є®¤®ўл© ᥣ¬Ґв
THEN Ё RPL, Ё CPL ¤®«¦л Ўлвм ¬ҐмиҐ Ё«Ё а ўл DPL Ў ©в AR;
ELSE #GP(ᥫҐЄв®а);
‘ҐЈ¬Ґв ¤®«¦Ґ Ўлвм Ї®¬ҐзҐ Є Є ЏаЁбгвбвўгойЁ© ELSE
#NP(ᥫҐЄв®а);
‡ Јаг§Є ᥣ¬Ґв®Ј® ॣЁбва ᥫҐЄв®а®¬ Ё ЎЁв ¬Ё RPL;
‡ Јаг§Є ᥣ¬Ґв®Ј® ॣЁбва ¤ҐбЄаЁЇв®а®¬;
IF DS, ES, FS Ё«Ё GS § Ја㦥 Їгбвл¬ бҐ«ҐЄв®а®¬:
‡ Јаг§Є ᥣ¬Ґв®Ј® ॣЁбва ᥫҐЄв®а®¬;
ЋзЁбвЄ ЎЁв „®бв®ўҐа®бвЁ ў ¤ҐбЄаЁЇв®аҐ;
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤
Ї ¬пвЁ ў ᥣ¬Ґв е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў ᥣ¬ҐвҐ SS; ўв®а®© ®ЇҐа ¤ ¤®«¦Ґ Ўлвм
®ЇҐа ¤®¬ Ї ¬пвЁ, Ґ ॣЁбв஬; #GP(0) ЇаЁ § Јаг§ЄҐ ў SS
Їгбв®Ј® ᥫҐЄв®а ; #PF(Є®¤ бЎ®п) ў б«гз Ґ бва Ёз®Ј® бЎ®п; #AC
¤«п Ґўла ўҐ®© ббл«ЄЁ Є Ї ¬пвЁ ЇаЁ ⥪г饬 га®ўҐ
ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
‚в®а®© ®ЇҐа ¤ ¤®«¦Ґ Ўлвм ®ЇҐа ¤®¬ Ї ¬пвЁ, Ґ ॣЁбв஬;
ЏаҐалў ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ¤ «Ґ¦Ёв ўҐ
Їа®бва бвў ЁбЇ®«ЁвҐ«мле ¤аҐб®ў ®в 0 ¤® 0FFFFH.
ЏаЁ¬Ґз ЁҐ: ќвЁ Є®¬ ¤л ¤®ЇгбвЁ¬л ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў,
зв®Ўл Ї®§ў®«Ёвм ЁЁжЁ «Ё§ жЁо ЇаЁ ўЄ«о票Ё ЇЁв Ёп ¤«п
§ йЁйҐ®Ј® ०Ё¬ .
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ¤«п ०Ё¬ ॠ«мле ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва Ёзле бЎ®Ґў; #AC ¤«п Ґўла ўҐ®© ббл«ЄЁ Є
Ї ¬пвЁ ЇаЁ ⥪г饬 га®ўҐ ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
-----------------------------------------------------------------
LLDT - ‡ Јаг§Є «®Є «м®© в Ў«Ёжл ¤ҐбЄаЁЇв®а®ў
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|0F 00 /2 LLDT r/m16 11/11 ‡ Јаг§Є ᥫҐЄв®а r/m16 |
| ў LDTR |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
LDTR <- SRC;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LLDT § Јаг¦ Ґв ॣЁбва «®Є «м®© ¤ҐбЄаЁЇв®а®© в Ў«Ёжл
(LDTR). ЋЇҐа ¤-б«®ў® (®ЇҐа ¤ Ї ¬пвЁ Ё«Ё ॣЁбва) Є®¬ ¤л LLDT
¤®«¦Ґ ᮤҐа¦ вм ᥫҐЄв®а ў Ј«®Ў «м®© ¤ҐбЄаЁЇв®а®© в Ў«ЁжҐ
(GDT). ќ«Ґ¬Ґв GDT ¤®«¦Ґ ЇаҐ¤бв ў«пвм б®Ў®© «®Є «мго
¤ҐбЄаЁЇв®аго в Ў«Ёжг. ‚ н⮬ б«гз Ґ LDTR § Јаг¦ Ґвбп нвЁ¬
н«Ґ¬Ґв®¬. Ќ ॣЁбвал DS, ES, SS, FS, GS Ё CS Є®¬ ¤ Ґ
ў«ЁпҐв. Џ®«Ґ LDT ў ᥣ¬ҐвҐ б®бв®пЁп § ¤ зЁ Ґ Ё§¬ҐпҐвбп.
ЋЇҐа ¤-ᥫҐЄв®а ¬®¦Ґв Ўлвм а ўҐ 0; ў н⮬ б«гз Ґ LDTR
Ї®¬Ґз Ґвбп Є Є Ґ„®бв®ўҐал©. ‚ᥠббл«ЄЁ Є ¤ҐбЄаЁЇв®аг (§
ЁбЄ«о票Ґ¬ ўлЇ®«пҐ¬ле Є®¬ ¤ ¬Ё LAR, VERR, VERW Ё«Ё LSL)
ўл§лў ов ®б®Ўго бЁвг жЁо #GP.
Љ®¬ ¤ LLDT ЁбЇ®«м§гҐвбп Їа®Ја ¬¬л¬ ®ЎҐбЇҐзҐЁҐ¬ ®ЇҐа жЁ®®©
бЁб⥬л; ЇаЁЄ« ¤лҐ Їа®Ја ¬¬л ҐҐ Ґ ЁбЇ®«м§гов.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0), Ґб«Ё ⥪гйЁ© га®ўҐм ЇаЁўЁ«ҐЈЁа®ў ®бвЁ Ґ а ўҐ 0; #GP
(ᥫҐЄв®а), Ґб«Ё ®ЇҐа ¤-ᥫҐЄв®а Ґ гЄ §лў Ґв Ј«®Ў «мго
¤ҐбЄаЁЇв®аго в Ў«Ёжг, Ё«Ё Ґб«Ё гЄ § л© н«Ґ¬Ґв ў GDT Ґ
пў«пҐвбп «®Є «м®© ¤ҐбЄаЁЇв®а®© в Ў«ЁжҐ© (LDT); #NP(ᥫҐЄв®а),
Ґб«Ё ¤ҐбЄаЁЇв®а LDT Ґ ЏаЁбгвбвўгҐв; #GP(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤ Ї ¬пвЁ ў ᥣ¬Ґв е
CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў
ᥣ¬ҐвҐ SS; #PF(Є®¤ бЎ®п) ў б«гз Ґ бва Ёз®Ј® бЎ®п;
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 6; Є®¬ ¤ LLDT ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў Ґ
а бЇ®§ Ґвбп.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ¤«п ०Ё¬ ॠ«мле ¤аҐб®ў (Ї®бЄ®«мЄг
Є®¬ ¤ Ґ а бЇ®§ Ґвбп, ® Ґ ўлЇ®«пҐвбп Ё Ґ ўҐ¤Ґв Є ббл«ЄҐ
Є Ї ¬пвЁ).
ЏаЁ¬Ґз ЁҐ
----------
ЂваЁЎгв а §¬Ґа ®ЇҐа ¤ нвг Є®¬ ¤г Ґ ў«ЁпҐв.
-----------------------------------------------------------------
LMSW - ‡ Јаг§Є б«®ў б®бв®пЁп ¬ иЁл
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|0F 01 /6 LMSW r/m16 13/13 ‡ Јаг§Є r/m16 ў б«®ў® |
| б®бв®пЁп ¬ иЁл |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
MSW (б«®ў® б®бв®пЁп ¬ иЁл) <- r/m16 (* ў б«®ў® б®бв®пЁп ¬ иЁл
§ ЇЁблў Ґвбп 16 ЎЁв®ў *)
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LMSW § Јаг¦ Ґв б«®ў® б®бв®пЁп ¬ иЁл (з бвм ॣЁбва
CR0) Ё§ Ёб室®Ј® ®ЇҐа ¤ . ќв Є®¬ ¤ ¬®¦Ґв ЁбЇ®«м§®ў вмбп ¤«п
ЇҐаҐЄ«озҐЁп Є § йЁйҐ®¬г ०Ё¬г: ў н⮬ б«гз Ґ § Ё¬ ¤®«¦Ґ
б«Ґ¤®ў вм ўгваЁбҐЈ¬Ґвл© ЇҐаҐе®¤, ®зЁй ойЁ© ®зҐаҐ¤м Є®¬ ¤.
Љ®¬ ¤ LMSW Ґ ўлЇ®«пҐв ®Ўа ⮥ ЇҐаҐЄ«о票Ґ Є ०Ё¬г
ॠ«мле ¤аҐб®ў.
Љ®¬ ¤ LMSW ЁбЇ®«м§гҐвбп в®«мЄ® ў бЁб⥬®¬ Їа®Ја ¬¬®¬
®ЎҐбЇҐзҐЁЁ. ‚ ЇаЁЄ« ¤ле Їа®Ја ¬¬ е ® Ґ ЁбЇ®«м§гҐвбп.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0), Ґб«Ё ⥪гйЁ© га®ўҐм ЇаЁўЁ«ҐЈЁа®ў ®бвЁ Ґ а ўҐ 0; #GP
(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤
Ї ¬пвЁ ў ᥣ¬Ґв е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў ᥣ¬ҐвҐ SS; #PF(Є®¤ бЎ®п) ў б«гз Ґ
бва Ёз®Ј® бЎ®п;
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ¤ «Ґ¦Ёв ўҐ
Їа®бва бвў ЁбЇ®«ЁвҐ«мле ¤аҐб®ў ®в 0 ¤® 0FFFFH.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ¤«п ०Ё¬ ॠ«мле ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва Ёзле бЎ®Ґў.
ЏаЁ¬Ґз ЁҐ
----------
ЂваЁЎгв а §¬Ґа ®ЇҐа ¤ нвг Є®¬ ¤г Ґ ў«ЁпҐв. „ п
Є®¬ ¤ ®ЎҐбЇҐзЁў Ґв б®ў¬ҐбвЁ¬®бвм б Їа®жҐбб®а®¬ 80286;
Їа®Ја ¬¬л ¤«п Їа®жҐбб®а i486 ¤®«¦л ў¬Ґбв® ҐҐ ЁбЇ®«м§®ў вм
Є®¬ ¤г MOV CR0, ... . Љ®¬ ¤ LMSW Ґ ў«ЁпҐв ЎЁвл PG Ё«Ё ET,
Ё ® Ґ ¬®¦Ґв б«г¦Ёвм ¤«п ®зЁбвЄЁ ЎЁв PE.
-----------------------------------------------------------------
LOCK - ЏаҐдЁЄб ў®§Ўг¦¤ҐЁп бЁЈ « LOCK#
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|F0 LOCK 1 ‚®§Ўг¦¤ҐЁҐ бЁЈ « LOCK# |
| ¤«п б«Ґ¤го饩 Є®¬ ¤л |
-----------------------------------------------------------------
ЋЇЁб ЁҐ
--------
ЏаҐдЁЄб LOCK ўл§лў Ґв ў®§Ўг¦¤ҐЁҐ бЁЈ « LOCK# Їа®жҐбб®а i486
ўаҐ¬п ўлЇ®«ҐЁп б«Ґ¤го饩 § Ё¬ Є®¬ ¤л. ‚ б«гз Ґ
¬®Ј®Їа®жҐбб®а®© баҐ¤л ¤ л© бЁЈ « ¬®¦Ґв ®ЎҐбЇҐзЁў вм
ЁбЄ«озЁвҐ«м®Ґ ЁбЇ®«м§®ў ЁҐ Їа®жҐбб®а®¬ i486 «оЎ®© а §¤Ґ«пҐ¬®©
®Ў« бвЁ Ї ¬пвЁ, Ї®Є бЁЈ « LOCK# ў®§Ўг¦¤Ґ. Џ®б«Ґ¤®ў ⥫м®бвм
з⥨п-¬®¤ЁдЁЄ жЁЁ-§ ЇЁбЁ, ®Ўлз® ЁбЇ®«м§гҐ¬ п ¤«п ॠ«Ё§ жЁЁ
®ЇҐа жЁ© вҐбвЁа®ў Ёп-Ё-гбв ®ўЄЁ Їа®жҐбб®а i486, ўЄ«оз Ґв
Є®¬ ¤г BTS.
ЏаҐдЁЄб LOCK а Ў®в Ґв в®«мЄ® ў б®зҐв ЁЁ б® б«Ґ¤гойЁ¬Ё
Є®¬ ¤ ¬Ё:
BTS, BTR, BTC mem, reg/imm
XCHG reg, mem
XCHG mem, reg
ADD, OR, ADC, SBB, AND, SUB, XOR mem, reg/imm
NOT, NEG, INC, DEC mem
ЏаЁ ЁбЇ®«м§®ў ЁЁ ЇаҐдЁЄб LOCK б Є®¬ ¤ ¬Ё, Ґ ўе®¤пйЁ¬Ё ў
ЇаЁўҐ¤Ґл© ўлиҐ ЇҐаҐзҐм, ЈҐҐаЁагҐвбп «®ўгиЄ Ґ®ЇаҐ¤Ґ«Ґ®Ј®
Є®¤ ®ЇҐа жЁЁ.
Љ®¬ ¤ LOCK ўбҐЈ¤ ў®§Ўг¦¤ Ґв бЁЈ « LOCK#, Ґ§ ўЁбЁ¬® ®в
ЇаЁбгвбвўЁп Ё«Ё ®вбгвбвўЁп ЇаҐдЁЄб LOCK.
‚ла ўЁў ЁҐ Ї®«п Ї ¬пвЁ Ґ ў«ЁпҐв 楫®бв®бвм ЇаҐдЁЄб LOCK.
‡ еў в Ї ¬пвЁ Їа®Ёб室Ёв Ё ¤«п Їа®Ё§ў®«мле, Ґўла ўҐле Ї®«Ґ©
Ї ¬пвЁ.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#UD, Ґб«Ё ЇаҐдЁЄб LOCK ЁбЇ®«м§гҐвбп б Є®¬ ¤ ¬Ё, Ґ
ЇҐаҐзЁб«Ґл¬Ё ўлиҐ ў а §¤Ґ«Ґ "ЋЇЁб ЁҐ"; Їа®зЁҐ ЁбЄ«о票п
¬®Јгв ЈҐҐаЁа®ў вмбп Ї®б«Ґ¤гойЁ¬Ё (¬®®Ї®«мл¬Ё, Ё«Ё б § еў в®¬)
Є®¬ ¤ ¬Ё.
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 6, Ґб«Ё ЇаҐдЁЄб LOCK ЁбЇ®«м§гҐвбп б Є®¬ ¤ ¬Ё, Ґ
ЇҐаҐзЁб«Ґл¬Ё ўлиҐ ў а §¤Ґ«Ґ "ЋЇЁб ЁҐ"; Їа®зЁҐ ЁбЄ«о票п
¬®Јгв ЈҐҐаЁа®ў вмбп Ї®б«Ґ¤гойЁ¬Ё (¬®®Ї®«мл¬Ё, Ё«Ё б § еў в®¬)
Є®¬ ¤ ¬Ё.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
#UD, Ґб«Ё ЇаҐдЁЄб LOCK ЁбЇ®«м§гҐвбп б Є®¬ ¤ ¬Ё, Ґ
ЇҐаҐзЁб«Ґл¬Ё ўлиҐ ў а §¤Ґ«Ґ "ЋЇЁб ЁҐ"; Їа®зЁҐ ЁбЄ«о票п
¬®Јгв ЈҐҐаЁа®ў вмбп Ї®б«Ґ¤гойЁ¬Ё (¬®®Ї®«мл¬Ё, Ё«Ё б § еў в®¬)
Є®¬ ¤ ¬Ё.
-----------------------------------------------------------------
LODS/LODSB/LODSW/LODSD - ‡ Јаг§Є бва®Є®ў®Ј® ®ЇҐа ¤
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|AC LODS m8 5 ‡ Јаг§Є Ў ©в |
| [(E)SI] ў AL |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
IF
AddrSize = 16
THEN ЁбЇ®«м§®ў вм SI ¤«п Ё¤ҐЄб -Ёбв®зЁЄ
ELSE (* AddressSize = 32 *)
ЁбЇ®«м§®ў вм ESI ¤«п Ё¤ҐЄб -Ёбв®зЁЄ ;
FI;
IF Є®¬ ¤ Ў ©в®ў®Ј® вЁЇ
THEN
AL <- [Ё¤ҐЄб-Ёбв®зЁЄ ]; (* ‡ Јаг§Є Ў ©в *)
IF DF = 0 THEN IncDec <- 1 ELSE IncDec <- -1; FI;
ELSE
IF OperandSize = 16
THEN
AX <- [Ё¤ҐЄб-Ёбв®зЁЄ ]; (* ‡ Јаг§Є б«®ў *)
IF DF = 0 THEN IncDec <- 2 ELSE IncDec <- -2; FI;
ELSE (* OperandSize = 32 *)
EAX <- [Ё¤ҐЄб-Ёбв®зЁЄ ]; (* ‡ Јаг§Є ¤ў®©®Ј® б«®ў *)
IF DF = 0 THEN IncDec <- 4 ELSE IncDec <- -4; FI;
FI;
FI;
Ё¤ҐЄб-Ёбв®зЁЄ <- Ё¤ҐЄб-Ёбв®зЁЄ + IncDec
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LODS § Јаг¦ Ґв ॣЁбва AL, AX Ё«Ё EAX Ў ©в®¬, б«®ў®¬ Ё«Ё
¤ў®©л¬ б«®ў®¬ Ї ¬пвЁ Ё§ ¤аҐб , Є®в®ал© гЄ §лў ҐЁ ॣЁбва
Ё¤ҐЄб -Ёбв®зЁЄ . Џ®б«Ґ ўлЇ®«ҐЁп ЇҐаҐбл«ЄЁ ॣЁбва
Ё¤ҐЄб -Ёбв®зЁЄ ўв®¬ вЁзҐбЄЁ Їа®¤ўЁЈ Ґвбп. …б«Ё д« Ј DF а ўҐ
0 (Ўл« ўлЇ®«Ґ Є®¬ ¤ CLD), Їа®Ёб室Ёв ЁЄаҐ¬Ґв Ё¤ҐЄб
Ёбв®зЁЄ ; …б«Ё д« Ј DF а ўҐ 1 (Ўл« ўлЇ®«Ґ Є®¬ ¤ STD),
Їа®Ёб室Ёв ¤ҐЄаҐ¬Ґв Ё¤ҐЄб Ёбв®зЁЄ . €ЄаҐ¬Ґв Ё«Ё ¤ҐЄаҐ¬Ґв
ўлЇ®«пҐвбп 1 ЇаЁ § Јаг§ЄҐ Ў ©в , 2 ЇаЁ § Јаг§ЄҐ б«®ў Ё 4
ЇаЁ § Јаг§ЄҐ ¤ў®©®Ј® б«®ў .
…б«Ё ваЁЎгв а §¬Ґа ¤аҐб Є®¬ ¤л а ўҐ 16 ЎЁв ¬, в® ў
Є зҐб⢥ Ё¤ҐЄб -Ёбв®зЁЄ ЁбЇ®«м§гҐвбп ॣЁбва SI; ў Їа®вЁў®¬
б«гз Ґ ваЁЎгв а §¬Ґа ¤аҐб а ўҐ 32 ЎЁв ¬, Ё ЁбЇ®«м§гҐвбп
ॣЁбва ESI. Ђ¤аҐб Ёб室ле ¤ ле ®ЇаҐ¤Ґ«пҐвбп ЁбЄ«озЁвҐ«м®
ᮤҐа¦Ё¬л¬ ॣЁбва SI Ё«Ё ESI. ЏҐаҐ¤ ўлЇ®«ҐЁҐ¬ Є®¬ ¤л LODS ў
ॣЁбва SI ¤®«¦® Ўлвм § Ја㦥® ўҐа®Ґ § 票Ґ Ё¤ҐЄб .
Љ®¬ ¤л LODSB, LODSW Ё LODSD пў«повбп бЁ®Ё¬ ¬Ё Є®¬ ¤л LODS
¤«п а Ў®вл б Ў ©в®¬, б«®ў®¬ Ё ¤ў®©л¬ б«®ў®¬, ᮮ⢥вб⢥®.
Љ®¬ ¤Ґ LODS ¬®¦Ґв ЇаҐ¤иҐбвў®ў вм ЇаҐдЁЄб REP; ®¤ Є®, Є®¬ ¤
LODS з йҐ ЁбЇ®«м§гҐвбп ў Є®бвагЄжЁЁ жЁЄ« LOOP, Ї®бЄ®«мЄг ¤ «ҐҐ
¤®«¦ ®Ўлз® б«Ґ¤®ў вм ®Ўа Ў®вЄ ¤ ле, ЇҐаҐб« ле ў ॣЁбвал
EAX, AX Ё«Ё AL.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤
Ї ¬пвЁ ў ᥣ¬Ґв е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў ᥣ¬ҐвҐ SS; #PF(Є®¤ бЎ®п) ў б«гз Ґ
бва Ёз®Ј® бЎ®п; #AC ¤«п Ґўла ўҐ®© ббл«ЄЁ Є Ї ¬пвЁ ЇаЁ
⥪г饬 га®ўҐ ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 13, Ґб«Ё Є Є п-«ЁЎ® з бвм ®ЇҐа ¤ «Ґ¦Ёв ўҐ
Їа®бва бвў ЁбЇ®«ЁвҐ«мле ¤аҐб®ў ®в 0 ¤® 0FFFFH.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ¤«п ०Ё¬ ॠ«мле ¤аҐб®ў: #PF (Є®¤
бЎ®п) ¤«п бва Ёзле бЎ®Ґў; #AC ¤«п Ґўла ўҐ®© ббл«ЄЁ Є
Ї ¬пвЁ ЇаЁ ⥪г饬 га®ўҐ ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
-----------------------------------------------------------------
LOOP/LOOPгб«®ўЁҐ - “Їа ў«ҐЁҐ жЁЄ«®¬ ЇаЁ Ї®¬®йЁ бзҐвзЁЄ CX
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|E2 cb LOOP rel8 2,6 DEC бзҐвзЁЄ , Є®а®вЄЁ© ЇҐаҐе®¤|
| Ґб«Ё бзҐвзЁЄ <> 0 |
|E1 cb LOOPE rel8 9,6 DEC бзҐвзЁЄ , Є®а®вЄЁ© ЇҐаҐе®¤|
| Ґб«Ё бзҐвзЁЄ <> 0 Ё ZF = 1 |
|E1 cb LOOPZ rel8 9,6 DEC бзҐвзЁЄ , Є®а®вЄЁ© ЇҐаҐе®¤|
| Ґб«Ё бзҐвзЁЄ <> 0 Ё ZF = 1 |
|E0 cb LOOPNE rel8 9,6 DEC бзҐвзЁЄ , Є®а®вЄЁ© ЇҐаҐе®¤|
| Ґб«Ё бзҐвзЁЄ <> 0 Ё ZF = 0 |
|E0 cb LOOPNZ rel8 9,6 DEC бзҐвзЁЄ , Є®а®вЄЁ© ЇҐаҐе®¤|
| Ґб«Ё бзҐвзЁЄ <> 0 Ё ZF = 0 |
-----------------------------------------------------------------
ђ Ў®в Є®¬ ¤л
--------------
IF AddrSize = 16 THEN CountReg нв® CX ELSE CountReg нв® ECX; FI;
CountReg <- CountReg - 1;
IF Є®¬ ¤ <> LOOP
THEN
IF (Є®¬ ¤ = LOOPE) OR (Є®¬ ¤ = LOOPZ)
THEN BranchCond <- (ZF = 1) AND (CountReg <> 0);
FI;
IF (Є®¬ ¤ = LOOPNE) OR (Є®¬ ¤ = LOOPNZ)
THEN BranchCond <- (ZF = 0) AND (CountReg <> 0);
FI;
FI;
IF BranchCond (* “б«®ўЁҐ ЇҐаҐе®¤ *)
THEN
IF OperandSize = 16
THEN
IP <- IP + SignExtend(rel8);
ELSE (* OperandSize = 32 *)
EIP <- EIP + SignExtend(rel8);
FI;
FI;
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LOOP ¤ҐЄаҐ¬ҐвЁагҐв бзҐвл© аҐЈЁбва ЎҐ§ Ё§¬ҐҐЁп «оЎ®Ј®
Ё§ д« Ј®ў. ‡ ⥬ ¤«п ЁбЇ®«м§гҐ¬®© д®а¬л Є®¬ ¤л LOOP Їа®ўҐаповбп
гб«®ўЁп. …б«Ё гб«®ўЁп 㤮ў«Ґвў®аповбп, в® ўлЇ®«пҐвбп Є®а®вЄЁ©
ЇҐаҐе®¤ Є ¬ҐвЄҐ, § ¤ ®© Є Є ®ЇҐа ¤ Є®¬ ¤л LOOP. …б«Ё ваЁЎгв
а §¬Ґа ¤аҐб а ўҐ 16 ЎЁв ¬, в® ў Є зҐб⢥ ॣЁбва -бзҐвзЁЄ
ЁбЇ®«м§гҐвбп ॣЁбва CX; ў Їа®вЁў®¬ б«гз Ґ ЁбЇ®«м§гҐвбп ॣЁбва
ECX. ЋЇҐа ¤ Є®¬ ¤л LOOP ¤®«¦Ґ 室Ёвмбп ў ¤Ё Ї §®Ґ ®в 128
(¤ҐбпвЁз®Ґ) Ў ©в®ў ¤® з « Є®¬ ¤л ¤® 127 Ў ©в®ў Ї®б«Ґ з «
Є®¬ ¤л.
Љ®¬ ¤л LOOP ®ЎҐбЇҐзЁў ов гЇа ў«ҐЁҐ ЁвҐа жЁп¬Ё Ё ®ЎкҐ¤Ёпов
®аЈ Ё§ жЁо Ё¤ҐЄбЁа®ў Ёп жЁЄ« б гб«®ўл¬ ЇҐаҐе®¤®¬.
€бЇ®«м§г©вҐ Є®¬ ¤г LOOP, § Јаг¦ п зЁб«® ЁвҐа жЁ© ЎҐ§ § Є ў
бзҐвл© аҐЈЁбва Ё § ⥬ Ї®¬Ґй п Є®¬ ¤г LOOP ў Є®жҐ
Ї®б«Ґ¤®ў ⥫м®бвЁ Є®¬ ¤, Ї®¤«Ґ¦ йЁе ЁвҐа жЁЁ. Ќ § 票Ґ
Є®¬ ¤л LOOP нв® ¬ҐвЄ , гЄ §лў ой п з «® ЁвҐа жЁЁ.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0), Ґб«Ё ᬥ饨Ґ ЇҐаҐе®¤ 室Ёвбп ўҐ¤Ґв § Ја Ёжл
⥪г饣® Є®¤®ў®Ј® ᥣ¬Ґв .
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
Ћвбгвбвўгов
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
Ћвбгвбвўгов
ЏаЁ¬Ґз ЁҐ
----------
ЃҐ§гб«®ў п Є®¬ ¤ LOOP ўлЇ®«пҐвбп ¤®«миҐ, 祬
Ї®б«Ґ¤®ў ⥫м®бвм Ё§ ¤ўге Є®¬ ¤, ®¤ Ё§ Є®в®але ўлЇ®«пҐв
¤ҐЄаҐ¬Ґв бзҐв®Ј® ॣЁбва , ўв®а п - ЇҐаҐе®¤, Ґб«Ё бзҐвзЁЄ Ґ
а ўҐ г«о.
‚ᥠЄ®¬ ¤л ўҐвў«ҐЁп ЇаҐ®Ўа §говбп ¤«п ўлЎ®аЄЁ ў 16-а §ап¤лҐ
Є®¤л, Ґ§ ўЁбЁ¬® ®в ¤аҐб ЇҐаҐе®¤ Ё«Ё ў®§¬®¦®бвЁ ЄҐиЁа®ў Ёп.
-----------------------------------------------------------------
LSL - ‡ Јаг§Є Ја Ёжл ᥣ¬Ґв
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|0F 03 /r LSL r16,r/m16 10/10 ‡ Јаг§Є : r16 <- Ја Ёж ᥣ-|
| ¬Ґв , ᥫҐЄв®а r/m16 (Ја - |
| г«Ёа®ў ЁҐ ў Ў ©в е) |
|0F 03 /r LSL r32,r/m32 10/10 ‡ Јаг§Є : r32 <- Ја Ёж ᥣ-|
| ¬Ґв , ᥫҐЄв®а r/m32 (Ја - |
| г«Ёа®ў ЁҐ ў Ў ©в е) |
|0F 03 /r LSL r16,r/m16 10/10 ‡ Јаг§Є : r16 <- Ја Ёж ᥣ-|
| ¬Ґв , ᥫҐЄв®а r/m16 (Ја - |
| г«Ёа®ў ЁҐ ў бва Ёж е) |
|0F 03 /r LSL r32,r/m32 10/10 ‡ Јаг§Є : r32 <- Ја Ёж ᥣ-|
| ¬Ґв , ᥫҐЄв®а r/m32 (Ја - |
| г«Ёа®ў ЁҐ ў бва Ёж е) |
-----------------------------------------------------------------
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LSL § Јаг¦ Ґв ॣЁбва Ґ§ иЁда®ў ®© Ја ЁжҐ© ᥣ¬Ґв
Ё гбв ў«Ёў Ґв д« Ј ZF, ЇаЁ гб«®ўЁЁ, з⮠ᥫҐЄв®а Ёбв®зЁЄ
ўЁ¤Ё¬ ⥪г饬 га®ўҐ ЇаЁўЁ«ҐЈЁа®ў ®бвЁ Ё га®ўҐ RPL
¤ҐбЄаЁЇв®а®© в Ў«Ёжл, ¤ҐбЄаЁЇв®а Ё¬ҐҐв вЁЇ, ЇаЁҐ¬«Ґ¬л© ¤«п
Є®¬ ¤л LSL. ‚ Їа®вЁў®¬ б«гз Ґ д« Ј ZF ®зЁй Ґвбп, ॣЁбва
§ зҐЁп ®бв Ґвбп ЎҐ§ Ё§¬ҐҐЁ©. ѓа Ёж ᥣ¬Ґв § Јаг¦ Ґвбп
§ 票Ґ¬, Ја г«Ёа®ў л¬ ў Ў ©в е. …б«Ё ¤ҐбЄаЁЇв®а Ё¬ҐҐв
Ја Ёжг ᥣ¬Ґв , Ја г«Ёа®ў го ў бва Ёж е, Є®¬ ¤ LSL
ва б«ЁагҐв ҐЈ® ў Ў ©вл, ЇаҐ¦¤Ґ 祬 § Јаг§Ёвм ў ॣЁбва
§ 票п (б¤ўЁЈ ў«Ґў® 12 20-а §а冷© "бла®©" Ја Ёжл Ё§
¤ҐбЄаЁЇв®а , § ⥬ OR б® § 票Ґ¬ 00000FFFH).
32-а §ап¤лҐ д®а¬л Є®¬ ¤л LSL § ЇЁблў ов ў 16-а §ап¤л© ॣЁбва
§ 票п 32-а §ап¤го Ја Ёжг, Ја г«Ёа®ў го ў Ў ©в е.
„ҐбЄаЁЇв®ал ᥣ¬Ґв®ў Є®¤ Ё ¤ ле ¤®ЇгбвЁ¬л ¤«п Є®¬ ¤л LSL.
„®ЇгбвЁ¬лҐ вЁЇл ¤ҐбЄаЁЇв®а®ў бЇҐжЁ «мле ᥣ¬Ґв®ў Ё и«о§®ў ¤«п
Є®¬ ¤л LSL ЇаЁў®¤пвбп ў б«Ґ¤го饩 в Ў«ЁжҐ:
-----------------------------------------------------------------
’ЁЇ €¬п „®ЇгбвЁ¬®/Ґ¤®ЇгбвЁ¬®
-----------------------------------------------------------------
0 ЌҐ¤®ЇгбвЁ¬® ЌҐ¤®ЇгбвЁ¬®
1 „®бвгЇл© TSS 80286 „®ЇгбвЁ¬®
2 LDT „®ЇгбвЁ¬®
3 ‡ пвл© TSS 80286 „®ЇгбвЁ¬®
4 «о§ ўл§®ў 80286 ЌҐ¤®ЇгбвЁ¬®
5 «о§ § ¤ зЁ 80286/i486 ЌҐ¤®ЇгбвЁ¬®
6 «о§ «®ўгиЄЁ 80286 ЌҐ¤®ЇгбвЁ¬®
7 «о§ ЇаҐалў Ёп 80286 ЌҐ¤®ЇгбвЁ¬®
8 ЌҐ¤®ЇгбвЁ¬® „®ЇгбвЁ¬®
9 „®бвгЇл© TSS i486 „®ЇгбвЁ¬®
A ЌҐ¤®ЇгбвЁ¬® ЌҐ¤®ЇгбвЁ¬®
B ‡ пвл© TSS i486 „®ЇгбвЁ¬®
C «о§ ўл§®ў i486 ЌҐ¤®ЇгбвЁ¬®
D ЌҐ¤®ЇгбвЁ¬® ЌҐ¤®ЇгбвЁ¬®
E «о§ «®ўгиЄЁ i486 ЌҐ¤®ЇгбвЁ¬®
F и«о§ ЇаҐалў Ёп i486 ЌҐ¤®ЇгбвЁ¬®
-----------------------------------------------------------------
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
”« Ј ZF гбв ®ў«Ґ, Ґб«Ё в®«мЄ® ᥫҐЄв®а Ґ пў«пҐвбп ҐўЁ¤Ё¬л¬
Ё«Ё Ґ¤®ЇгбвЁ¬®Ј® вЁЇ , Є®Ј¤ д« Ј ZF ®зЁй Ґвбп.
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤
Ї ¬пвЁ ў ᥣ¬Ґв е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў ᥣ¬ҐвҐ SS; #PF(Є®¤ бЎ®п) ў б«гз Ґ
бва Ёз®Ј® бЎ®п; #AC ¤«п Ґўла ўҐ®© ббл«ЄЁ Є Ї ¬пвЁ ЇаЁ
⥪г饬 га®ўҐ ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 6; Є®¬ ¤ LSL ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў Ґ
а бЇ®§ Ґвбп.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў. #AC ¤«п
Ґўла ўҐ®© ббл«ЄЁ Є Ї ¬пвЁ ЇаЁ ⥪г饬 га®ўҐ
ЇаЁўЁ«ҐЈЁа®ў ®бвЁ, а ў®¬ 3.
-----------------------------------------------------------------
LTR - ‡ Јаг§Є ॣЁбва § ¤ зЁ
-----------------------------------------------------------------
|Љ®¤ Љ®¬ ¤ —Ёб«® ЋЇЁб ЁҐ |
|®ЇҐа жЁЁ в Єв®ўле |
| жЁЄ«®ў |
| |
|0F 00 /3 LTR r/m16 20/20 ‡ Јаг§Є б«®ў EA ў ॣЁбва |
| § ¤ зЁ |
-----------------------------------------------------------------
ЋЇЁб ЁҐ
--------
Љ®¬ ¤ LTR § Јаг¦ Ґв ॣЁбва § ¤ зЁ Ё§ Ёб室®Ј® ॣЁбва Ё«Ё
¤аҐб Ї ¬пвЁ, § ¤ ®Ј® ®ЇҐа ¤®¬. ‡ Јаг¦Ґл© TSS Ї®¬Ґз Ґвбп
Є Є ‡ пвл©. ЏҐаҐЄ«озҐЁп § ¤ зЁ Ґ Їа®Ёб室Ёв.
Љ®¬ ¤ LTR ЁбЇ®«м§гҐвбп в®«мЄ® Їа®Ја ¬¬л¬ ®ЎҐбЇҐзҐЁҐ¬
®ЇҐа жЁ®®© бЁб⥬л; ЇаЁЄ« ¤л¬Ё Їа®Ја ¬¬ ¬Ё ® Ґ
ЁбЇ®«м§гҐвбп.
€§¬ҐпҐ¬лҐ д« ЈЁ
----------------
Ћвбгвбвўгов
€бЄ«озҐЁп § йЁйҐ®Ј® ०Ё¬
----------------------------------
#GP(0) ў б«гз Ґ Ґ¤®ЇгбвЁ¬®Ј® ЁбЇ®«ЁвҐ«м®Ј® ¤аҐб ®ЇҐа ¤
Ї ¬пвЁ ў ᥣ¬Ґв е CS, DS, ES, FS Ё«Ё GS; #SS(0) ў б«гз Ґ
Ґ¤®ЇгбвЁ¬®Ј® ¤аҐб ў ᥣ¬ҐвҐ SS; #GP(0), Ґб«Ё ⥪гйЁ© га®ўҐм
ЇаЁўЁ«ҐЈЁа®ў ®бвЁ Ґ а ўҐ 0; #GP(ᥫҐЄв®а), Ґб«Ё ®ЎкҐЄв,
§ў л© ў ᥫҐЄв®аҐ Ёбв®зЁЄ , Ґ пў«пҐвбп TSS Ё«Ё 㦥 ‡ пв;
#NP(ᥫҐЄв®а), Ґб«Ё TSS Ї®¬ҐзҐ Є Є "Ґ ЏаЁбгвбвўгойЁ©"; #
PF(Є®¤ бЎ®п) ў б«гз Ґ бва Ёз®Ј® бЎ®п;
€бЄ«о票п ०Ё¬ ॠ«мле ¤аҐб®ў
---------------------------------------
ЏаҐалў ЁҐ 6; Є®¬ ¤ LTR ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў Ґ
а бЇ®§ Ґвбп.
€бЄ«озҐЁп ўЁавг «м®Ј® ०Ё¬ 8086
----------------------------------------
’Ґ ¦Ґ ЁбЄ«о票п, зв® Ё ў ०Ё¬Ґ ॠ«мле ¤аҐб®ў.
ЏаЁ¬Ґз ЁҐ
----------
ЂваЁЎгв а §¬Ґа ®ЇҐа ¤ нвг Є®¬ ¤г Ґ ў«ЁпҐв.
-----------------------------------------------------------------
Соседние файлы в папке I486