ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросрСдств

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ОбмСн Π² Π΄Π°Π½Π½ΠΎΠΌ макросС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ XCHG, которая ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚ 2-Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (Π² Π½Π°ΡˆΠ΅ΠΌ случаС Π±Π°ΠΉΡ‚Π°). Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки, Ρ‚ΠΎ Π΅ΡΡ‚СствСнно Π½Π°Π΄ΠΎ произвСсти ΠΎΠ±ΠΌΠ΅Π½ N Π±Π°ΠΉΡ‚ΠΎΠ², Π³Π΄Π΅ N — Π΄Π»ΠΈΠ½Π° строк. Π’ Π΄Π°Π½Π½ΠΎΠΉ гипотСтичСской машинС число N Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° R0. ПослС опрСдСлСния адрСсов String1, String2 (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ адрСсов строк здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросрСдств (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Π Π€ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ государствСнноС Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования ИТСвский государствСнный тСхничСский унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ М. Π’. Калашникова ΠšΠ°Ρ„Π΅Π΄Ρ€Π° «Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°» .

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ программирования» .

Π½Π° Ρ‚Π΅ΠΌΡƒ: «ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросрСдств» .

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π» студСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ 4−36−1.

Π’Π°ΡΠΈΠ»ΡŒΠ΅Π² А.Π‘.

ΠŸΡ€ΠΈΠ½ΡΠ» ΠΊ.Ρ‚.Π½., Π΄ΠΎΡ†Π΅Π½Ρ‚ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ Π’Π’ Π“Π°Ρ„Π°Ρ€ΠΎΠ² Π .М.

ИТСвск 2012.

ОглавлСниС Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅.

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

3. Алгоритм.

4. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

5. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π’Ρ‹Π²ΠΎΠ΄ Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ЦСлью Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ являСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ стандартных макросрСдств ассСмблСра.

Π—Π°Π΄Π°Π½ΠΈΠ΅.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π³ΠΈΠΏΠΎΡ‚Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ макросрСдств ассСмблСра.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

1. Π€ΠΎΡ€ΠΌΠ°Ρ‚ слова: fw=24 Π±ΠΈΡ‚.

2. Число рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния: Nr=3.

3. Π€ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ Π“Πœ: Fk = {S1,S2; S, I}.

4. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅: Nop=2.

5. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ Π“Πœ для ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

k1: ΠΊΠΎΠΌΠ°Π½Π΄Π° сравнСния 2-Ρ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк Π½Π° >,=,<;

k2: ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ строками;

k3: ΠΊΠΎΠΌΠ°Π½Π΄Π° подсчСта количСства символов Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΉ строкС, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ прСпинания.

6. Π Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° Π³ΠΈΠΏΠΎΡ‚СтичСской машинС:

Π Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ слова Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΌ массивС Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС, ΡƒΠ±Ρ€Π°Π² Π·Π½Π°ΠΊΠΈ прСпинания ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΠ² слова запятыми. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ… Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ массивС.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅, Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ встрСчаСтся с Ρ€ΡΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. А ΠΈΠΌΠ΅Π½Π½ΠΎ:

1) ΠŸΠ»ΠΎΡ…ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, особСнно ΠΏΠΎ ΠΏΡ€ΠΎΡˆΠ΅ΡΡ‚Π²ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ;

2) ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… участков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

3) ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… участков ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ….

Если Π±Ρ‹ ΠΌΡ‹ ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌ языкС, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹ΠΌΠΈ. Но ΡΠ·Ρ‹ΠΊ ассСмблСра, являясь символичСским Π°Π½Π°Π»ΠΎΠ³ΠΎΠΌ машинного языка прСдставляСт ряд срСдств для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Одним ΠΈΠ· ΡΡ‚ΠΈΡ… срСдств ΡΠ²Π»ΡΡŽΡ‚ΡΡ макросрСдства. Под макросрСдствами ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ срСдства Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ программирования. Одним ΠΈΠ· ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ являСтся использованиС макросрСдств, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ тСкстом.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСра ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΎ, Ссли ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ «ΡΡ‚Π΅Π½ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ» часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². АссСмблСр обСспСчиваСт эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· макросрСдства. ΠœΠ°ΠΊΡ€ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой «ΡΡƒΠΏΠ΅Ρ€ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ ассСмблСр ΠΎΡ‚ Ρ‡Π°ΡΡ‚ΠΈ лишнСй ΠΈ Ρ‡Π°ΡΡ‚ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ассСмблСрной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ макросов программисты ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π±Π»ΠΎΠΊΠΈ ассСмблСрных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π° Π·Π°Ρ‚Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ссылки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ассСмблСру Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² Π² Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ВсС это позволяСт ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ассСмблСрной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΌΠΎΡ‰Π½ΠΎΡΡ‚ΡŒΡŽ языка высокого уровня.

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ РСшая Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросов сами макросы помСстим Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ макрос Π½Π°Π·ΠΎΠ²Π΅ΠΌ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ понятным, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ Π²Ρ‹Ρ€Π°ΠΆΠ°Π»ΠΎ Π±Ρ‹ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’.ΠΊ. Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ макросы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ названия Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… макросах ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ, Ρ‚ΠΎ Π²ΡΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ макросС объявим Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ LOCAL.

Π”Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ макрос выполнял свою Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π½Π΅ ΠΈΡΠΊΠ°ΠΆΠ°Π» Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ макроса рСгистры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ макросС, Π° ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ макроса Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ…. Для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ 2-Π° макроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‚ сохранСниС ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ рСгистров Π² ΡΡ‚Π΅ΠΊ.

ΠŸΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΡ‰Π΅. Π”Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

РазобьСм Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° 3-ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ:

1. Π’Π²ΠΎΠ΄ строки.

2. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строки.

3. Π’Ρ‹Π²ΠΎΠ΄ строки ΠŸΠ΅Ρ€Π²ΡƒΡŽ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ просто. А Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Π΅Ρ‰Π΅ Π±ΠΎΠ»Π΅Π΅ простыС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ сортировку слов, ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ² прСпинания, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ количСства символов Π² ΡΠ»ΠΎΠ²Π°Ρ…. Π’.ΠΎ. Ρ€Π°Π·Π±ΠΈΠ»ΠΈ 2-ΡƒΡŽ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Ρƒ Π΅Ρ‰Π΅ Π½Π° Ρ‚Ρ€ΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ потрСбуСтся Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ ΠΈ ΡΡ‚ΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅, Π½ΠΎ ΡΡ‚ΠΎ рассмотрим ΡƒΠΆΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Π’Π°ΠΆΠ½Ρ‹ΠΌ являСтся прСдставлСниС строки Π² Π΄Π°Π½Π½ΠΎΠΉ гипотСтичСской машинС. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ — Π΄Π»ΠΈΠ½Π° строки Π² Π±Π°ΠΉΡ‚Π°Ρ….

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π±Π°ΠΉΡ‚Ρ‹ — сама строка.

ПослСдний Π±Π°ΠΉΡ‚ — символ «$» ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° прСдлоТСния.

Π‘Ρ‚Ρ€ΠΎΠΊΠ° состоит максимум ΠΈΠ· 250 символов.

НС ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹ΠΌ являСтся организация Ρ‚Ρ€Π΅Ρ… рСгистров ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния..

Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 8 Π±ΠΈΡ‚, Ρ‚. Π΅. ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ эти рСгистры Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’Π°ΠΊ ΠΎΡ‡Π΅Π½ΡŒ интСнсивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСгистр R0. НапримСр Π² Π½Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒΡΡ максимальная Π΄Π»ΠΈΠ½Π° слова, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… цСлях.

Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ. Π”Π°Π»Π΅Π΅ создадим Π΅Ρ‰Π΅ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ.

Π—Π°Π΄Π°Ρ‡Π° поставлСна ΠΈ ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Ρ‹ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Для Π½Π°Ρ‡Π°Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ 3-ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹..

1. Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ 2-Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки. ΠœΠ°ΠΊΡ€ΠΎΡ CompareWords String1, String2.

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ CMPS (Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ), которая ΠΏΠΎ ΡΡƒΡ‚ΠΈ выполняСт Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ адрСса сравниваСмых элСмСнтов ΠΈ ΠΈΡ… Π΄Π»ΠΈΠ½Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт Ρ‚Ρ€ΡƒΠ΄Π°.

АдрСса ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ SI эффСктивного адрСса строки ΠΈ ΠΏΡ€ΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π½Π΅ΠΌΡƒ смСщСния ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° строки. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова. Аналогично Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Π² DI адрСс Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ слова.

Π’.ΠΊ. ΠΌΡ‹ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ Π±Π°ΠΉΡ‚, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ CMPSB.

Π”Π°Π»Π΅Π΅ остаСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ΠΈ стандартным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ.

2. ОбмСн Π΄Π²ΡƒΡ… ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк. ΠœΠ°ΠΊΡ€ΠΎΡ ChangeWords String1, String2.

ОбмСн Π² Π΄Π°Π½Π½ΠΎΠΌ макросС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ XCHG, которая ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅Ρ‚ 2-Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° (Π² Π½Π°ΡˆΠ΅ΠΌ случаС Π±Π°ΠΉΡ‚Π°). Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ строки, Ρ‚ΠΎ Π΅ΡΡ‚СствСнно Π½Π°Π΄ΠΎ произвСсти ΠΎΠ±ΠΌΠ΅Π½ N Π±Π°ΠΉΡ‚ΠΎΠ², Π³Π΄Π΅ N — Π΄Π»ΠΈΠ½Π° строк. Π’ Π΄Π°Π½Π½ΠΎΠΉ гипотСтичСской машинС число N Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π° R0. ПослС опрСдСлСния адрСсов String1, String2 (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ адрСсов строк здСсь ΠΈ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ описанному Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅), числа ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… символов приступаСм нСпосрСдствСнно ΠΊ ΠΎΠ±ΠΌΠ΅Π½Ρƒ ΠΏΡƒΡ‚Π΅ΠΌ зацикливания ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ XCHG Π½Π° R0 Ρ€Π°Π·. Π’Ρ‹Π±ΠΎΡ€ R0 Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ придСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹, просто ΠΊΠΎΠΌΠ°Π½Π΄Π° опрСдСлСния Π΄Π»ΠΈΠ½Ρ‹ слова Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΡΡ‚ΠΎΡ‚ рСгистр Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΠ±ΠΌΠ΅Π½Π° послС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ опрСдСлСния Π΄Π»ΠΈΠ½Ρ‹ слова, которая Π±ΡƒΠ΄Π΅Ρ‚ описана Π½ΠΈΠΆΠ΅.

3. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ слова. ΠœΠ°ΠΊΡ€ΠΎΡ WriteLenWords.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ слова Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ Π½Π΅ ΡΠΎΡΡ‚авляСт Ρ‚Ρ€ΡƒΠ΄Π° для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ адрСс Π½Π°Ρ‡Π°Π»Π° слова, завСсти счСтчик количСства Π±ΡƒΠΊΠ², Π° Π·Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ просматривая строку ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ируя счСтчик, ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° слова (Π·Π½Π°ΠΊ прСпинания). Π’ ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄Π»ΠΈΠ½Π° слова. Наша ΠΊΠΎΠΌΠ°Π½Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ.

ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ для выполнСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ этого Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Π»ΠΎ, поэтому Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π΅Ρ‰Π΅ нСсколько ΠΊΠΎΠΌΠ°Π½Π΄.

Как описали Π² ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ всю Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. Рассмотрим ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Ρƒ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

1. Π’Π²ΠΎΠ΄ строки.

Π’Π²ΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DOS Π²Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ПослС Π²Π²ΠΎΠ΄Π° строки ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π΅Π΅ ΠΊ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Для этого Π² ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния запишСм символ «$», Π° Π² Π½Π°Ρ‡Π°Π»ΠΎ — Π΄Π»ΠΈΠ½Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠ΅ΠΉΡΡ строки.

2. Π’Ρ‹Π²ΠΎΠ΄ строки.

Π’Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ DOS.

3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° строки.

Π­Ρ‚Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Π° являСтся самой Π³Π»Π°Π²Π½ΠΎΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ. Π‘ Ρ…ΠΎΠ΄Ρƒ Π΅Π΅ Π½Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, поэтому ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ функциями ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

— Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слов.

— Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ² прСпинания.

— Π—Π°ΠΏΠΈΡΡŒ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова значСния Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρ‹.

Π—Π°Π΄Π°Ρ‡ΠΈ удалСния Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ² прСпинания ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся слоТными ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ ΠΈΡ… Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ.

Рассмотрим Π·Π°Π΄Π°Ρ‡Ρƒ удалСния Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€Π΅ΠΏΠΈΠ½Π°Π½ΠΈΠΉ. Π­Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° макросом DeleteSign. Π Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠ² ΠΏΡ€Π΅ΠΏΠΈΠ½Π°Π½ΠΈΠΉ ΠΈ Π·Π°Ρ‚Π΅ΠΌ «ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ» ΠΈΡ… ΠΏΡƒΡ‚Ρ‘ΠΌ затирания Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π° ΡΡ‚ΠΈΠΌΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ этом Π½Π°Π΄ΠΎ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ строки Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π±Π°ΠΉΡ‚Π΅ строки. Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ символ запятой, Ρ‚.ΠΊ. это записано Π² Π·Π°Π΄Π°Π½ΠΈΠΈ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² прСпинания ΠΌΠΎΠΆΠ½ΠΎ пСрСсылая Π±Π°ΠΉΡ‚Ρ‹ с Π±ΡƒΠΊΠ²Π°ΠΌΠΈ Π½Π° ΠΌΠ΅ΡΡ‚ΠΎ Π±Π°ΠΉΡ‚ΠΎΠ² с ΠΏΡ€Π΅ΠΏΠΈΠ½Π°Π½ΠΈΡΠΌΠΈ.

Π’Π°ΠΊΡƒΡŽ пСрСсылку ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ MOVSB ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· сколько это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. Π’.ΠΎ. ΠΊΠΎΠΌΠ°Π½Π΄Π° DeleteSign Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ:

Найти Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова.

Π—Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ прСпинания ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ словом.

Найти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

Π—Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ прСпинания ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄ этим словом.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΏ. 4 ΠΏΠΎΠΊΠ° Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ вставки Π² ΠΊΠΎΠ½Π΅Ρ† слова значСния Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ достаточно просто Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠΠ΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдставляСт собой ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ числСнного значСния Π΄Π»ΠΈΠ½Ρ‹ слова Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ эквивалСнт. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли ΠΌΡ‹ ΡΠΌΠΎΠΆΠ΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π²ΡΡ‚Π°Π²ΠΊΡƒ этого символьного эквивалСнта ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнной записи ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… символов Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Π±Π°ΠΉΡ‚, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ слова ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Ρ‚Π΅Ρ€Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

Π”Π°Π»Π΅Π΅ проходя ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΈ Π½Π°Ρ…одя ΠΊΠΎΠ½Π΅Ρ† слова Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρƒ ΠΏΠΎΠΊΠ° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ся.

Рассмотрим ΠΊΠ°ΠΊ рСализуСтся Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ прСобразования числСнного значСния Π΄Π»ΠΈΠ½Ρ‹ слова Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ эквивалСнт.

Одним ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² прСобразования являСтся Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ‚. Π΅. ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ рСгистра R0 ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΈΠ· Π·Π°Ρ€Π°Π½Π΅Π΅ созданной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ эквивалСнт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ XLAT. Однако Ρ‚Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Но Π΅ΡΡ‚ΡŒ Ρƒ ΡΡ‚ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΈ ΡΠ²ΠΎΠΈ прСимущСства — Ρ‚Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ссли для записи ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ числа 16-ΠΎΠΉ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ систСмы счислСния, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символы Ρ†ΠΈΡ„Ρ€, Ρ‚ΠΎ ΡΡ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½.

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ (рСализуСтся Π² ΠΌΠ°ΠΊΡ€ΠΎΡΠ΅ WriteLenWords) Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ числа Π² 10-ΠΉ систСмС, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ наглядныС. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ производится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π² R0 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ 9, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ эквивалСнту достаточно Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΠ² ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ R0 число 4810 ΠΈΠ»ΠΈ 3016. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ASCII ΠΊΠΎΠ΄ числа. Если ΠΆΠ΅ Π² R0 число 2-ΡƒΡ… ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ разрядов, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ этого числа, Π½ΠΎ Π½Π΅ Π΄Π΅ΡΡΡ‚ΠΊΠΈ, сотни ΠΈ Ρ‚. Π΄. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ «Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ» ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ числа Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, дСсятки, сотни ΠΈ Ρ‚. Π΄. (Π² Π½Π°ΡˆΠ΅ΠΌ случаС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ дСсятки ΠΈ ΡΠΎΡ‚Π½ΠΈ, Ρ‚.ΠΊ. вся строка состоит ΠΈΠ· 250 символов идля прСдставлСния самого Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ слова понадобится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 3 Π·Π½Π°ΠΊΠ°).

А Ρ‚.ΠΊ. числа Π² 10-ΠΉ систСмС ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

Xn*10^N+…+X2*102+X1*101+X0*100=дСсятичноС число.

макросрСдство ассСмблСр Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π³Π΄Π΅ Π₯n — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа Π² N — ΠΎΠΌ Ρ€Π°Π·Ρ€ΡΠ΄Π΅.

N — разряд.

Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ дСлСния Π½Π° 1, 10 ΠΈ 100 Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π² ΠΎΡΡ‚Π°Ρ‚ΠΊΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹Π΅ разряды Xn. Π”Π°Π»Π΅Π΅ прибавляя ΠΊ Π½ΠΈΠΌ константу 3016 ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ символ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ основного ΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ слоТного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° — сортировка. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°». Π‘Π°ΠΌΠ° сортировка Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΌΠ°ΠΊΡ€ΠΎΡΠ΅ Sorting. Однако сам макрос ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ простых макросов, Ρ‚. Π΅. Π·Π°Π΄Π°Ρ‡Ρƒ сортировки ΠΌΡ‹ Ρ€Π°Π·Π±ΠΈΠ»ΠΈ Π½Π° Π±ΠΎΠ»Π΅Π΅ простыС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ.

Алгоритм сортировки ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ слСдущим ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

While Flag do.

Begin.

Flag:= false;

For i:=1 to (N-1) do.

if Word[i] > Word[i+1] then.

Begin.

ChangeWords Word[i], Word[i+1];

Flag:= true.

End;

End.

Π“Π΄Π΅ N — число элСмСнтов (слов).

Flag — Ρ„Π»Π°Π³ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° (Ссли всС «ΠΏΡƒΠ·Ρ‹Ρ€ΠΊΠΈ всплыли»).

Word — элСмСнты строки (слова).

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдставляСт Π½Π΅ ΡΠ°ΠΌ процСсс сортировки, ΠΈ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡ обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ сортировки — словам, Π° ΠΏΡ€ΠΎΡ†Π΅ΡΡ ΠΎΠ±ΠΌΠ΅Π½Π° слов, Ρ‚.ΠΊ. слова ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ChangeWords выполняСт ΠΎΠ±ΠΌΠ΅Π½ слов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ. Одним ΠΈΠ· Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² являСтся услоТнСниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΠ±ΠΌΠ΅Π½Π° слов. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд это Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ€Π΅ΡˆΠΈΠ² эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠΌ Π΅Ρ‰Π΅ нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’ Ρ‡Π°ΡΡ‚ности придСтся ввСсти Π΅Ρ‰Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚: ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ лишниС Π±ΡƒΠΊΠ²Ρ‹ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ слова ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ строку для записи Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΠΎΠ³ΠΎ слова. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ придСтся ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ, соотвСтствСнно, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ быстродСйствиС. ВмСсто всСго этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ — Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ всС слова «ΠΏΡ€ΠΈΠ²Π΅ΡΡ‚ΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ» ΠΏΡƒΡ‚Π΅ΠΌ добавлСния ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ слов ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π·Π½Π°ΠΊΠΎΠ² прСпинания. Π”Π»ΠΈΠ½Π° Ρ‚Π°ΠΊΠΎΠ³ΠΎ слова с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Π° Π΄Π»ΠΈΠ½Π΅ максимального слова Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅. БоотвСтствСнно ΠΊ ΡΠ°ΠΌΠΎΠΌΡƒ Π΄Π»ΠΈΠ½Π½ΠΎΠΌΡƒ слову Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π΅ Π½Π°Π΄ΠΎ. Π­Ρ‚ΠΈΠΌ самым ΠΌΡ‹ Π΄ΠΎΠ±ΠΈΠ»ΠΈΡΡŒ:

— ΠΠ΅ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ Π»ΠΈΡˆΠ½ΠΈΡ… символов.

— ΠΠ΅ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ся ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° слов.

— ΠŸΡ€ΠΎΡ†Π΅ΡΡ обращСния ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ сортировки (словам) Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ облСгчится, Ρ‚.ΠΊ. Π΄Π»ΠΈΠ½Π° всСх слов ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ отстоят Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ постоянноС число.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх слов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ осущСствляСтся макросом ToOneSize.

Алгоритм ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Ρ‹ слова, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ†Π° ΠΈ ΡΠ΄Π²ΠΈΠ³Π° Π²ΠΏΡ€Π°Π²ΠΎ строки Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ число Ρ€Π°Π²Π½ΠΎΠ΅ (Π΄Π»ΠΈΠ½Π° max слова-Π΄Π»ΠΈΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ слова), этим ΠΌΡ‹ ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ всС слова ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ. ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΌΡ‹ ΡƒΠ΄Π°Π»ΡΠ΅ΠΌ ΠΈΠ· ΡΡ‚Ρ€ΠΎΠΊΠΈ всС Π·Π½Π°ΠΊΠΈ прСпинания ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌ слова запятыми. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ сдвигС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ символ дублируСтся ΠΊΠ°ΠΊ символ запятой ΠΈ Π½Π΅Ρ‚ опасности «ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ слова» .

Π‘Π΄Π²ΠΈΠ³ осущСствляСтся макросом ShiftRight offset. Для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ указываСтся адрСс Π½Π°Ρ‡Π°Π»Π° сдвига. Π”Π°Π»Π΅Π΅ вычисляСтся количСство сдвигаСмых Π±Π°ΠΉΡ‚ΠΎΠ² ΠΈ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ MOVSB, производится сдвиг Π½Π° ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π²ΠΏΡ€Π°Π²ΠΎ.

Для нахоТдСния Π΄Π»ΠΈΠ½Ρ‹ максимального слова Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ макрос FindMaxLen. Алгоритм Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прост — ΠΎΠ½ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅Ρ‚ строку считая Π΄Π»ΠΈΠ½Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ слова ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ Π΅Ρ‘ Ρ Π΄Π»ΠΈΠ½ΠΎΠΉ максимального слова, Ссли Π΄Π»ΠΈΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ слова большС Π΄Π»ΠΈΠ½Ρ‹ максимального, Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ становится максимальной Π΄Π»ΠΈΠ½ΠΎΠΉ. Π”Π°Π»Π΅Π΅ максимальная Π΄Π»ΠΈΠ½Π° записываСтся Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ R0 ΠΈ ΠΊ Π½Π΅ΠΌΡƒ прибавляСтся число 5. 5 — это число 3-Ρ… Ρ†ΠΈΡ„Ρ€ ΠΈ 2-Ρ… скобок для записи Π² ΠΊΠΎΠ½Π΅Ρ† ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° сортировки. Π”Π°Π»Π΅Π΅ Π½Π°ΠΌ понадобятся Π΅Ρ‰Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Π°ΠΊ слоТны ΠΈ ΠΎΠ±ΡŠΠ΅ΠΌΠ½Ρ‹, поэтому ΠΌΡ‹ ΠΈΡ… Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ паскалСвский эквивалСнт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅.

Для Π½Π°Ρ‡Π°Π»Π° сортировки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ слова ΠΈ Ρ„Π»Π°Π³ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² 1 Ссли ΠΌΡ‹ Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ»ΠΈ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΠΌΠ΅Π½, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС всС «ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠΈ всплыли» ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π 1 ΠΈ Π 2 (ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стандартныС рСгистры, Π½ΠΎ Π΄Π»Ρ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ 2-Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅). Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ„Π»Π°Π³Π° Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Flag ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΅Π΅ Π² 1 Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ Π΅Π³ΠΎ просмотра. УстанавливаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ P1 Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово, Π° Π 2 Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ (Π 1+R0 Ρ‚.ΠΊ. Π² R0 Π΄Π»ΠΈΠ½Π° максимального слова). Π”Π°Π»Π΅Π΅ сравниваСм слова ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСм Π»ΠΈΠ±ΠΎ ΠΎΠ±ΠΌΠ΅Π½ Π»ΠΈΠ±ΠΎ ΠΈΡ‰Π΅ΠΌ дальшС. Для продолТСния сравнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π 1 ΠΈ Π 2 Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ слов, для этого присваиваСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π 1 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π 2, Π° ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π 2 прибавляСм R0. Π’Π°ΠΆΠ½Ρ‹ΠΌ являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π° строки, Ρ‚.ΠΊ. Π 2 ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ строки Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π½Π΅ ΡΡ‚ΠΎΠΈΡ‚ Π»ΠΈ Π 2 Π½Π° ΠΊΠΎΠ½Ρ†Π΅ строки. Для этого ΡƒΠ΄ΠΎΠ±Π½ΠΎ ввСсти макрос ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ½Ρ†Π° строки TestEnd offset. Он ΠΎΡΡƒΡ‰Π΅ΡΡ‚вляСт сравнСниС Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠ½Ρ†Π° строки «$». Если Π 2 стоит Π½Π° ΠΊΠΎΠ½Ρ†Π΅ строки, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΈ Π»ΠΈ Π·Π° ΡΡ‚ΠΎΡ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΠΌΠ΅Π½, Ссли Π΄Π°, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ «Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΏΡƒΠ·Ρ‹Ρ€Ρ‘ΠΊ» ΠΈΠ½Π°Ρ‡Π΅ сортировка Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°.

Рассмотрим Π΅Ρ‰Π΅ нСсколько макросов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

BeginProg — Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π—Π΄Π΅ΡΡŒ производится привязка сСгмСнтных рСгистров ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ сСгмСнтам.

EndProg — Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ DOS ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

PushReg — Π‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½Ρ‹Ρ… рСгистров.

PopReg < Registers list > - ВосстановлСниС ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Π½Ρ‹Ρ… рСгистров.

ReadString string — Π§Ρ‚Π΅Π½ΠΈΠ΅ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ строки для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

WriteString string — Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ строки Π½Π° ΡΠΊΡ€Π°Π½.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° рассмотрСны всС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π° рассмотрим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ReadString MyString, Π³Π΄Π΅ MyString — наша исходная строка. Π”Π°Π»Π΅Π΅ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС Π·Π½Π°ΠΊΠΈ прСпинания, ΡƒΠ΄Π°Π»ΠΈΠΌ ΠΈΡ… Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DeleteSign. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слова, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ этим ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ строку ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π½Π°ΠΉΠ΄Π΅ΠΌ Π΄Π»ΠΈΠ½Ρƒ максимального слова (ΠΊΠΎΠΌΠ°Π½Π΄Π° FindMaxLen) ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ всС слова ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ (ΠΊΠΎΠΌΠ°Π½Π΄Π° ToOneSize). Π’Π΅ΠΏΠ΅Ρ€ΡŒ отсортируСм слова (ΠΊΠΎΠΌΠ°Π½Π΄Π° Sorting). Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ‹ всСх слов (ΠΊΠΎΠΌΠ°Π½Π΄Π° WriteLenWords). ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ послС привСдСния всСх слов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ лишниС Π·Π½Π°ΠΊΠΈ прСпинания, здСсь ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ DeleteSign. Π—Π°Π΄Π°Ρ‡Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π΅ΡˆΠ΅Π½Π°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ запишСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

3. Алгоритм.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π²ΠΎΠ΄ строки для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ «Π»ΠΈΡˆΠ½ΠΈΡ…» Π·Π½Π°ΠΊΠΎΠ² прСпинания.

Поиск слова с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ слов ΠΊ «ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ» .

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова ΠΈ Π΅Π³ΠΎ запись Π² ΠΊΠΎΠ½Π΅Ρ† слова.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ «Π»ΠΈΡˆΠ½ΠΈΡ…» Π·Π½Π°ΠΊΠΎΠ² прСпинания.

Π’Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ΠŸΡ€ΠΈ запускС Ρ„Π°ΠΉΠ»Π° Course. exe Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ строку:» Π½Π°Π±ΠΈΡ€Π°Π΅ΠΌ:

apple, melon astrachansky, african banana, armenian peachs are fruits.

" ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ строка: «.

african[007], apple[005], are[003], armenian[008], astrachansky[012], banana[006], fruits[006], melon[005], peachs[006],.

По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

5. Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

;///////////////////////////////////////////////////////////////////////////////////////////.

:// Листинг основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

;//Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слов с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΡ… Π΄Π»ΠΈΠ½Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠ² прСпинания.

;///////////////////////////////////////////////////////////////////////////////////////////.

INCLUDE Macros. inc ;Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° макросов.

InitRealComputer; настройка Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Π­Π’Πœ.

; Π΄Π²Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π“Πœ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ Π­Π’Πœ.

CODE SEGMENT ;Начало ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ сСгмСнта.

START ;ΠΠΠ§ΠΠ›Πž ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«.

WriteString MessageIn ;Π’Ρ‹Π²ΠΎΠ΄ строки ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡ.

ReadString MyString ;Π’Π²ΠΎΠ΄ строки для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

DeleteSign ;Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ «Π»ΠΈΡˆΠ½ΠΈΡ…» Π·Π½Π°ΠΊΠΎΠ² прСпинания.

FindMaxLen ;Поиск слова с MAX Π΄Π»ΠΈΠ½ΠΎΠΉ.

ToOneSize ;ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх слов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ.

Sorting ;Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слов.

WriteLenWords ;ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ слова.

;ΠΈ запись этого значСния Π² ΠΊΠΎΠ½Π΅Ρ† слова.

DeleteSign ;Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ «Π»ΠΈΡˆΠ½ΠΈΡ…» Π·Π½Π°ΠΊΠΎΠ² прСпинания.

;послС привСдСния слов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ.

WriteString MessageOut ;Π’Ρ‹Π²ΠΎΠ΄ строки сообщСния ΠΎΠ± ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Writestring MyString ;Π’Ρ‹Π²ΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ строки.

FINISH ;ΠšΠžΠΠ•Π¦ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«.

CODE ENDS ;ΠšΠΎΠ½Π΅Ρ† ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠ³ΠΎ сСгмСнта.

DATA SEGMENT ;Начало сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ….

MessageIn db 15, 'Π’Π²Π΅Π΄ΠΈΡ‚Π΅ строку:', '$' ;Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅-'ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅'.

MessageOut db 20, 'ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Π°Ρ строка:', '$' ;Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅-'Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°'.

MyString db 249 dup (0), '$' ;Π‘Ρ‚Ρ€ΠΎΠΊΠ° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

R0 db 0h; РСгистры.

R1 db 0h; ΠΎΠ±Ρ‰Π΅Π³ΠΎ.

R2 db 0h; назначСния.

Flag db 0h ;Π€Π»Π°Π³ сортировки.

P1 db 0h ;ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»ΠΎΠ²ΠΎ.

P2 db 0h ;Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»ΠΎΠ²ΠΎ.

DATA ENDS ;ΠšΠΎΠ½Π΅Ρ† сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ….

END.

;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

;\ Листинг ΠΌΠ°ΠΊΡ€ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ„Π°ΠΉΠ»Π° Course. asm ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

InitRealComputer MACRO.

.286.

fw = 24; Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ слова Π“Πœ; fw = 8.255.

fb = 8; Ρ€Π°Π·Ρ€ΡΠ΄Π½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚Π°.

EndLine EQU 10,13,'$'; ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅.

EndSTR EQU ' ','$'; ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ½Ρ†Π° строки.

ENDM.

;——————————————————————————————-;

CONSTsection MACRO.

ENDM.

;——————————————————————————————-;

STACKsection MACRO n; описаниС стСка.

Stack1 SEGMENT STACK.

dw n*kByte dup (?).

Stack1 ENDS.

ENDM.

;——————————————————————————————-;

DATAsection MACRO; описаниС сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ….

Data1 SEGMENT.

ENDM.

;——————————————————————————————-;

ENDdata MACRO; описаниС ΠΊΠΎΠ½Ρ†Π° сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ….

Data1 ENDS.

ENDM.

;——————————————————————————————-;

CODEsection MACRO; описаниС сСгмСнта ΠΊΠΎΠ΄Π°.

Code1 SEGMENT.

ENDM.

;——————————————————————————————-;

FINISH MACRO; описаниС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ret.

COURSE endp.

ENDM.

;——————————————————————————————-;

ENDcode MACRO; описаниС ΠΊΠΎΠ½Ρ†Π° сСгмСнта ΠΊΠΎΠ΄Π°.

Code1 ENDS.

END COURSE.

ENDM.

;********Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹**********************************.

START Macro.

assume cs: code, ds: data ;ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° сСгмСнтных рСгистров.

mov ax, data ;

mov ds, ax ;Π’ DS-адрСс сСгмСта Π΄Π°Π½Π½Ρ‹Ρ….

EndM.

;********Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹************************************.

FINISH Macro.

mov ax, 4C00h ;Ѐункция DOS.

int 21h ;Π—Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

EndM.

;********Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° слов ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡƒΠ·Ρ‹Ρ€ΡŒΠΊΠ°'**************************.

Sorting macro.

Local Mbegin, MCMP, MNext, MExit, m0.

pushreg < ax, bx > ;Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ старыС значСния рСгистров.

mov al, R0 ;AL=R0 (Π’ R0 Π΄Π»ΠΈΠ½Π° максимального слова).

inc al ;ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ Π·Π½Π°ΠΊ ', '.

mov Flag, 1 ;установка Ρ„Π»Π°Π³Π° ΠΎΠ±ΠΌΠ΅Π½Π° слов.

Mbegin: ;

Cmp Flag, 1 ;ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π»ΠΈ строки?

je m0 ;Π”Π°ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.

jmp far ptr MExit ;НСт-Π’Ρ‹Ρ…ΠΎΠ΄.

m0: mov Flag, 0 ;

mov P1, 1 ;ЗанСсСниС Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ адрСсов.

;сравниваСмых.

mov P2, 1 ;слов.

add P2, al ;

MCMP: TestEnd P2 ;Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π 2 Π½Π° ΠΊΠΎΠ½Π΅Ρ†Π΅ прСдлоТСния?

je MBegin ;Π”Π° -'ΠΏΡƒΠ·Ρ‹Ρ€Π΅ΠΊ всплыл', ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.

;НСт;

CompareWords P1, P2; сравниваСм слова.

jbe MNext; Ссли мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.

; ΠΈΠ½Π°Ρ‡Π΅.

mov bl, P2 ;

mov bh, P1 ;

ChangeWords bh, bl; мСняСм слова мСстами.

mov ah, P2; P2 Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

mov P1, ah; P1=P2.

add P2, al ;

mov Flag, 1; Π€Π»Π°Π³ ΠΎΠ±ΠΌΠ΅Π½Π° ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ.

jmp MCMP; ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ.

MNext:

mov ah, P2 ;P2 Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

mov P1, ah ;P1=P2.

add P2, al ;

jmp MCMP ;ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ.

MExit: ;Π’Ρ‹Ρ…ΠΎΠ΄.

popreg < bx, ax > ;ВосстановлСниС рСгистров.

EndM.

;********ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния****************************.

TestEnd macro ofset.

pushreg ;Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ старыС значСния рСгистров.

lea si, MyString ;Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ адрСс Π½Π°Ρ‡Π°Π»Π° строки.

xor bx, bx ;ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° BX.

mov bl, ofset ;Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ адрСс элСмСнта ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

add si, bx ;

cmp byte ptr[si], '$' ;CΡ€Π°Π²Π½ΠΈΡ‚ΡŒ элСмСнт с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠ½Ρ†Π°.

popreg ;ВосстановлСниС рСгистров.

EndM.

;********Π‘Π΄Π²ΠΈΠ³ строки Π²ΠΏΡ€Π°Π²ΠΎ*************************************.

ShiftRight macro ofset.

pushreg.

mov bx, ofset ;Π‘ ΠΊΠ°ΠΊΠΎΠ³ΠΎ элСмСнта ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ.

dec bx.

lea di, MyString ;АдрСс сдвигаСмой строки.

mov si, di ;

inc di ;

xor ch, ch ;

mov cl, byte ptr[si] ;Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π»ΠΈΠ½Ρ‹ строки.

inc cx ;

mov byte ptr[si], cl ;Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρƒ строки, Ρ‚.ΠΊ.сдвинСм Π΅Π΅.

; Π²ΠΏΡ€Π°Π²ΠΎ.

add di, cx ;ВычисляСм Π½ΠΎΠ²Ρ‹Π΅ значСния DI ΠΈ SI.

add si, cx ;

sub cx, bx ;ВычисляСм ΠΊΠΎΠ»-Π²ΠΎ сдвигаСмых символов.

push ds ;CΠΎΠ²ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ сСгмСнтых рСгистров.

pop es ;DS ΠΈ ES.

std.

rep movsb ;Π‘Π΄Π²ΠΈΠ³ строки.

popreg ;

EndM.

;******ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ всСх слов ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ «Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ» *********************.

ToOneSize macro.

local tos0, tos1, tos2, tos3, tosend.

pushreg.

lea si, MyString ;Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° строки.

mov dh, byte ptr[si] ;Π”Π»ΠΈΠ½Π° строки.

inc si ;

mov di, si ;строка-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ.

mov dl, R0 ;в R0- max длина слова.

TOS0:

xor cx, cx ;ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° CX.

dec cl ;ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°.

TOS1:

inc cl ;считаСм ΠΊΠΎΠ»-Π²ΠΎ Π±ΡƒΠΊΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰.словС.

cld ;

lodsb ;Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² AL Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ символ.

dec dh ;отслСТиваСм ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

jz tosend ;Ссли ΠΊΠΎΠ½Π΅Ρ† ΠΏΡ€Π΅Π΄Π»ΠΎΠΆ-я Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄.

cmp cl, dl ;Ссли Π΄Π»ΠΈΠ½Π° слова Π½Π΅ Ρ€Π°Π²Π½Π° max Π΄Π»ΠΈΠ½Π΅.

jne TOS2 ;Ρ‚ΠΎ вставляСм символы ', '.

xor cl, cl ;ΠΈΠ½Π°Ρ‡Π΅ пропускаСм.

inc si ;ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ просмотр дальшС.

jmp TOS1 ;

TOS2:

cmp al, ', ' ;Ссли Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† слова.

jne TOS1 ;Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° Ρ‚Π΅ΠΊΡƒΡ‰. слова Π΅ΡΡ‚ΡŒ MAX ΠΈ Ρ‚ΠΎΠ³Π΄Π°.

;ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ просмотр

mov bx, si ;ВычисляСм смСщСниС ΠΎΡ‚ΠΊΡƒΠ΄Π° Π±ΡƒΠ΄Π΅ΠΌ.

sub bx, di ;ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ строку.

mov ch, dl ;ВычисляСм количСство сдвигов.

sub ch, cl ;

xchg ch, cl ;

xor ch, ch ;

add si, cx ;И Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SI-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Ρ€ΠΎΠΊΡƒ.

TOS3: ShiftRight bx ;сдвигаСм Π‘Π₯ Ρ€Π°Π· со ΡΠΌΠ΅Ρ‰. Π’Π₯.

loop TOS3 ;

jmp TOS0.

TOSEND:

popreg.

EndM.

;******Поиск слова с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½ΠΎΠΉ***************************.

FindMaxLen macro.

local Start, End, MaxOrNo, No.

pushreg.

lea si, MyString ;Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ строки.

mov cl, [si] ;Кол-во символов.

xor ch, ch ;

xor bx, bx ;

inc si ;

cld ;

Start: ;Π˜Ρ‰Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ слово.

lodsb.

cmp al, '$' ;Если ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

je MaxOrNo ;ΠΈΠ»ΠΈ.

cmp al, ', ' ;ΠΊΠΎΠ½Π΅Ρ† слова.

je MaxOrNo ;Ρ‚ΠΎ провСряСм Π½Π° MAX Π΄Π»ΠΈΠ½Ρƒ.

inc bl ;ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠΈΠ½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ число Π±ΡƒΠΊΠ² Π² ΡΠ»ΠΎΠ²Π΅.

loop Start ;ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

jmp End ;

MaxOrNo:

cmp bl, bh ;сравниваСм Π½Π° MAX Π΄Π»ΠΈΠ½Ρƒ.

jbe No ;Ссли Ρ‚Π΅ΠΊΡƒΡ‰. Π΄Π»ΠΈΠ½Π° большС Ρ‡Π΅ΠΌ MAX’ая.

mov bh, bl ;Ρ‚ΠΎ MAX=Ρ‚Π΅ΠΊΡƒΡ‰.

No:

xor bl, bl ;ΠΈΠ½Π°Ρ‡Π΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ счСтчик Π±ΡƒΠΊΠ².

jmp Start ;ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ.

End:

mov R0, bh ;ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π² R0 MAX Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Add R0, 05h ;ΠŸΡ€ΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ Max Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ 5(2 скобки ΠΈ 3.

; Ρ†ΠΈΡ„Ρ€Ρ‹).

popreg.

EndM.

;******Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ «Π»ΠΈΡˆΠ½ΠΈΡ…» Π·Π½Π°ΠΊΠΎΠ² прСпинания**************************.

DeleteSign macro.

local Start, beg, end, m0, m1, m2.

Pushreg.

lea si, Mystring ;Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° строки.

mov cl, byte ptr[si] ;Кол-Π²ΠΎ Π±ΡƒΠΊΠ² Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅.

inc cl ;ΠΈΠ½ΠΊΡ€.Ρ‚.ΠΊ.Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ символ.

mov byte ptr[si], cl ;

mov di, si ;строка-ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ.

xor ch, ch ;

add di, cx ;На ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

mov byte ptr [di-1], ', ' ;запись Π² ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния ', '.

mov byte ptr[di], '$' ;ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΊΠΎΠ½Ρ†Π° прСдлоТСния.

inc si ;Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ строки.

mov di, si ;

push ds ;Π‘ΠΎΠ²ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ рСгистров.

pop es ;

;Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΠΊΠΎΠ² прСпинания Ссли.

Start: ;Π½Π΅Ρ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ слова.

lodsb; Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° символа строки.

cmp al, ' '; Поиск Π·Π½Π°ΠΊΠΎΠ² прСпинания.

je m0 ;

cmp al, '.' ;

je m0 ;

cmp al, ',' ;

je m0 ;

push cx ;

push di ;

dec si; ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°.

rep movsb; «Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅» символов.

pop di.

pop cx.

dec di.

jmp Beg.

m0: loop Start.

;Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅ΠΏΠΈΠ½Π°Π½ΠΈΠΉ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈ.

Beg: ;ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… слов.

mov si, di.

inc di.

lodsb.

cmp al, ' ' ;Поиск Π·Π½Π°ΠΊΠΎΠ² прСпинания.

je m1.

cmp al, '.'.

je m1.

cmp al, ','.

je m1.

loop Beg.

jmp End.

m1:

lodsb.

cmp al, ' ' ;Поиск Π·Π½Π°ΠΊΠΎΠ² прСпинания.

je m2.

cmp al, '.'.

je m2.

cmp al, ','.

je m2.

push cx.

push di.

mov byte ptr[di-1], ',' ;запись Π² ΠΊΠΎΠ½Π΅Ρ† слова ', '.

dec si ;ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠ°.

rep movsb ;" Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅" ΠΏΡ€Π΅ΠΏΠΈΠ½Π°Π½ΠΈΠΉ.

pop di.

pop cx.

jmp beg.

m2: loop m1.

End: popreg.

ENDM.

;******Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ слов********************************************.

CompareWords macro FirstWord, SecondWord.

pushreg.

lea si, Mystring ;Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° строки.

mov di, si.

push ds.

pop es.

xor ch, ch.

mov cl, FirstWord ;ВычислСниС Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ.

add si, cx ;ΠΈ.

xor ch, ch ;Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ.

mov cl, SecondWord ;слов.

add di, cx ;

xor ch, ch.

mov cl, R0 ;Π΄Π»ΠΈΠ½Π° Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ.

cld.

repe cmpsb ;продвигаСмся ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅.

popreg.

ENDM.

;*****ΠžΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ слова********************************************.

ChangeWords macro First, Second.

local mLoop.

pushreg.

lea si, MyString ;Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° строки.

mov di, si ;

xor ch, ch ;

mov cl, First ;вычислСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ.

add si, cx ;ΠΈ.

xor ch, ch ;Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ.

mov cl, Second ;слов.

add di, cx ;

xor ch, ch ;

mov cl, R0 ;длина слов.

mLoop:

mov al, byte ptr[si] ;Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… символов.

mov ah, byte ptr[di] ;

xchg al, ah ;ΠΎΠ±ΠΌΠ΅Π½.

mov byte ptr[si], al ;

mov byte ptr[di], ah ;сохранСниС обмСняных символов.

inc si ;

inc di ;

loop mLoop ;ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΊΠΎΠ½Π΅Ρ† слов.

popreg.

EndM.

;*****CΡ‡ΠΈΡ‚Ρ‹Π²Π°Π½ΠΈΠ΅ строки с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹******************************.

ReadString macro RdStr.

local m1.

lea dx, RdStr ;адрСс строки DS: DX.

mov bx, dx.

mov byte ptr[bx], 250 ;MAX число Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… символов.

mov ah, 0ah ;Ѐукция DOS Π²Π²ΠΎΠ΄Π° строки.

int 21h ;Π²Ρ‹Π·ΠΎΠ² прСрывания.

;пропуск 1-Π³ΠΎ Π±Π°ΠΉΡ‚Π° ΠΈ Π·Π°ΠΏΠΈΡΡŒ Π² ΠΊΠΎΠ½Π΅Ρ†.

; прСдлоТСния символа $.

lea bx, RdStr ;Π² bx Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ адрСсс строки.

inc byte ptr[bx+1] ;ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ символ ΠΊΠΎΠ½Ρ†Π° строки '$'.

mov cl, [bx+1] ;заносим Π² ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊ количСство символов.

xor ch, ch; строки.

m1: mov al, [bx+1] ;сдвиг символов Π²ΠΏΡ€Π°Π²ΠΎ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

mov [bx], al.

inc bx ;ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€Π΅ символов.

loop m1.

mov al, '$' ;заносим Π² ΠΊΠΎΠ½Π΅Ρ† строки символ '$'.

mov byte ptr[bx], al.

;ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 2-Ρ… символов.

;13 — ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΈ 10 Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ.

mov ah, 2h ;Ѐункция DOS Π²Ρ‹Π²ΠΎΠ΄Π° символа.

mov dl, 13 ;Π² dl Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ся ΠΊΠΎΠ΄ символа.

int 21h.

mov dl, 10.

int 21h.

EndM.

;****Π’Ρ‹Π²ΠΎΠ΄ строки Π½Π° ΡΠΊΡ€Π°Π½*****************************************.

WriteString macro WrStr.

mov ah, 09h ;Ѐункция DOS Π²Ρ‹Π²ΠΎΠ΄Π° строки.

lea dx, WrStr ;ссылка Π½Π° ΡΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅.

inc dx ;пропускаСм Π΄Π»ΠΈΠ½Ρƒ строки.

int 21h ;вывСсти сообщСниС Π½Π° ΡΠΊΡ€Π°Π½.

;ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ 2-Ρ… символов.

;13 — ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΈ 10 Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ.

mov ah, 2h ;Ѐункция DOS Π²Ρ‹Π²ΠΎΠ΄Π° символа.

mov dl, 13 ;Π² dl Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ся ΠΊΠΎΠ΄ символа.

int 21h.

mov dl, 10.

int 21h.

EndM.

;******Вставка Π² ΠΊΠΎΠ½Π΅Ρ† слов значСния ΠΈΡ… Π΄Π»ΠΈΠ½*************************.

WriteLenWords macro.

local m0, m1, m2, m3, m4, m5, mend.

pushreg.

lea si, mystring ;Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π² SI адрСс строки.

inc si.

mov di, si.

xor bx, bx.

mov bl, R0 ;R0-MAX Π΄Π»ΠΈΠ½Π°.

add di, bx ;di-cΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

inc di.

m0: xor cx, cx ;

mov cl, R0 ;занСсСниС Π² ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊ.

m1: cld ;

lodsb ;Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ элСмСнта строки.

cmp al, '$' ;Ссли ΠΊΠΎΠ½Π΅Ρ† прСдлоТСния.

je mend; Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄.

cmp al, ', ' ;Ссли нашли ΠΊΠΎΠ½Π΅Ρ† слова.

jne m2; Ρ‚ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅ΠΌ.

sub bx, cx; число Π±ΡƒΠΊΠ² Π² ΡΠ»ΠΎΠ²Π΅.

jz m5; Ссли 0 Ρ‚ΠΎ ΠΈΡ‰Π΅ΠΌ слСд.слово.

jmp m3; ΠΈΠ½Π°Ρ‡Π΅ записываСм Π² ΠΊΠΎΠ½Π΅Ρ† Π΄Π»ΠΈΠ½Ρƒ слова.

m2: loop m1.

m3: dec si ;ΠΊΠΎΠ½Π΅Ρ† слова.

mov byte ptr [si], '[' ;ВставляСм.

mov byte ptr [si+4], ']' ;скобки и.

mov byte ptr[si+5], ', ' ;Π·Π½Π°ΠΊ запятой Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ.

mov al, bl ;AL-длина слова.

mov bl, 0Ah ;BL-число 10.

add si, 3 ;ВстаСм Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ символ числа Π΄Π»ΠΈΠ½Ρ‹.

mov cx, 3 ;Число Π΄Π΅Π»Π΅Π½ΠΈΠΉ — 3 Ρ‚.ΠΊ.3 Ρ†ΠΈΡ„Ρ€Ρ‹.

m4: xor ah, ah ;ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌ остаток ΠΎΡ‚ Π΄Π΅Π»Π΅Π½ΠΈΡ.

div bl ;Π”Π΅Π»ΠΈΠΌ AL Π½Π° 10 (AH-остаток, AL-число).

add ah, 30h ;ΠŸΡ€ΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ ΠΎΡΡ‚Π°Ρ‚ΠΊΡƒ ΠΊΠΎΠ΄ нуля'0'.

;Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ASCII ΠΊΠΎΠ΄ Ρ†ΠΈΡ„Ρ€Ρ‹.

mov byte ptr[si], ah ;ВставляСм Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ символ.

dec si ;БдвигаСмся Π²Π»Π΅Π²ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ символ.

loop m4 ;ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π°.

m5: mov si, di ;si-ставим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ слово.

xor ch, ch ;

mov bl, R0 ;

add di, bx ;di-Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ послС si ΡΠ»ΠΎΠ²ΠΎ.

inc di.

jmp m0 ;ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ вставку Π΄Π»ΠΈΠ½.

mend:

popreg.

EndM.

;*****ЗанСсСниС Π² ΡΡ‚Π΅ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рСгистров**************************.

PushReg macro Reglist.

Irp Reg, ;ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Reg ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° RegList.

push Reg.

EndM.

EndM.

;*****Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рСгистров************************.

PopReg macro Reglist.

Irp Reg, ;ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Reg ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° RegList.

pop Reg.

EndM.

EndM.

;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

;\ ΠšΠžΠΠ•Π¦ ЀАЙЛА \.

;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\.

Π’Ρ‹Π²ΠΎΠ΄ ПослС выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ использованиС макросрСдств Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс программирования, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΡ…одится нСсколько Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° ΡΡ‚ΠΎΠΌ, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠ΅Ρ€Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π­Π’Πœ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π½Π°ΡˆΠ΅ΠΌ случаС, Ρ€Π°Π±ΠΎΡ‚Ρƒ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ со ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

Однако ΠΏΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ ΠΌΠ°ΠΊΡ€ΠΎΡΠΎΠ² ΠΎΠ½ΠΈ Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ΅ быстродСйствиС.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΏΠΎΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ: большиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ рСкомСндуСтся ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Π° ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΠ΅ — ΠΊΠ°ΠΊ макросы.

1. Π“Π°Ρ„Π°Ρ€ΠΎΠ² Π . М. ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ указания для выполнСния курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ «ΠœΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ гипотСтичСской ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ макросрСдств ассСмблСра» ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π’Схнология программирования», ΠΈΠ·Π΄.:Π˜ΠΆΠ“Π’Π£, 2010 Π³., 49с.

2. Π’. Н. ΠŸΠΈΠ»ΡŒΡ‰ΠΈΠΊΠΎΠ² «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ассСмблСра IBM PC» — М.: «Π”ΠΈΠ°Π»ΠΎΠ³-МИЀИ», 1998 Π³.

3. АбСль А. П. «Π―Π·Ρ‹ΠΊ АссСмблСра для IBM PC ΠΈ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ» — М.:Π’Ρ‹ΡΡˆΠ°Ρ школа, 1992 Π³.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ