ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° X86
Π Π°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ — ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π² ΡΡΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΡΡΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° cs. ΠΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ sp. ΠΠΎΠΌΠ°Π½Π΄Π° push esp/sp Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² ΡΡΠ΅ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ esp/sp ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎ Π²ΡΠ΄Π°ΡΠΈ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠΎΠΌΠ°Π½Π΄Π° push ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ pop Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΡΠ΅ΠΊ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° X86 (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ ΠΠΠ ΠΠΠΠΠΠ― ΠΠΠΠΠΠ¬ ΠΠ ΠΠ¦ΠΠ‘Π‘ΠΠ ΠΠ Π‘ΠΠΠΠΠ‘Π’ΠΠ X86
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΡΡΠΈΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ (ΡΠΈΡ. 1):
Β· Π²ΠΎΡΠ΅ΠΌΡ 32-Π±ΠΈΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π°Π΄ΡΠ΅ΡΠΎΠ² (ΠΈΡ Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ (Π ΠΠ)):
eax/ax/ah/al;
ebx/bx/bh/bl;
edx/dx/dh/dl;
ecx/cx/ch/cl;
ebp/bp;
esi/si;
edi/di;
esp/sp.
ΡΠ΅ΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ²: cs, ds, ss, es, fs, gs;
ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ² eflags/flags;
ΡΠ΅Π³ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ eip/ip.
Π ΠΈΡ. 1. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² i486 ΠΈ Pentium
ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Ρ Π½Π°ΠΊΠ»ΠΎΠ½Π½ΠΎΠΉ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ?
ΠΠ΅Ρ, ΡΡΠΎ Π½Π΅ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ — ΡΡΠΎ ΡΠ°ΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ°. ΠΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ.
Π’Π°ΠΊ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π΄Π»Ρ ΠΌΠ»Π°Π΄ΡΠΈΡ 16-ΡΠ°Π·ΡΡΠ΄Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠΈΡΠΌΡ Intel, Π½Π°ΡΠΈΠ½Π°Ρ Ρ i8086.
ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ i486 ΠΈ Pentium ΠΈΠΌΠ΅ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ. ΠΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ², ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ i8086, Π½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΡΠΎ ΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π² ΠΈΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΡ — ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΈΡΡΠ°Π²ΠΊΡ e (Extended).
Π Π΅Π³ΠΈΡΡΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ
ΠΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ²ΠΎΠΈΠΌ «ΠΌΠ»Π°Π΄ΡΠΈΠΌ» ΡΠ°ΡΡΡΠΌ.
ΠΠ»Ρ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΉ Π°Π΄ΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 16 ΠΈ 8-Π±ΠΈΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ². Π‘ΡΠ°ΡΡΠΈΠ΅ 16 Π±ΠΈΡ ΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ Π²ΡΡΠ΅, Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΌΠ»Π°Π΄ΡΠΈΠΌΠΈ 16-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΠΈΡΠΌΡ Intel.
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΠΌ ΡΠ΅Π³ΠΈΡΡΡΡ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ Π²Π½ΡΡΡΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΎ-Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° (ΠΠΠ£), ΡΠΎ ΠΈΡ Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΠΌΠΈ ΠΠΠ£:
eax/ax/ah/al (Accumulator register) — Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ.
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ . Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ;
ebx/bx/bh/bl (Base register) — Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ.
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ;
ecx/cx/ch/cl (Count register) — ΡΠ΅Π³ΠΈΡΡΡ-ΡΡΠ΅ΡΡΠΈΠΊ.
ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ , ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠ΅ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΡΠ°ΡΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΈ ΡΠΊΡΡΡΠΎ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ.
Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° loop ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ ΠΏΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ecx/cx;
edx/dx/dh/dl (Data register) — ΡΠ΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ .
Π’Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠ΅Π³ΠΈΡΡΡ eax/ax/ah/al, ΠΎΠ½ Ρ ΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ; Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π΅ΡΠ²Π½ΠΎ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠΎ Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ 32, 16 ΠΈΠ»ΠΈ 8 Π±ΠΈΡ:
esi/si (Source Index register) — ΠΈΠ½Π΄Π΅ΠΊΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
ΠΡΠΎΡ ΡΠ΅Π³ΠΈΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅;
edi/di (Destination Index register) — ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° (ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ).
ΠΡΠΎΡ ΡΠ΅Π³ΠΈΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ΅-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ΅.
Π Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ-Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ ΡΡΠ΅ΠΊ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ:
esp/sp (Stack Pointer register) — ΡΠ΅Π³ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ΅ΠΊΠ°.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ΡΡΠ΅ΠΊΠ°.
ebp/bp (Base Pointer register) — ΡΠ΅Π³ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π±Π°Π·Ρ ΠΊΠ°Π΄ΡΠ° ΡΡΠ΅ΠΊΠ°.
ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Π²Π½ΡΡΡΠΈ ΡΡΠ΅ΠΊΠ°.
ΠΠ΅ ΡΠΏΠ΅ΡΠΈΡΠ΅ ΠΏΡΠ³Π°ΡΡΡΡ ΡΡΠΎΠ»Ρ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΠΠ£. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π»ΡΠ±ΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡΡ . ΠΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΡΠΌΠ΅ΡΠΈΠ»ΠΈ Π²ΡΡΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. ΠΠ½Π°Π½ΠΈΠ΅ ΡΡΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Ρ ΠΎΡΡ Π±Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘Π΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ cs, ss, ds, es, gs, fs.
ΠΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ Intel. ΠΠ½Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ΅Ρ ΡΠ°ΡΡΠ΅ΠΉ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΊΠ°Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΏΡΠ°Π²ΠΊΠΎΠΉ, ΠΊΠ°ΠΊ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»Π΅Π΅, Π² ΡΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ. ΠΠΎΠ³ΠΈΠΊΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΡΠ°ΠΊ, ΡΡΠΎ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π΄ΠΎΡΡΡΠΏΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΊ ΡΡΠ΅ΠΊΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π΄ΡΠ΅ΡΠ° Π²ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ . ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ²:
1. Π‘Π΅Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π³ΠΈΡΡΡ cs (code segment register) — ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΠΊΠΎΠ΄Π°. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Ρ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ (ΡΠΎ Π΅ΡΡΡ ΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°).
2. Π‘Π΅Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ . Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π΄Π°Π½Π½ΡΠ΅. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π³ΠΈΡΡΡ ds (data segment register) — ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
3. Π‘Π΅Π³ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠ°. ΠΡΠΎΡ ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΡΠ΅ΠΊΠΎΠΌ. Π Π°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ: ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ ΡΠ»ΡΠΆΠΈΡ ΡΠ΅Π³ΠΈΡΡΡ ss (stack segment register) — ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ΅ΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ°.
4. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ .
ΠΠ΅ΡΠ²Π½ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ Π΄Π°Π½Π½ΡΡ , Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅ ds.
ΠΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ , ΡΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ . ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ , Π°Π΄ΡΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΠ΅ ds, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ²Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅.
ΠΠ΄ΡΠ΅ΡΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ es, gs, fs (extension data segment registers).
Π Π΅Π³ΠΈΡΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ eflags ΠΈ ip
ΠΠ½ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ, ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ°ΠΊ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
eflags/flags (flag register) — ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ². Π Π°Π·ΡΡΠ΄Π½ΠΎΡΡΡ eflags/flags — 32/16 Π±ΠΈΡ. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠ»Π°Π³Π°ΠΌΠΈ. ΠΠ»Π°Π΄ΡΠ°Ρ ΡΠ°ΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΠ΅Π³ΠΈΡΡΡΡ flags Π΄Π»Ρ i8086.
Π ΠΈΡ. 2. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° eflags
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΡΠ»Π°Π³ΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ° eflags/flags ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠΈ Π³ΡΡΠΏΠΏΡ:
8 ΡΠ»Π°Π³ΠΎΠ² ΡΠΎΡΡΠΎΡΠ½ΠΈΡ. ΠΡΠΈ ΡΠ»Π°Π³ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π€Π»Π°Π³ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ° eflags ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π½Π΅Π³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΠΈ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
1 ΡΠ»Π°Π³ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ — df (Directory Flag). ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° df ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π΄Π°Π½Π½ΡΡ : ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ (df = 0) Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΎΡ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ ΠΊ Π΅Π΅ Π½Π°ΡΠ°Π»Ρ (df = 1).
5 ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ»Π°Π³ΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ Π²Π²ΠΎΠ΄ΠΎΠΌ/Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ, ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΠΌΡΠΌΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΌΠΈ, ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ, ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ 8086. ΠΡΠΈΠΊΠ»Π°Π΄Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΈ ΡΠ»Π°Π³ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
eip/ip (Instraction Pointer register) — ΡΠ΅Π³ΠΈΡΡΡ-ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄.
Π Π΅Π³ΠΈΡΡΡ eip/ip ΠΈΠΌΠ΅Π΅Ρ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ 32/16 Π±ΠΈΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠ΅ΠΉ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° cs Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠΎΡ ΡΠ΅Π³ΠΈΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, Π½ΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΈ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ², Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ° eip/ip.
Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ°Π½ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ -ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ :
1. ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. 20d, 0a2h, 10111b
2. ΠΠ°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΡΠΈ Π΄Π²Π° ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠΌΠΈ, ΠΈΠ»ΠΈ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ; ΡΠ°Π±ΠΎΡΠ° Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠΎ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ — Π²ΠΎΡ Π²ΠΎΠΏΡΠΎΡ.
3. ΠΠ°Π½Π½ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, (ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΡΡΡΠΊΡΡΡΡ, Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΠΏΡ.) ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π² ΡΠ·ΡΠΊ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Ρ ΡΠ΅Π»ΡΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΡΡΡΠΎΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±Π°Π·ΠΎΠ²ΡΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΠΊΠΈΡΠΏΠΈΡΠΈΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³Π»Π°Π΄ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠΎΠΌ
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ :
Β· Π±Π°ΠΉΡ — Π²ΠΎΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ Π±ΠΈΡΠΎΠ², ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΡ 0 Π΄ΠΎ 7, ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΠΈΡ 0 ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΠΌΠ»Π°Π΄ΡΠΈΠΌ Π·Π½Π°ΡΠ°ΡΠΈΠΌ Π±ΠΈΡΠΎΠΌ;
Β· ΡΠ»ΠΎΠ²ΠΎ — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ Π±Π°ΠΉΡ, ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ°. Π Π°Π·ΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π° — 16 Π±ΠΈΡ; Π±ΠΈΡΡ Π² ΡΠ»ΠΎΠ²Π΅ Π½ΡΠΌΠ΅ΡΡΡΡΡΡ ΠΎΡ 0 Π΄ΠΎ 15. ΠΠ°ΠΉΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½ΡΠ»Π΅Π²ΠΎΠΉ Π±ΠΈΡ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΌ Π±Π°ΠΉΡΠΎΠΌ, Π° Π±Π°ΠΉΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ 15-ΠΉ Π±ΠΈΡ — ΡΡΠ°ΡΡΠΈΠΌ Π±Π°ΠΉΡΠΎΠΌ. ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Intel ΠΈΠΌΠ΅ΡΡ Π²Π°ΠΆΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ — ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ Π²ΡΠ΅Π³Π΄Π° Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΏΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΌΡ Π°Π΄ΡΠ΅ΡΡ. ΠΠ΄ΡΠ΅ΡΠΎΠΌ ΡΠ»ΠΎΠ²Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅Ρ Π΅Π³ΠΎ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ°. ΠΠ΄ΡΠ΅Ρ ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π±Π°ΠΉΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΡΠ»ΠΎΠ²Π°.
Β· Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· ΡΠ΅ΡΡΡΠ΅Ρ Π±Π°ΠΉΡ (32 Π±ΠΈΡΠ°), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ.
Β· ΡΡΠ΅ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· Π²ΠΎΡΡΠΌΠΈ Π±Π°ΠΉΡ (64 Π±ΠΈΡΠ°), ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ.
Β·
Π ΠΈΡ. 3. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²:
— Π¦Π΅Π»ΡΠΉ ΡΠΈΠΏ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ — Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 8, 16 ΠΈΠ»ΠΈ 32 Π±ΠΈΡΠ°. ΠΠ½Π°ΠΊ Π² ΡΡΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² 7, 15 ΠΈΠ»ΠΈ 31-ΠΌ Π±ΠΈΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎΠ»Ρ Π² ΡΡΠΈΡ Π±ΠΈΡΠ°Ρ Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΈΡΠ»Ρ, Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ° — ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌΡ. ΠΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π§ΠΈΡΠ»ΠΎΠ²ΡΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
o 8-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ — ΠΎΡ -128 Π΄ΠΎ +127;
o 16-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ — ΠΎΡ -32 768 Π΄ΠΎ +32 767;
o 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ — ΠΎΡ -231 Π΄ΠΎ +231-1.
— Π¦Π΅Π»ΡΠΉ ΡΠΈΠΏ Π±Π΅Π· Π·Π½Π°ΠΊΠ° — Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 8, 16 ΠΈΠ»ΠΈ 32 Π±ΠΈΡΠ°. Π§ΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
o Π±Π°ΠΉΡ — ΠΎΡ 0 Π΄ΠΎ 255;
o ΡΠ»ΠΎΠ²ΠΎ — ΠΎΡ 0 Π΄ΠΎ 65 535;
o Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ — ΠΎΡ 0 Π΄ΠΎ 232-1.
— Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ°ΠΌΡΡΡ Π΄Π²ΡΡ ΡΠΈΠΏΠΎΠ²:
o Π±Π»ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠΈΠΏΠ° — 32-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π΄ΡΠ΅Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π±Π°ΠΉΡΠ°Ρ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°. ΠΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠΏΠ»ΠΎΡΠ½ΠΎΠΉ (ΠΏΠ»ΠΎΡΠΊΠΎΠΉ) ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, Π³Π΄Π΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ;
o Π΄Π°Π»ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΏΠ° — 48-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π΄ΡΠ΅Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: 16-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠΉ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ — ΡΠ΅Π»Π΅ΠΊΡΠΎΡΠ°, ΠΈ 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
— Π¦Π΅ΠΏΠΎΡΠΊΠ° — ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π±Π°ΠΉΡΠΎΠ², ΡΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ»ΠΎΠ² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ Π΄ΠΎ 4 ΠΠ±Π°ΠΉΡ.
— ΠΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ. ΠΠΈΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ Π±ΠΈΡΠ° Π»ΡΠ±ΠΎΠ³ΠΎ Π±Π°ΠΉΡΠ° ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΠΎ 32 Π±ΠΈΡ.
— ΠΠ΅ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΠΎ-Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ ΡΠΈΠΏ — Π±Π°ΠΉΡΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΈΡΡΡ ΠΎΡ 0 Π΄ΠΎ 9. ΠΠ΅ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° Ρ ΡΠ°Π½ΡΡΡΡ ΠΊΠ°ΠΊ Π±Π°ΠΉΡΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π°ΠΉΡΠ΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ±Π°ΠΉΡΠΎΠΌ.
— Π£ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΠΎ-Π΄Π΅ΡΡΡΠΈΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΡ ΠΎΡ 0 Π΄ΠΎ 9 Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π°ΠΉΡΠ΅. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΈΡΡΠ° Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ±Π°ΠΉΡΠ΅. Π¦ΠΈΡΡΠ° Π² ΡΡΠ°ΡΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ±Π°ΠΉΡΠ΅ (Π±ΠΈΡΡ 4−7) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°ΡΡΠ΅ΠΉ.
Π ΠΈΡ. 4. ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°
Π―Π·ΡΠΊ ΠΌΠΈΠΊΡΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ.
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅:
Model small ;ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ
.data ;ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ
;ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
.stack 100h ;ΡΠ΅Π³ΠΌΠ΅Π½Ρ ΡΡΠ΅ΠΊΠ°
.code ;ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ
;ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ
main:
;ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
end main
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ
ΠΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΡΠΌΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΡ Π½Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ ΡΠ·ΡΠΊΠ°ΠΌΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° ΡΡΠΈΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌ Π½Π΅Ρ; ΠΏΡΠΎΡΡΠΎ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΠΊΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ:
Π ΠΈΡ. 5. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ²
ΠΠ° ΡΠΈΡ. 5 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ:
Β· ? ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ»Ρ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Ρ ΡΠ°ΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ;
Β· Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π½Π΅ΡΠ΅Π½ΠΎ Π² ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠ³ΡΡ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΡΡΡΠΎΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1;
Β· Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ — ΠΈΡΠ΅ΡΠ°ΡΠΈΠ²Π½Π°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° ΡΠΈΡ. 5.17. ΠΡΠ° ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π½Π΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠ°ΠΌΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ n ΡΠ°Π·.
Β· ΠΈΠΌΡ — Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ ΠΌΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
Β· db — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 1 Π±Π°ΠΉΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ db ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°:
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ −128…+127;
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0…255;
o ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π‘ΡΡΠΎΠΊΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ Π±Π°ΠΉΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΡΡΠΎΠΊΠ΅.
Β· dw — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 2 Π±Π°ΠΉΡΠ°. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ dw ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°:
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ -32 768…32 767;
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0…65 535;
o Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠ΅Π΅ 16 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΈΡ, Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² 16-Π±ΠΈΡΠΎΠ²ΠΎΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ°;
o 1- ΠΈΠ»ΠΈ 2-Π±Π°ΠΉΡΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½Π°Ρ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
Β· dd — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 4 Π±Π°ΠΉΡΠ°. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ dd ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°:
§ Π΄Π»Ρ i386 ΠΈ Π²ΡΡΠ΅:
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ -2 147 483 648…+2 147 483 647;
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0…4 294 967 295;
o ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 16-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΈ 16-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ;
o ΡΡΡΠΎΠΊΡ Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 4 ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
Β· df — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 6 Π±Π°ΠΉΡ;
Β· dp — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 6 Π±Π°ΠΉΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ df ΠΈ dp ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°:
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ -2 147 483 648…+2 147 483 647;
§ Π΄Π»Ρ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ° 0…4 294 967 295;
o ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 32 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΈΡ (Π΄Π»Ρ i80386) ΠΈΠ»ΠΈ 16 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΈΡ (Π΄Π»Ρ ΠΌΠ»Π°Π΄ΡΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel);
o Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 16-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΈ 32-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ;
o ΡΡΡΠΎΠΊΡ Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 6 Π±Π°ΠΉΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
Β· dq — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 8 Π±Π°ΠΉΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ dq ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 32 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΈΡ
o ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° -263…263−1;
o ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 0…264−1;
o ΡΡΡΠΎΠΊΡ Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 8 Π±Π°ΠΉΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
Β· dt — ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 10 Π±Π°ΠΉΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ dt ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
o ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 32 ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΈΡ
o Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ· 16-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΈ 32-Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ;
o ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° -279…279−1;
o ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π±Π΅Π· Π·Π½Π°ΠΊΠ° ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° 0…280−1;
o ΡΡΡΠΎΠΊΡ Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 10 Π±Π°ΠΉΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ;
o ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 0…99 999 999 999 999 999 999.
ΠΡΠ΅Π½Ρ Π²Π°ΠΆΠ½ΠΎ ΡΡΡΠ½ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ½ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ²ΡΠ·Π°Π½ Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Intel ΡΡΠ΅Π±ΡΡΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ: ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ ΠΏΠΎ ΠΌΠ»Π°Π΄ΡΠ΅ΠΌΡ Π°Π΄ΡΠ΅ΡΡ.
ΠΠ»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π»ΠΈΡΡΠΈΠ½Π³ 1, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠ΅Π³ΠΌΠ΅Π½Ρ Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎΠΌ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ .
ΠΠΈΡΡΠΈΠ½Π³ 1. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄ΠΈΡ ΡΡΡΠΎΠΊΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
model small
.stack 100h
.data
message db 'ΠΠ°ΡΡΠΈΠ² Π±Π°ΠΉΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅', 10,13 '$'
po db 1, 3, 4, 5, 0fh, 0bh, 32, 01011b
perem1 db 0ffh
perem2 dw 3a7fh
perem3 dd 0f54d567ah
k1 db 10
k2 db ?
mas db 10 dup ('?')
adr dw k1
adr_full dd perem3
.code
start:
mov ax,@data
mov ds, ax
mov ah, 0ah
mov dx, offset message; mov dx, adr
int 21h
mov ax, 4c00h
int 21h
end start
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄
Π€ΠΎΡΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°
[ΠΈΠΌΡ ΠΌΠ΅ΡΠΊΠΈ:] ΠΠΠ [ΠΎΠΏΠ΅ΡΠ°Π½Π΄1] [, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2] [;ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ]
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
mov <οΏ½ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ>,<οΏ½ΠΎΠΏΠ΅ΡΠ°Π½Π΄-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ> | |||
ΠΌΠΎΠΆΠ½ΠΎ | ΠΠ΅Π»ΡΠ·Ρ | ΠΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ | |
mov Π°Ρ , Π²Ρ ; Π°Ρ :=Π²Ρ mov Π°Ρ , 0Π°2h; Π°Ρ := 0Π°2h mov per1, ax | mov ax, bh mov per1, per2 mov ds, per1 mov cs, ds mov cs, ax; ΠΏΠ°ΡΠ° cs: ip ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ | mov ah, bh mov al, per2 mov per1, al mov ax, per1 mov ds, ax mov ax, ds Π»ΠΈΠ±ΠΎ push ds mov cs, ax pop cs | |
xchg <οΏ½ΠΎΠΏΠ΅ΡΠ°Π½Π΄1>,<οΏ½ΠΎΠΏΠ΅ΡΠ°Π½Π΄2>; Π΄Π²ΡΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ Π°:=Π²; Π²:=Ρ; Ρ:=Π°
xchg dl, dh; ΠΌΠ΅Π½ΡΠ΅Ρ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅
ΠΠΎΠΌΠ°Π½Π΄Ρ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° Π² ΠΏΠΎΡΡ
in Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ, Π½ΠΎΠΌΠ΅Ρ_ΠΏΠΎΡΡΠ° — Π²Π²ΠΎΠ΄ Π² Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ ΠΈΠ· ΠΏΠΎΡΡΠ°
out ΠΏΠΎΡΡ, Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ — Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ° Π² ΠΏΠΎΡΡ
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ
lea Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π² ΡΠ΅Π³ΠΈΡΡΡ-Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅;
lea dx, x; Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ mov dx, offset x
lds Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π² ΡΠ΅Π³ΠΈΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ (Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π³Π΄Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ) Π² ΡΠ΅Π³ΠΈΡΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ ds;
les Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ —-//-ΡΠ΅Π³ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ es;
lgs Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — -//- ΡΠ΅Π³ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ gs;
lfs Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — -//- ΡΠ΅Π³ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ fs;
lss Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — -//- ΡΠ΅Π³ΠΈΡΡΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΠΊΠ° ss.
les dx, per1 ;ΠΏΠΎΠ»Π½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° per1 Π² ΠΏΠ°ΡΡ es: dx
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ
ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅ΠΊΠΎΠΌ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ ΡΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠ°:
ss — ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΡΡΡ ΡΡΠ΅ΠΊΠ°;
sp/esp — ΡΠ΅Π³ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ΅ΠΊΠ°;
bp/ebp — ΡΠ΅Π³ΠΈΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π±Π°Π·Ρ ΠΊΠ°Π΄ΡΠ° ΡΡΠ΅ΠΊΠ°.
push ΠΈΡΡΠΎΡΠ½ΠΈΠΊ — Π·Π°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
Β· ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ΅ΠΊΠ° esp/sp Π½Π° 4/2 (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΡΠΈΠ±ΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π°Π΄ΡΠ΅ΡΠ° — use16 ΠΈΠ»ΠΈ use32);
Β· Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π² Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° (Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠΎΠΉ ss: esp/sp).
Π Π°Π·ΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ — ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. Π’Π°ΠΊΠΆΠ΅ Π² ΡΡΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΡΡΠ΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° cs. ΠΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΎΠΌ sp. ΠΠΎΠΌΠ°Π½Π΄Π° push esp/sp Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² ΡΡΠ΅ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ esp/sp ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΎ Π²ΡΠ΄Π°ΡΠΈ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΠΎΠΌΠ°Π½Π΄Π° push ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ pop Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΡΠ΅ΠΊ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ°
pop Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — Π·Π°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ° ΠΏΠΎ ΠΌΠ΅ΡΡΡ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΠΎΠΌ «ΡΠ½ΠΈΠΌΠ°Π΅ΡΡΡ» Ρ Π²Π΅ΡΡΠΈΠ½Ρ ΡΡΠ΅ΠΊΠ°.
Push ax
Push bx
push cx
…
pop cx
pop bx
pop ax
push ax
pop bx; Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ mov bx, ax
pusha - ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: ax, cx, dx, bx, sp, bp, si, di
pushad — ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ: eax, ecx, edx, ebx, esp, ebp, esi, edi
pushf — ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² Π²Π΅ΡΡΠΈΠ½Π΅ ΡΡΠ΅ΠΊΠ° (ss:sp) ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ»Π°Π³ΠΎΠ² flags
pushfd — ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ»Π°Π³ΠΎΠ² eflags.
popa — ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ di, si, bp, sp, bx, dx, cx, ax
popad — ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ edi, esi, ebp, esp, ebx, edx, ecx, eax
popf — ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΊΠ° ΡΠ»ΠΎΠ²Π° ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ² flags
popfd — ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΊΠ° Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ² eflags
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ΠΡΠ±Π°Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ»Π°Π³ΠΎΠ² of, sf, zf, pf, cf (ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, Π·Π½Π°ΠΊ, Π½ΡΠ»Ρ, ΠΏΠ°ΡΠΈΡΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π½ΠΎΡ)
and ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ (Π — ΠΊΠΎΠ½ΡΡΠ½ΠΊΡΠΈΡ).
ΠΎΠΏ1:=ΠΎΠΏ1? ΠΎΠΏ2
and ah, 0a1h; ah:=ah?0ah
and bx, cx; bx:=bx?cx
and dx, x1; dx:=dx?x1
or ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΠΠ — Π΄ΠΈΠ·ΡΡΠ½ΠΊΡΠΈΡ)
or al, x1; ΠΎΠΏ1:=ΠΎΠΏ1 & ΠΎΠΏ2
or eax, edx
or dx, x1
xor ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΠΠ ΠΠΠ-ΠΠ)
test ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ «ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ» (ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ).
ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π Π½Π°Π΄ Π±ΠΈΡΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 ΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄2. Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ»Π°Π³ΠΈ zf, sf, ΠΈ pf, ΡΡΠΎ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±ΠΈΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
not ΠΎΠΏΠ΅ΡΠ°Π½Π΄ — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ. ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠΎΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ΅ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Π·Π°ΠΌΠ΅Π½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅) ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΡ ΡΠΈΡΠ΅Π».
model small
.stack 100h
.data
x1 db 0c2h
x2 db 022h
y db ?
.code
start:
mov ax,@data
mov ds, ax
mov al, x1
or al, x2
mov y, al
mov ax, 4c00h
int 21h
end start
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ ΡΠ΅Π»ΡΠΌΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ
Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ°
inc ΠΎΠΏΠ΅ΡΠ°Π½Π΄ — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° 1;
inc ax; ax:=ax+1
inc x1
add ΠΎΠΏ1, ΠΎΠΏ2 — ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ: ΠΎΠΏ1 = ΠΎΠΏ1 + ΠΎΠΏ2 (addition)
add al, bl
add ax, 0fe2h
add ebx, x1+2
add x1, 0fh
add x2, ax
adc ΠΎΠΏ1, ΠΎΠΏ2 — ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ»Π°Π³Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf. ΠΎΠΏ1 = ΠΎΠΏ1 + ΠΎΠΏ2 + Π·Π½Π°Ρ_cf
ΠΡΡΠΈΡΠ°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» Π±Π΅Π· Π·Π½Π°ΠΊΠ°
dec ΠΎΠΏΠ΅ΡΠ°Π½Π΄ — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°, ΡΠΎ Π΅ΡΡΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π½Π° 1;
dec cx ;cx:=cx-1
dec x
sub ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΠΈΡΠ°Π½ΠΈΡ; Π΅Π΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 = ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 — ΠΎΠΏΠ΅ΡΠ°Π½Π΄2
sub al, bl; al:=al-bl
sub ax, x1
sub x2, dx
sub eax, 0f35h
sub x2, 22h
sbb ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Ρ ΡΡΠ΅ΡΠΎΠΌ Π·Π°Π΅ΠΌΠ° (ΡΠ»Π°Π³Π° cf):
ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 = ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 — ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅_cf
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΡ ΡΠΈΡΠ΅Π».
model small
.stack 100h
.data
x1 db 0c2h
x2 db 022h
y db ?
.code
start:
mov ax,@data
mov ds, ax
mov al, x1
add al, x2
mov y, al
mov ax, 4c00h
int 21h
end start
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π»
mul ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ1 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Π±Π΅Π· ΡΡΠ΅ΡΠ° Π·Π½Π°ΠΊΠ°
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
ΠΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π±Π΅Π· ΡΡΠ΅ΡΠ° Π·Π½Π°ΠΊΠΎΠ². ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅. ΠΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΎΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ
mul dl; ax:=al*dl, dlΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ1, alΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ2
mul x1; dx: ax=ax*0ad91h, x1 wordΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ1, axΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ2
mul ecx; edx: eax=eax*ecx, ecxΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ1, eaxΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ2
imul ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ1 — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ
ΠΠ΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π»
div Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ — Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² — Π΄Π΅Π»ΠΈΠΌΠΎΠ³ΠΎ ΠΈ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. ΠΠ΅Π»ΠΈΠΌΠΎΠ΅ Π·Π°Π΄Π°Π΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅
div dl ;ah:al=ax/dl, axΠ΄Π΅Π»ΠΈΠΌΠΎΠ΅, dlΠ΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ah-ΡΠ°ΡΡΠ½ΠΎΠ΅, alΠΎΡΡΠ°ΡΠΎΠΊ
div x1 ;ax:dx=dx:ax/0ad91h, dx: axΠ΄Π΅Π»ΠΈΠΌΠΎΠ΅, x1 wordΠ΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ax-ΡΠ°ΡΡΠ½ΠΎΠ΅,
;dxΠΎΡΡΠ°ΡΠΎΠΊ
div ecx ;eax:edx=edx:eax/ecx, edx: eaxΠ΄Π΅Π»ΠΈΠΌΠΎΠ΅, ecxΠ΄Π΅Π»ΠΈΡΠ΅Π»Ρ, eax-ΡΠ°ΡΡΠ½ΠΎΠ΅,
;edxΠΎΡΡΠ°ΡΠΎΠΊ
idiv Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ — ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π²ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΡ ΡΠΈΡΠ΅Π».
model small
.stack 100h
.data
x1 db 78
yl db ?
yh db ?
.code
start:
mov ax,@data
mov ds, ax
xor ax, ax
mov al, 25
mul x1
jnc m1 ;Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
mov yh, ah
m1:
mov yl, al
mov ax, 4c00h
int 21h
end start
ΠΡΠΈΠΌΠ΅Ρ. ΠΡΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Ρ=(Ρ 2-Ρ 3)/Ρ 1, Ρ 1, Ρ 2,Ρ 3 — ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°
model small
.stack 100h
.data
s1 db 'ΠΠ²Π΅Π΄ΠΈΡΠ΅ Ρ 1', 10,13,'$'
s2 db 'ΠΠ²Π΅Π΄ΠΈΡΠ΅ Ρ 2', 10,13,'$'
s3 db 'ΠΠ²Π΅Π΄ΠΈΡΠ΅ Ρ 3', 10,13,'$'
x1 db ?
x2 db ?
yc db? ;ΡΠ°ΡΡΠ½ΠΎΠ΅
yo db? ;ΠΎΡΡΠ°ΡΠΎΠΊ
.code
start:
mov ax,@data
mov ds, ax
mov ah, 09h
mov dx, offset s1
int 21h ;Π²ΡΠ²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ
mov ah, 01h Π²Π²ΠΎΠ΄ΠΈΠΌ Ρ 1
int 21h ;Π²Π²ΠΎΠ΄ΠΈΠΌ ΡΠΈΡΠ»ΠΎ
sub al, 30h ;al:=x1
mov x1, al
mov ah, 09h
mov dx, offset s2
int 21h
mov ah, 01h Π²Π²ΠΎΠ΄ΠΈΠΌ Ρ 2
int 21h
sub al, 30h ;al:=x2
mov x2, al
mov ah, 09h
mov dx, offset s3
int 21h
mov ah, 01h Π²Π²ΠΎΠ΄ΠΈΠΌ Ρ 3
int 21h
sub al, 30h ;al:=x3
mov bl, x2 ;bl:=x2
sub bl, al ;bl:=x2-x3
xchg al, bl ;al:=bl, al:=x2-x3
xor ah, ah ;ax:=x2-x3 Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Ρ
mov dl, x1 ;dl:=x1
div dl ;ax/dl, ax/x1
mov yc, ah
mov yo, al
; ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΡΠΊΡΠ°Π½
mov ax, 4c00h
int 21h
end start
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΄Π²ΠΈΠ³Π°
ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΄Π²ΠΈΠ³Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ Π½Π°Π΄ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΡΠ°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ², ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π±ΠΈΡΡ Π² ΠΏΠΎΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΄Π²ΠΈΠ³Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf.
shl ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Shift Logical Left) — Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ². Π‘ΠΏΡΠ°Π²Π° (Π² ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΌΠ»Π°Π΄ΡΠ΅Π³ΠΎ Π±ΠΈΡΠ°) Π²ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½ΡΠ»ΠΈ;
shr ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² — Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄:
Β· ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ «Π²ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠΉ» Π±ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³ cf;
Β· Π±ΠΈΡ, Π²Π²ΠΎΠ΄ΠΈΠΌΡΠΉ Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ°, ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0;
Β· ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΎΠ½ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π²ΠΎ ΡΠ»Π°Π³ cf, ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΡΠ΅ΡΡΠ΅ΡΡΡ!
sal ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Shift Arithmetic Left)
sar ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ²
Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ/Π²ΠΏΡΠ°Π²ΠΎ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ/ Π²ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ². Π‘ΠΏΡΠ°Π²Π°/ Π‘Π»Π΅Π²Π° Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Π²ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½ΡΠ»ΠΈ.
ΠΠΎΠΌΠ°Π½Π΄Π° sal Π½Π΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΠΊΠ°, Π½ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³ cf Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΌΠ΅Π½Ρ Π·Π½Π°ΠΊΠ° ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΌ Π²ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠΌ Π±ΠΈΡΠΎΠΌ. Π ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° sal ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅ shl;
ΠΠΎΠΌΠ°Π½Π΄Π° sar ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ Π·Π½Π°ΠΊ, Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π²ΠΈΠ³Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ Π±ΠΈΡΠ°.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π°
rol ΠΎΠΏΠ΅ΡΠ°Π½Π΄,ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Rotate Left) — ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ². Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠ΅ Π²Π»Π΅Π²ΠΎ Π±ΠΈΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π² ΡΠΎΡ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ ΡΠΏΡΠ°Π²Π°.
ror ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Rotate Right) — ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠΈΡ., ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠΉ Π±ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²Π΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ°, Π½ΠΎ ΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° cf.
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ΡΠ΅ΡΠ΅Π· ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠΉ Π±ΠΈΡ Π½Π΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² ΠΎΠΏΠ΅ΡΠ°Π½Π΄ Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ½ΡΠ°, Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π² ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf. ΠΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΄Π²ΠΈΠ³Π° (ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² ΡΠΈΠΊΠ»Π΅) ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΠ°Π½Π΅Π΅ Π±ΠΈΡΠ° Ρ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° (ΡΠΌ. ΡΠΈΡ. 4).
rcl ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Rotate through Carry Left) — ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²Π»Π΅Π²ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π½ΠΎΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²Π»Π΅Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ². Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠ΅ Π±ΠΈΡΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf.
rcr ΠΎΠΏΠ΅ΡΠ°Π½Π΄, ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (Rotate through Carry Right) — ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅Π½ΠΎΡ.
Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Π²ΠΏΡΠ°Π²ΠΎ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠΌ ΡΡΠ΅ΡΡΠΈΠΊ_ΡΠ΄Π²ΠΈΠ³ΠΎΠ². Π‘Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡΠ΅ Π±ΠΈΡΡ ΠΏΠΎΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf.
ΠΠ· ΡΠΈΡ. 4 Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈ ΡΠ΄Π²ΠΈΠ³Π΅ ΡΠ΅ΡΠ΅Π· ΡΠ»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΠΌΡΡ Π±ΠΈΡΠΎΠ², Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ.
ΠΠΎΠ΄ ΡΠ°ΡΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π΄Π΅ΡΡ ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΊΠΈ ΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΡΠΈΠΌΠ΅Ρ. ΠΠ°Π½ΠΎ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ. ΠΡΠ²Π΅Π΄ΠΈΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π½Π° 2.
ΠΡΠ±ΠΎΠ΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅
— 1 ffh
— 2 feh
…
— 10 f6h
ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΠ² Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΠΈΡΠ°Π½ΠΈΠ΅ Π½Π°Π΄ ΡΠΈΡΠ»ΠΎΠΌ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ² 1.
model small
.stack 100h
.data
x db -12
.code
start:
mov ax,@data
mov ds,ax
mov al, x ;Π² al ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
not al
inc al ;ΡΠΈΡΠ»ΠΎ ΠΏΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ
shr al, 1
;Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π° ΡΠΊΡΠ°Π½
aam ;
;ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ 63h (9910), ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² al Π² Π΅Π³ΠΎ ;Π½Π΅ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠΉ BCD-ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ
; -ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° al Π½Π° 10;
; -Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΡΡΠ½ΠΎΠ΅ Π² ΡΠ΅Π³ΠΈΡΡΡ ah, ΠΎΡΡΠ°ΡΠΎΠΊ — Π² ΡΠ΅Π³ΠΈΡΡΡ al.
mov dx, ax ;ΡΠΈΡΠ»ΠΎ Π² ΡΠ΅Π³ΠΈΡΡΡ dx
or dx, 3030h ;ΠΏΠΎΠ»ΡΡΠ°Ρ ASCII ΠΊΠΎΠ΄ ΡΠΈΡΠ»Π°
xchg dh, dl ;ΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ°ΡΡΠΈΠΉ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ, Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈΠ· dl
mov ah, 02h ;
int 21h ;Π²ΡΠ²ΠΎΠΆΡ ΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΡ ΡΠΈΡΠ»Π°
xchg dh, dl ;ΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ°ΡΡΠΈΠΉ ΠΈ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ,
int 21h ;Π²ΡΠ²ΠΎΠΆΡ ΠΌΠ»Π°Π΄ΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΡ ΡΠΈΡΠ»Π°
mov ax, 4c00h
int 21h
end start
ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠΈ Π³ΡΡΠΏΠΏΡ:
1. ΠΠΎΠΌΠ°Π½Π΄Ρ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
— ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°; jmp
— Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ; call, ret
— Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ. Int, iret
2. ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
— ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmp;
— ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π°Π³Π°;
— ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ecx/cx.
3. ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠΌ:
— ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ ecx/cx;
— ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ ecx/cx Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π΄ΠΎΡΡΠΎΡΠ½ΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° ΠΏΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΡΠ»ΠΎΠ²ΠΈΡ.
jmp Π°Π΄ΡΠ΅Ρ_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° — Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π±Π΅Π· ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΡΠΊΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°. ΠΠ½Π°Π»ΠΎΠ³ goto.
jmp m1 m4:
… …
m1: jmp m4
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ
ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
jcc ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°
ΠΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ «j» — ΠΎΡ ΡΠ»ΠΎΠ²Π° jump (ΠΏΡΡΠΆΠΎΠΊ), cc — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ. Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, ΡΠΎ ΡΡΠ° ΠΌΠ΅ΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π°, ΠΌΠ΅ΠΆΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°Ρ Π½Π΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΡΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ:
— Π»ΡΠ±Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π°Π³ΠΎΠ²;
— ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmp, ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ²;
— ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π³ΠΈΡΡΡΠ° ecx/cx.
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΠ»Π°Π³ΠΎΠ²
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° | ΠΠΎΠΌΠ΅Ρ Π±ΠΈΡΠ° Π² eflags/flag | ΠΠΎΠΌΠ°Π½Π΄Π° ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° | |
Π€Π»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf | 1 | jc | cf = 1 | |
Π€Π»Π°Π³ ΡΠ΅ΡΠ½ΠΎΡΡΠΈ pf | 2 | jp | pf = 1 | |
Π€Π»Π°Π³ Π½ΡΠ»Ρ zf | 6 | jz | zf = 1 | |
Π€Π»Π°Π³ Π·Π½Π°ΠΊΠ° sf | 7 | js | sf = 1 | |
Π€Π»Π°Π³ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ of | 11 | jo | of = 1 | |
Π€Π»Π°Π³ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° cf | 1 | jnc | cf = 0 | |
Π€Π»Π°Π³ ΡΠ΅ΡΠ½ΠΎΡΡΠΈ pf | 2 | jnp | pf = 0 | |
Π€Π»Π°Π³ Π½ΡΠ»Ρ zf | 6 | jnz | zf = 0 | |
Π€Π»Π°Π³ Π·Π½Π°ΠΊΠ° sf | 7 | jns | sf = 0 | |
Π€Π»Π°Π³ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ of | 11 | jno | of = 0 | |
jcxz ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (Jump if cx is Zero) — ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄, Π΅ΡΠ»ΠΈ cx Π½ΠΎΠ»Ρ;
jecxz ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (Jump Equal ecx Zero) — ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄, Π΅ΡΠ»ΠΈ ecx Π½ΠΎΠ»Ρ.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΡΠ°Π²Π½Ρ Π»ΠΈ Π΄Π²Π° ΡΠΈΡΠ»Π° Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
model small
.stack 100h
.data
s1 db 'ΡΠΈΡΠ»Π° ΡΠ°Π²Π½Ρ$'
s2 db 'ΡΠΈΡΠ»Π° Π½Π΅ ΡΠ°Π²Π½Ρ$'
.code
start:
mov ax,@data
mov ds, ax
mov ah, 01h
int 21h ;Π²Π²Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
mov dl, al
mov ah, 01h
int 21h ;Π²Π²Π΅Π»ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
sub al, dl ;ΡΡΠ°Π²Π½ΠΈΠ»ΠΈ ΡΠΈΡΠ»Π°
jnz m1
mov dx, offset s1
jmp m2
m1: mov dx, offset s2
m2: mov ah, 09h
int 21h ;Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ
mov ax, 4c00h
int 21h
end start
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmp
cmp ΠΎΠΏΠ΅ΡΠ°Π½Π΄1, ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 — ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π° ΠΈ ΠΏΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³ΠΈ. ΠΠΎΠΌΠ°Π½Π΄Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmp ΠΈΠΌΠ΅Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°Π±ΠΎΡΡ. ΠΠ½ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ sub. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΠ΅Π³ΠΎ ΠΎΠ½Π° Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ — ΡΡΠΎ Π·Π°ΠΏΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π²ΡΡΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
— Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ (ΠΎΠΏΠ΅ΡΠ°Π½Π΄1-ΠΎΠΏΠ΅ΡΠ°Π½Π΄2);
— Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»Π°Π³ΠΈ, ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 ΠΈ ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ (ΡΠΎ Π΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ).
Π£ΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
Π’ΠΈΠΏΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² | ΠΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° | ΠΡΠΈΡΠ΅ΡΠΈΠΉ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° | ΠΠ½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π°Π³ΠΎΠ² Π΄Π»Ρ ΠΎΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° | |
ΠΡΠ±ΡΠ΅ | je | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 = ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | zf = 1 | |
ΠΡΠ±ΡΠ΅ | jne | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1<>ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | zf = 0 | |
Π‘ΠΎ Π·Π½Π°ΠΊΠΎΠΌ | jl/jnge | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 < ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | sf <> of | |
Π‘ΠΎ Π·Π½Π°ΠΊΠΎΠΌ | jle/jng | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 <= ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | sf <> of or zf = 1 | |
Π‘ΠΎ Π·Π½Π°ΠΊΠΎΠΌ | jg/jnle | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 > ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | sf = of and zf = 0 | |
Π‘ΠΎ Π·Π½Π°ΠΊΠΎΠΌ | jge/jnl | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 => ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | sf = of | |
ΠΠ΅Π· Π·Π½Π°ΠΊΠ° | jb/jnae | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 < ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | cf = 1 | |
ΠΠ΅Π· Π·Π½Π°ΠΊΠ° | jbe/jna | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 <= ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | cf = 1 or zf=1 | |
ΠΠ΅Π· Π·Π½Π°ΠΊΠ° | ja/jnbe | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 > ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | cf = 0 and zf = 0 | |
ΠΠ΅Π· Π·Π½Π°ΠΊΠ° | jae/jnb | ΠΎΠΏΠ΅ΡΠ°Π½Π΄1 => ΠΎΠΏΠ΅ΡΠ°Π½Π΄2 | cf = 0 | |
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΡΠ°Π²Π½Ρ Π»ΠΈ Π΄Π²Π° ΡΠΈΡΠ»Π° Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
model small
.stack 100h
.data
s1 db 'ΡΠΈΡΠ»Π° ΡΠ°Π²Π½Ρ$'
s2 db 'ΡΠΈΡΠ»Π° Π½Π΅ ΡΠ°Π²Π½Ρ$'
.code
start:
mov ax,@data
mov ds, ax
mov ah, 01h
int 21h ;Π²Π²Π΅Π»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
mov dl, al
mov ah, 01h
int 21h ;Π²Π²Π΅Π»ΠΈ Π²ΡΠΎΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
cmp al, dl ;ΡΡΠ°Π²Π½ΠΈΠ»ΠΈ ΡΠΈΡΠ»Π°
jne m1
mov dx, offset s1
jmp m2
m1: mov dx, offset s2
m2: mov ah, 09h
int 21h ;Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ
mov ax, 4c00h
int 21h
end start
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ²
loop ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (Loop) — ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠΈΠΊΠ»
Π Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
— Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° ecx/cx;
— ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠ° ecx/cx Ρ Π½ΡΠ»Π΅ΠΌ:
— Π΅ΡΠ»ΠΈ (ecx/cx) > 0, ΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π° ΠΌΠ΅ΡΠΊΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°;
— Π΅ΡΠ»ΠΈ (ecx/cx) = 0, ΡΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ loop ΠΊΠΎΠΌΠ°Π½Π΄Ρ
mov cx, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ²
ΠΌ1: ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°
loop m1
loope/loopz ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (Loop till cx <> 0 or Zero Flag = 0) — ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠΈΠΊΠ», ΠΏΠΎΠΊΠ° cx <> 0 ΠΈΠ»ΠΈ zf = 0.
loopne/loopnz ΠΌΠ΅ΡΠΊΠ°_ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° (Loop till cx <> 0 or Not Zero flag=0) — ΠΏΠΎΠ²ΡΠΎΡΠΈΡΡ ΡΠΈΠΊΠ» ΠΏΠΎΠΊΠ° cx <> 0 ΠΈΠ»ΠΈ zf = 1
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° loop, loope/loopz ΠΈ loopne/loopnz Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΡΠΎΡΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ (ΠΎΡ -128 Π΄ΠΎ +127 Π±Π°ΠΉΡ).
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ²
mov cΡ ,n ; Π² ΡΡ Π·Π°Π½ΠΎΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°
m1:
push cx
…
mov cx,n1; Π² ΡΡ Π·Π°Π½ΠΎΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°
m2:
ΡΠ΅Π»ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π°
loop m2
…
pop cx
loop m1
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° Ρ=1+2+3+…+n, n Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 10 000.
model small
.stack 100h
.data
yb dd ?
ym dw ?
s1 db 'Π²Π²Π΅Π΄ΠΈΡΠ΅ n', 10,13,'$'
.code
start:
mov ax,@data
mov ds, ax
mov dx, offset s1
mov ah, 09h
int 21h
mov cx, 3
m: shl bx, 4
mov ah, 01h
int 21h Π²Π²ΠΎΠ΄ΠΈΠΌ n Π² ΡΠ΅Π³ΠΈΡΡΡ bx
sub ax, 130h
add bx, ax
loop m
mov cx, bx
xor dx, dx
xor al, al
m1: add dx, cx ΡΡΠΈΡΠ°Π΅ΠΌ Ρ
jnc m2
mov al, 1
m2: loop m1
cmp al, 1
je m3
mov ym, dx
m3: mov yb, edx
mov ax, 4c00h
int 21h
end start
Π¦Π΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
(ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²)
Π¦Π΅ΠΏΠΎΡΠΊΠ° — ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π°ΠΉΡ, ΡΠ»ΠΎΠ²ΠΎ, Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠ΅ — ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΠΈΡΠ»Π°.
Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ-ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΌΠΈΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΡΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° — Π±Π°ΠΉΡΠΎΠΌ, ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ.
ΠΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π²ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π² ΠΏΠΎΠ»Π΅ [ΠΌΠ΅ΡΠΊΠΈ]. Π¦Π΅ΠΏΠΎΡΠ΅ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±Π΅Π· ΠΏΡΠ΅ΡΠΈΠΊΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. Π‘ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΎ.
rep (REPeat) — ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ, ΠΏΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ecx/cx Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΠ°Π²Π½ΡΠΌ 0. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ecx/cx Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ. Π’Π° ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π½ΠΎ Π±Π΅Π· ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ.
repe ΠΈΠ»ΠΈ repz (REPeat while Equal or Zero) — ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ecx/cx Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠ»Π°Π³ zf ΡΠ°Π²Π΅Π½ 1. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π½Π°ΡΡΡΠ°Π΅ΡΡΡ, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
repne ΠΈΠ»ΠΈ repnz (REPeat while Not Equal or Zero) — ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ecx/cx Π½Π΅ ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ ΠΈΠ»ΠΈ ΡΠ»Π°Π³ zf ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ. ΠΡΠΈ Π½Π΅Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΡΠ°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ.
Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π°Π΄ΡΠ΅Ρ_ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π°Π΄ΡΠ΅Ρ_ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° — ΠΏΠ°ΡΠ° ds:esi/si;
Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° — ΠΏΠ°ΡΠ° es:edi/di
ΠΠ°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠ°ΡΠ°ΡΡΠΈΠΉΡΡ Π²ΡΠ΅Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, — ΡΡΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΏΠΎΡΠΊΠΈ. ΠΡΡΡ Π΄Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
— ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΊ Π΅Π΅ ΠΊΠΎΠ½ΡΡ, ΡΠΎ Π΅ΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ²;
— ΠΎΡ ΠΊΠΎΠ½ΡΠ° ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΊ Π½Π°ΡΠ°Π»Ρ, ΡΠΎ Π΅ΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ².
Π¦Π΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ², Π°Π΄ΡΠ΅ΡΡΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π Π²ΠΎΡ Π·Π½Π°ΠΊ ΡΡΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ df (Direction Flag) Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ eflags/flags. Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° df ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π²ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ²:
cld (Clear Direction Flag) — ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ»Π°Π³ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ df = 0, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² esi/si ΠΈ edi/di Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡΡΡ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°) ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡΡΡ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ²;
std (Set Direction Flag) — ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»Π°Π³ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ df = 1, ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² esi/si ΠΈ edi/di Π±ΡΠ΄Π΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΡΡ (ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°) ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΈΠ΄ΡΠΈ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ².
Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ Π½Π°Π±ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
— Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° df Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π±ΡΠ΄ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ — Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ².
— ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ Π² ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΏΠ°ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ds:(e)si ΠΈ es: (e)di.
— ΠΠ°Π³ΡΡΠ·ΠΈΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡ ecx/cx ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅.
— ΠΡΠ΄Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ
movs Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌ, Π°Π΄ΡΠ΅Ρ_ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° (MOVe String) — ΠΏΠ΅ΡΠ΅ΡΠ»Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ;
movsb MOVe String Byte) — ΠΏΠ΅ΡΠ΅ΡΠ»Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π±Π°ΠΉΡ;
movsw (MOVe String Word) — ΠΏΠ΅ΡΠ΅ΡΠ»Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠ»ΠΎΠ²;
movsd (MOVe String Double word) — ΠΏΠ΅ΡΠ΅ΡΠ»Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ»ΠΎΠ².
ΠΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π±Π°ΠΉΡ, ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ· ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, Π² ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². Π ΠΏΡΠΈΠΌΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ db, ΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°ΡΡΡΡ Π±ΡΠ΄ΡΡ Π±Π°ΠΉΡΡ, Π΅ΡΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π±ΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ dd, ΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ΅ ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°.
ΠΠ»Ρ ΡΠ΅ΠΏΠΎΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°ΠΌΠΈ ΡΠΈΠΏΠ° movs Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Π°Π΄ΡΠ΅Ρ_ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΎΠ³Π°. ΠΡΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π΅Π΅ Π² ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΡΠ΅Ρ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄: movsb, movsw ΠΈΠ»ΠΈ movsd.
Π‘Π°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° movs ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· Π΅Π³ΠΎ ΡΠΈΠΏΠ°, ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² esi/si ΠΈ edi/di. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ rep, ΡΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ»Π°ΡΡ Π΄ΠΎ 64 ΠΠ±Π°ΠΉΡ Π΄Π°Π½Π½ΡΡ . Π§ΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½ΠΎ Π² ΡΡΠ΅ΡΡΠΈΠΊ — ΡΠ΅Π³ΠΈΡΡΡ cx (use16) ΠΈΠ»ΠΈ ecx (use32).
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΠΈ. ΠΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΡΡΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ movs
MODEL small
STACK 256
.data
source db 'Π’Π΅ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ°','$' ;ΡΡΡΠΎΠΊΠ°-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ
dest db 19 DUP (' ') ;ΡΡΡΠΎΠΊΠ°-ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊ
.code
main:
mov ax,@data ;Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²
mov ds, ax ;Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² DS ΠΈ ES Π½Π° Π°Π΄ΡΠ΅Ρ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ° Π΄Π°Π½Π½ΡΡ
mov es, ax
cld ;ΡΠ±ΡΠΎΡ ΡΠ»Π°Π³Π° DF — ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΡΡΠΎΠΊΠΈ ΠΎΡ Π½Π°ΡΠ°Π»Π° ΠΊ ΠΊΠΎΠ½ΡΡ
lea si, source ;Π·Π°Π³ΡΡΠ·ΠΊΠ° Π² si ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°
lea di, dest ;Π·Π°Π³ΡΡΠ·ΠΊΠ° Π² DS ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ-ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊΠ°
mov cx, 20 ;Π΄Π»Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° rep — ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ (Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ)
rep movs dest, source ;ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠ° ΡΡΡΠΎΠΊΠΈ
lea dx, dest
mov ah, 09h ;Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ ΡΡΡΠΎΠΊΠΈ-ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊΠ°
int 21h
mov ax, 4c00h
int 21h
end main
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ
cmps Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Π°Π΄ΡΠ΅Ρ_ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°(CoMPare String) — ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΡΠΎΠΊΠΈ;
cmpsb (CoMPare String Byte) — ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π±Π°ΠΉΡ;
cmpsw (CoMPare String Word) — ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ ΡΠ»ΠΎΠ²;
cmpsd (CoMPare String Double word) — ΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΡΠΎΠΊΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ»ΠΎΠ².
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cmps Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ (ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ-ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° — ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ-ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ) Π½Π°Π΄ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΎΠ±Π΅ΠΈΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ. ΠΡΠΈΠ½ΡΠΈΠΏ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cmps Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmp. ΠΠ½Π°, ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ cmp, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ»Π°Π³ΠΈ zf, sf ΠΈ of.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cmps, ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΡΡΡΡ esi/si ΠΈ edi/di Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π°Π³Π° df Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π²Π½ΠΎΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ.
Π§ΡΠΎΠ±Ρ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cmps Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΎ Π΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cmps ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ. Π‘ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cmps ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΡ repe/repz ΠΈΠ»ΠΈ repne/repnz:
— repe ΠΈΠ»ΠΈ repz — Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ: Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ ΠΊΠΎΠ½Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ (ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ecx/cx ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ) ΠΈΠ»ΠΈ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠ»Π°Π³ zf ΡΡΠ°Π» ΡΠ°Π²Π΅Π½ Π½ΡΠ»Ρ);
— repne ΠΈΠ»ΠΈ repnz — Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ°: Π½Π΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡ ΠΊΠΎΠ½Π΅Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ (ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ecx/cx ΡΠ°Π²Π½ΠΎ Π½ΡΠ»Ρ) ΠΈΠ»ΠΈ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ (ΡΠ»Π°Π³ zf ΡΡΠ°Π» ΡΠ°Π²Π΅Π½ Π΅Π΄ΠΈΠ½ΠΈΡΠ΅).
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ cmps
MODEL small
STACK 256
.data
sov db 0ah, 0dh,'Π‘ΡΡΠΎΠΊΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.','$'
nesov db 0ah, 0dh,'Π‘ΡΡΠΎΠΊΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ','$'
s1 db '123 456 789', 0ah, 0dh,'$';ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠ΅ ΡΡΡΠΎΠΊΠΈ
s2 db 10
s3 db 11 dup (0)
.code
main:
mov ax,@data ;Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ²
mov ds, ax
mov es, ax ;Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ES Π½Π° DS
;Π²Π²ΠΎΠ΄ΠΈΠΌ ΡΡΡΠΎΠΊΡ
mov ah, 0Π°h
mov dx, offset s2
int 21h
;ΠΏΠΎΠΈΡΠΊ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ±ΡΠΎΡ ΡΠ»Π°Π³Π° DF — ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠΎΠ²
cld
lea si, s1 ;Π·Π°Π³ΡΡΠ·ΠΊΠ° Π² si ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ string1
lea di, s3 ;Π·Π°Π³ΡΡΠ·ΠΊΠ° Π² di ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ string2
mov cx, 10 ;Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ° repe
repe cmpsb ;ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ (ΠΏΠΎΠΊΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΠΎΠΊ ΡΠ°Π²Π½Ρ)
;Π²ΡΡ ΠΎΠ΄ ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π²ΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
jcxz equal ;cx=0, ΡΠΎ Π΅ΡΡΡ ΡΡΡΠΎΠΊΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ
lea dx, nesov
jmp exit ;Π²ΡΡ ΠΎΠ΄
equal: lea dx, sov
exit: mov ah, 09h
int 21h ;Π²ΡΠ²ΠΎΠ΄ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
mov ax, 4c00h
int 21h
end main ;ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ
scas Π°Π΄ΡΠ΅Ρ_ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° (SCAning String) — ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ;
scasb (SCAning String Byte) — ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π±Π°ΠΉΡ;
scasw (SCAning String Word) — ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠ»ΠΎΠ²;
scasd (SCAning String Double Word) — ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ Π΄Π²ΠΎΠΉΠ½ΡΡ ΡΠ»ΠΎΠ²
ΠΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΈΡΠΊΠΎΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅Π³ΠΈΡΡΡΠ΅ al/ax/eax. ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΡ ΠΆΠ΅, ΡΡΠΎ ΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ cmps, ΡΠΎ Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ