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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° машинно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС

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

Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты языка АссСмблСра ΠΈ Π­Π’Πœ Π² Ρ†Π΅Π»ΠΎΠΌ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования Π‘ΠΈ, АссСмблСр УМ ΠΈ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€ IBM PC, составлСны Π±Π»ΠΎΠΊ-схСмы этих Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ·Ρ‹ΠΊΠΎΠ² программирования. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° машинно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΡƒΡ€ΡΠΎΠ²Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ языкС ОглавлСниС Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

1. БистСмный Π°Π½Π°Π»ΠΈΠ·

2. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ программирования. Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ int, float

3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

3.1 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ УМ

3.2 ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ IBM

3.3 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования АссСмблСр IBM Π Π‘

4. ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

5. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

6. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Бписок использованной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ассСмблСр язык ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π―Π·Ρ‹ΠΊ ассСммблСра (Π°Π½Π³Π». assembly language) — машинно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности Π²Ρ€ΠΎΠ΄Π΅ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄ [1]; Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ конструкциями языков программирования высокого уровня, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ выраТСния, ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, срСдства обСспСчСния ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

Автокод — язык программирования, прСдлоТСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ структурС Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ машинного языка.

Π―Π·Ρ‹ΠΊ ассСмблСра — систСма ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для прСдставлСния Π² ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, записанных Π² ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π―Π·Ρ‹ΠΊ ассСмблСра позволяСт программисту ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½Ρ‹ΠΌΠΈ мнСмоничСскими ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡƒ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ символичСскиС ΠΈΠΌΠ΅Π½Π° рСгистрам Π­Π’Πœ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ для сСбя схСмы адрСсации (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡƒΡŽ ΠΈΠ»ΠΈ ΠΊΠΎΡΠ²Π΅Π½Π½ΡƒΡŽ). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ систСмы счислСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ) для прСдставлСния числовых констант ΠΈ Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ строки ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ с ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ (ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ, Π° Π½Π΅ ΠΏΠΎ адрСсам) ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ управлСния).

ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ассСмблСра Π² ΠΈΡΠΏΠΎΠ»Π½ΠΈΠΌΡ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ (вычислСниС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, раскрытиС ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄, Π·Π°ΠΌΠ΅Π½Π° ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊ собствСнно ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… адрСсов Π½Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ адрСса) производится ассСмблСром — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ-транслятором, которая ΠΈ Π΄Π°Π»Π° языку ассСмблСра Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ языка ассСмблСра ΠΎΠ΄ΠΈΠ½ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ процСссора. ЀактичСски, ΠΎΠ½ΠΈ ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ записи — ΠΌΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄Ρ‹ — ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΈ этом ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ языка ассСмблСра ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ процСссора.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, язык ассСмблСра позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ символичСскиС ΠΌΠ΅Ρ‚ΠΊΠΈ вмСсто адрСсов ячССк памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈ ассСмблировании Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ΅ΠΌΡ‹Π΅ ассСмблСром ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ адрСса, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ (ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра, Π½Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора, Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡ‹Π΅ самим ассСмблСром).

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ ассСмблСра ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚, Π² Ρ‡Π°ΡΡ‚ности, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Π·Π°Π΄Π°Ρ‚ΡŒ ассСмблированиС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Π·Π°Π΄Π°Ρ‚ΡŒ значСния ΠΌΠ΅Ρ‚ΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

КаТдая модСль (ΠΈΠ»ΠΈ сСмСйство) процСссоров ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ — систСму — ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ язык ассСмблСра. НаиболСС популярныС синтаксисы языков ассСмблСра — Intel-синтаксис ΠΈ AT&T-синтаксис.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ машинного язык программирования высокого уровня (Π€ΠΎΡ€Ρ‚, Лисп, Эль-76). ЀактичСски, Π² Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Ρ€ΠΎΠ»ΡŒ языков ассСмблСра.

1. БистСмный Π°Π½Π°Π»ΠΈΠ·

ЦСлью курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСра. ΠšΡƒΡ€ΡΠΎΠ²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ выполняСтся Π² ΡΠΎΠΎΡ‚вСтствии с ΡΡ‚Π°ΠΏΠ°ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния: Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Π­Π’Πœ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΈ Ρ‚СстированиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСдСтся Π² ΡΠΎΠΎΡ‚вСтствии с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ структурного программирования.

ВрСбуСтся Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (1):

(1)

НСобходимо Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π΅Ρ‘ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… Π‘ΠΈ, АссСмблСр УМ ΠΈ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€ IBM PC. Π‘ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ вводятся 2 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ массива, послС выполняСтся расчСт 2 констант 2c ΠΈ (a*a+1) Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ€Π°ΡΡ‡Π΅Ρ‚ z. Π”Π°Π»Π΅Π΅ выполняСтся Π²Ρ‹Π²ΠΎΠ΄ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π½Π° ΡΠΊΡ€Π°Π½ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° состоит ΠΈΠ· 4-Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ: функция Π²Π²ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π΄Π²Π΅ функция расчСта констант, функция Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

2. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ int, float

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘ΠΈ Π΄Π»Ρ int

#include «stdafx.h»

#include

#include

using namespace std;

const int N = 4;

void raschet (int a, int c, int d[])

{int g, k, l, z;

int Y = 0;

g = 2 * c;

k = a*a + 1;

cout << «g = «<< «2 * «<< c << «= «<< g << endl;

cout << «k = «<< a*a << «+ 1» << «= «<< k << endl;

for (int i = 1; i <= N; i++)

{l = d[i] / 4;

cout << i << «) «<< «l[» << d[i] << «] = «<< d[i] << «/ 4 = «<< l << endl;

z = (g — l) / k;

cout << «z[» << d[i] << «] = «<< z << endl;

Y = Y + z;

cout << endl;}

cout << «Y = «<< Y << endl;}

int main ()

{setlocale (LC_ALL, «Russian»);

int a, c, d[N];

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ a = «;

cin >> a;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ с = «;

cin >> c;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнты массива» << endl;

for (int i = 1; i <= N; i++)

{cout << «d[» << i << «] = «;

cin >> d[i]; }

raschet (a, c, d);

_getch ();

return 0;}

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘ΠΈ Π΄Π»Ρ float

#include «stdafx.h»

#include

#include

using namespace std;

const int N = 4;

void raschet (float a, float c, float d[])

{float g, k, l, z;

float Y = 0;

g = 2 * c;

k = a*a + 1;

cout << «g = «<< «2 * «<< c << «= «<< g << endl;

cout << «k = «<< a*a << «+ 1» << «= «<< k << endl;

for (int i = 1; i <= N; i++)

{l = d[i] / 4;

cout << i << «) «<< «l[» << d[i] << «] = «<< d[i] << «/ 4 = «<< l << endl;

z = (g — l) / k;

cout << «z[» << d[i] << «] = «<< z << endl;

Y = Y + z;

cout << endl;}

cout << «Y = «<< Y << endl;}

int main ()

{setlocale (LC_ALL, «Russian»);

float a, c, d[N];

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ a = «;

cin >> a;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ с = «;

cin >> c;

cout << «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ элСмСнты массива» << endl;

for (int i = 1; i <= N; i++)

{cout << «d[» << i << «] = «;

cin >> d[i]; }

raschet (a, c, d);

_getch ();

return 0;}

Π‘Π»ΠΎΠΊ схСма

3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

3.1 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ УМ

Ex77 start 0

lda c

mul c2

sta p

ldx c0

lda c0

usl comp c12

jgt art

jeq art

jsub inc

rmo x, a ;i:=i+1

add c3

rmo a, x

j usl

art lda y

hlt

c word 20

e word 2

c0 word 0

c1 word 1

c3 word 3

c4 word 4

c12 word 12

c2 word 2

y word 0

d word 20

word 12

word 4

word -16

o resb 3

k resb 3

p resb 3

inc lda e

mul e

add c1

sta k

lda d, x

div c4

sta o

lda p

sub o

div k

add y

sta y

rsub

end Ex77

Π‘Π»ΠΎΠΊ схСма

3.2 ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл Π½Π° ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅ IBM

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Π²ΠΎΠ΄Π°

Π‘Π»ΠΎΠΊ схСма

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования АссСмблСр IBM PC

InputInt proc

mov ah, 0ah

xor di, di

mov dx, offset buff; адрСс Π±ΡƒΡ„Π΅Ρ€Π°

int 21h; ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ строку

mov dl, 0ah

mov ah, 02

int 21h

; Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ строки ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ

; содСрТимоС Π±ΡƒΡ„Π΅Ρ€Π°

mov si, offset buff+2; Π±Π΅Ρ€Π΅ΠΌ адрСс Π½Π°Ρ‡Π°Π»Π° строки

cmp byte ptr [si], «-»; Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ минус

jnz ii1

mov di, 1; устанавливаСм Ρ„Π»Π°Π³

inc si; ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅ΠΌ Π΅Π³ΠΎ

ii1: xor ax, ax

mov bx, 10; основаниС сc

ii2: mov cl, [si]; Π±Π΅Ρ€Π΅ΠΌ символ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

cmp cl, 0dh; провСряСм Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π»ΠΈ ΠΎΠ½

jz endin

; Ссли символ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ Π΅Π³ΠΎ

; Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

cmp cl, '0'; Ссли Π²Π²Π΅Π΄Π΅Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ символ <0

jl er

cmp cl, '9'; Ссли Π²Π²Π΅Π΄Π΅Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ символ >9

ja er

sub cl, '0'; Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»Π° число

mul bx; ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π½Π° 10

add ax, cx; прибавляСм ΠΊ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ

inc si; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ

jmp ii2; повторяСм

er: mov dx, offset error; Ссли Π±Ρ‹Π»Π° ошибка, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ±

; этом ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ

mov ah, 09

int 21h

int 20h; всС символы ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ число

; находится Π² ax

endin: cmp di, 1; Ссли установлСн Ρ„Π»Π°Π³, Ρ‚ΠΎ

jnz ii3

neg ax; Π΄Π΅Π»Π°Π΅ΠΌ число ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ

ii3: ret

error db «incorrect number$»

buff db 6,7 Dup (?)

InputInt endp

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования АссСмблСр IBM PC

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π°

OutInt proc near;=====ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π²Ρ‹Π²ΠΎΠ΄Π°

test ax, ax; провСряСм число Π½Π° Π·Π½Π°ΠΊ.

jns oi1

mov cx, ax; eсли ΠΎΠ½ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ минус ΠΈ

; оставим Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ

mov ah, 02h

mov dl, '-'

int 21h

mov ax, cx

neg ax

oi1: xor cx, cx; количСство Ρ†ΠΈΡ„Ρ€ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² CX

mov bx, 10; основаниС сс. 10 для дСсятСричной ΠΈ Ρ‚. ΠΏ.

oi2: xor dx, dx

div bx; Π΄Π΅Π»ΠΈΠΌ число Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ сс, Π² ΠΎΡΡ‚Π°Ρ‚ΠΊΠ΅

; получаСтся послСдняя Ρ†ΠΈΡ„Ρ€Π°

push dx; сразу Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π΅Π»ΡŒΠ·Ρ, поэтому сохраним

; Π΅Ρ‘ Π² ΡΡ‚экС

inc cx

; Π° Ρ Ρ‡Π°ΡΡ‚Π½Ρ‹ΠΌ повторяСм Ρ‚ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, отдСляя

; ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ

test ax, ax; Ρ†ΠΈΡ„Ρ€Ρƒ справа, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΡ‚анСтся ноль, Ρ‡Ρ‚ΠΎ

;Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ дальшС

jnz oi2; слСва Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠ»ΠΈ

;========Π’Ρ‹Π²ΠΎΠ΄=========

mov ah, 02h

oi3: pop dx

add dl, '0'; ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ, ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Ρ‘ Π²

; символ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ

int 21h

loop oi3; ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Ρ†ΠΈΡ„Ρ€

; насчитали

ret

OutInt endp

Π‘Π»ΠΎΠΊ схСма

3.3 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования АссСмблСр IBM PC

.model small

.stack 200h

.data

a db ?

c db ?

d db 4 dup (?,?,?,?)

e dw ?

f dw ?

y dw ?

t dw 8

D16 db '12 345 6789ABCDEF'

BUF db 4 DUP (20h), 13,10,'$'

str1 db 'Resultat', 13,10,'$'

.code

OutInt proc

test ax, ax; ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ число Π½Π° Π·Π½Π°ΠΊ.

jns oi1

; Если ΠΎΠ½ΠΎ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ

;минус ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

mov cx, ax

mov ah, 02h

mov dl, '-'

int 21h

mov ax, cx

neg ax

; ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ†ΠΈΡ„Ρ€ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² CX

oi1:

xor cx, cx

mov bx, 10; основаниС сс. 10 для дСсятСричной ΠΈ Ρ‚. ΠΏ.

oi2:

xor dx, dx

div bx

; Π”Π΅Π»ΠΈΠΌ число Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ сс.

;Π’ остаткС получаСтся послСдняя Ρ†ΠΈΡ„Ρ€Π°.

; Π‘Ρ€Π°Π·Ρƒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Ρ‘ Π½Π΅Π»ΡŒΠ·Ρ,

;поэтому сохраним Π΅Ρ‘ Π² ΡΡ‚экС.

push dx

inc cx

; А Ρ Ρ‡Π°ΡΡ‚Π½Ρ‹ΠΌ повторяСм Ρ‚ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅,

;отдСляя ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ

; Ρ†ΠΈΡ„Ρ€Ρƒ справа, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΡ‚анСтся ноль,

; Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ дальшС слСва Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠ»ΠΈ.

test ax, ax

jnz oi2

; Π’Π΅ΠΏΠ΅Ρ€ΡŒ приступим ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ.

mov ah, 02h

oi3:

pop dx

; ИзвлСкаСм ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ,

;ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌ Π΅Ρ‘ Π² ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ.

add dl, '0'

int 21h

; ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ€ΠΎΠ²Π½ΠΎ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·,

;сколько Ρ†ΠΈΡ„Ρ€ насчитали.

loop oi3

ret

OutInt endp

InputInt proc

mov ah, 0ah

xor di, di

mov dx, offset buff; аддрСс Π±ΡƒΡ„Π΅Ρ€Π°

int 21h; ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ строку

mov dl, 0ah

mov ah, 02

int 21h; Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки

; ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ содСрТимоС Π±ΡƒΡ„Π΅Ρ€Π°

mov si, offset buff+2; Π±Π΅Ρ€Π΅ΠΌ аддрСс Π½Π°Ρ‡Π°Π»Π° строки

cmp byte ptr [si]," -"; Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ минус

jnz ii1

mov di, 1; устанавливаСм Ρ„Π»Π°Π³

inc si; ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Π΅ΠΌ Π΅Π³ΠΎ

ii1:

xor ax, ax

mov bx, 10; основаниС сc

ii2:

mov cl,[si]; Π±Π΅Ρ€Π΅ΠΌ символ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

cmp cl, 0dh; провСряСм Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π»ΠΈ ΠΎΠ½

jz endin

; Ссли символ Π½Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ, Ρ‚ΠΎ

;провСряСм Π΅Π³ΠΎ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ

cmp cl,'0'; Ссли Π²Π²Π΅Π΄Π΅Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ символ <0

jl er

cmp cl,'9'; Ссли Π²Π²Π΅Π΄Π΅Π½ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ символ >9

ja er

sub cl,'0'; Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΠ· ΡΠΈΠΌΠ²ΠΎΠ»Π° число

mul bx; ΡƒΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π½Π° 10

add ax, cx; прибавляСм ΠΊ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ

inc si; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ

jmp ii2; повторяСм

er:; Ссли Π±Ρ‹Π»Π° ошибка, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ

;сообщСниС ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ

mov dx, offset error

mov ah, 09

int 21h

int 20h

; всС символы ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°

;ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ число находится Π² ax

endin:

cmp di, 1; Ссли установлСн Ρ„Π»Π°Π³, Ρ‚ΠΎ

jnz ii3

neg ax; Π΄Π΅Π»Π°Π΅ΠΌ число ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ

ii3:

ret

error db «incorrect number$»

buff db 6,7 Dup (?)

InputInt endp

PP1 proc near ;——————————-e

mov Al, 2

mov BL, c

imul BL

cbw

mov e, AX

cwd

mov AX, 0

mov BX, 0

ret 6 ;???

PP1 endp

PP2 proc near ;f

mov AX, 0

mov AL, a

imul AL

cbw

mov DX, 1

dd AX, DX

cbw

mov f, AX

cwd

mov AX, 0

mov DX, 0

ret 6;???

PP2 endp

Begin:

mov ax, @Data

mov ds, ax

call InputInt; Π²Π²ΠΎΠ΄ числа Π°

mov a, AL

call InputInt; Π²Π²ΠΎΠ΄ числа с

mov c, AL

mov SI, 0

push SI

l1: call InputInt

pop SI

mov d[SI], AL

add SI, 2

cmp SI, t

push SI

jne l1

call PP1 ;Π²Ρ‹Π·ΠΎΠ² ΠΏΠΏ 1

call PP2 ;Π²Ρ‹Π·ΠΎΠ² ΠΏΠΏ 2

mov SI, 0

mov CX, 4

xor AX, AX

mov y, AX

for: mov DX, 0

mov AH, 0

mov CL, 0

mov AL, d[SI]

mov BL, AL

cbw

cmp AX, 0

jg m2

mov CL, 1

mov AL, BL

neg AL

cbw

m2: mov DL, 4

idiv DL

cbw

cmp CL, 0

je m3

neg AL

cbw

m3: mov BX, e

sub BX, AX

cbw

mov AX, BX

cwd

mov AX, BX

cwd

mov BX, f

idiv BX;AL=AL/f

cbw

mov BX, AX

cwd

mov AX, BX

cwd

mov DX, y

add AX, DX

cbw

mov y, AX

add SI, 2

cmp SI, t

jne for

mov CX, 0

mov AX, y

mov DX, AX;DX:=AX

call OutInt

mov AX, 4c00h

int 21h

END begin

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования АссСмблСр IBM PC

Π‘Π»ΠΎΠΊ схСма

4. ВСстированиС ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ°

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅

Π‘ΠΈ Int

(дСсятичная Π‘Π‘)

Π‘ΠΈ float

(дСсятичная Π‘Π‘)

АссСмблСр УМ

(ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Π°Ρ Π‘Π‘)

АссСмблСр IBM PC

(дСсятичная Π‘Π‘)

a = 2

c = 20

d[0] = 20

d[1] = 12

d[2] = 4

d[3] = -16

1D

a = 3

c = 30

d[0] = 51

d[1] = 41

d[2] = 24

d[3] = -21

21.625

a = 2

c = 20

d[0] = 20

d[1] = 14

d[2] = 4

d[3] = 16

29.3

1C

ΠŸΠ΅Ρ€Π΅Π²Π΅Π΄Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ АссСмблСра УМ Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Π‘Π‘:

1D = 29

14 = 20

1C = 28.

Π―Π²Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ (для int), АссСмблСр УМ ΠΈ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€ IBM PC ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π° 100%. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Π‘ΠΈ (для float) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся Π²Π²ΠΈΠ΄Ρƒ точности вычислСний ΠΈ ΠΎΡ‚личаСтся ΠΎΡ‚ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния максимум Π½Π° 2 Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹.

5. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ (для int) ΠΎΠΊΠ½ΠΎ с Π·Π°ΠΏΡ€ΠΎΡΠΎΠΌ: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π°:». НСобходимо ввСсти Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «Π°», ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. НаТимаСм Enter.

Π”Π°Π»Π΅Π΅ Π² ΡΡ‚ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ появляСтся запрос: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ с:». НСобходимо ввСсти Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «Ρ», ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. НаТимаСм Enter.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ появится Π½ΠΎΠ²Ρ‹ΠΉ запрос: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 4 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для массива:». Π’Π²ΠΎΠ΄ΠΈΠΌ 4 Π»ΡŽΠ±Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ числа Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Enter.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π² ΡΡ‚ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Ρƒ Π½Π°Ρ появится запись «y=…». ВмСсто многоточия Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ число-ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ подстановки Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (1) Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π’Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «Π°», «Ρ» ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива «d[0]», «d[1]», «d[2]», «d[3]». ΠžΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом.

Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ (для float)

ΠŸΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Π‘ΠΈ, появится Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с Π·Π°ΠΏΡ€ΠΎΡΠΎΠΌ: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π°:». НСобходимо ввСсти Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «Π°», ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ ΠΈΠ»ΠΈ дСсятичным ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. НаТимаСм Enter.

Π”Π°Π»Π΅Π΅ Π² ΡΡ‚ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ появляСтся запрос: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ с:». НСобходимо ввСсти Π½ΡƒΠΆΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «Ρ», ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом. НаТимаСм Enter.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ появится Π½ΠΎΠ²Ρ‹ΠΉ запрос: «Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 4 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для массива:». Π’Π²ΠΎΠ΄ΠΈΠΌ 4 Π»ΡŽΠ±Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ дСсятичным ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ значСниями. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ числа Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Enter.

Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ Π² ΡΡ‚ΠΎΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Ρƒ Π½Π°Ρ появится запись «y=…». ВмСсто многоточия Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ число-ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ подстановки Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (1) Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π’Π°ΠΌΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «Π°», «Ρ» ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива «d[0]», «d[1]», «d[2]», «d[3]». ΠžΡ‚Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΌ ΠΈΠ»ΠΈ дСсятичным ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом.

Рис. 1

Π―Π·Ρ‹ΠΊ программирования АссСмблСр УМ

ЗаписываСм ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ стандартного прилоТСния «Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ *.txt. ΠŸΡ€ΠΈ описании Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΡ‹ ΡΡ€Π°Π·Ρƒ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ значСния для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… «Π°», «Ρ» ΠΈ ΡΡ€Π°Π·Ρƒ Π·Π°Π΄Π°Ρ‚ΡŒ значСния массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² 1 слово.

ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ этот Ρ„Π°ΠΉΠ» Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ TCom. exe ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ «Asm», Π΄Π°Π»Π΅Π΅ Π² ΠΎΡ‚Ρ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΊΠ»Π°Π΄ΠΊΡƒ «File» Π·Π°Ρ‚Π΅ΠΌ «Open» ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ *.txt. Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ загрузится Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ «Source module». НаТимаСм Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ «GoAsm», Ссли Π² ΠΊΠΎΠ΄Π΅ Π½Π΅Ρ‚ ошибок, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ синюю запись «No errors detected!» Π”Π°Π»Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

TCom.exe ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ «Load» Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅.

ЗапускаСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ клавиши «Start» Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ подстановки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ «Π°», «Ρ» ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° «d» Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (1) Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΠΊΠΊΡƒΠΌΡƒΠ»ΡΡ‚ΠΎΡ€Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располагаСтся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ TCom. exe (ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ рис. 1). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Аккумулятора Π±ΡƒΠ΄Π΅Ρ‚ число Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π‘Π‘.

Π―Π·Ρ‹ΠΊ программирования АссСмблСр IBM PC

ЗапускаСм эмулятор DOSBox 0.74. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ диск (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ «mount c», ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ рис. 2 (Ρ„Π°ΠΉΠ» находится Π½Π° Π΄ΠΈΡΠΊΠ΅ Π‘ Π² ΠΏΠ°ΠΏΠΊΠ΅ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «1», Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° «ΡΡ»)) ΠΈ ΠΎΡ‚Ρ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ располоТСн Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ *.asm, ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊ tasm. exe ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ связСй tlink. exe (ΠžΠ‘Π―Π—ΠΠ•Π›Π¬ΠΠžΠ• Π£Π‘Π›ΠžΠ’Π˜Π•: всС 3 Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² 1(!) ΠΏΠ°ΠΏΠΊΠ΅).

Π”Π°Π»Π΅Π΅ Π² ΡΠΌΡƒΠ»ΡΡ‚ΠΎΡ€Π΅ DOSBox 0.74 Π²Π²ΠΎΠ΄ΠΈΠΌ «tasm.exe <οΏ½Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°>.asm». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ Π΄Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ошибки, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ. Если ΠΈΡ… Π½Π΅Ρ‚, Ρ‚ΠΎ ΡΠΌΡƒΠ»ΡΡ‚ΠΎΡ€ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ отсутствиС сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅ ΠΈ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠΉ (ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ рис. 2). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡƒΠ΄Π°Ρ‡Π½ΠΎΠΉ компиляции Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° *.obj.

Рис. 2

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΎΠΊΠ½ΠΎ эмулятора DOSBox 0.74 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Π²ΠΎΠ΄ΠΈΠΌ «tlink.exe <οΏ½Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°>.obj». Π­Ρ‚ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΌΡ‹ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ нашС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΠ΄Π°Ρ‡Π½ΠΎ, Ρ‚ΠΎ DOSBox 0.74 выдаст ΠΎΠ± ΡΡ‚ΠΎΠΌ сообщСниС (ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ рис. 2). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ„Π°ΠΉΠ» Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° *.exe.

ПослСдний этап трансляции. Π’Π²ΠΎΠ΄ΠΈΠΌ «<οΏ½Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°>.exe». Π’ ΠΎΠΊΠ½Π΅ DOSBox 0.74 появится ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎ Π²Π²ΠΎΠ΄Ρƒ, Π²Π²ΠΎΠ΄ΠΈΠΌ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ числам, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ: Π°, c, d[0], d[1], d[2], d[3]. ΠœΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΆΠΌΠ΅ΠΌ Enter.

ПослСдняя появившаяся строка — ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»Ρ‹ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ числом.

6. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ (int)

ОбъСм ΠΏΠ°ΠΏΠΊΠΈ со Π²ΡΠ΅ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, созданными ΠΏΡ€ΠΈ компиляции = 14 Мб

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ = 962 Π±Π°ΠΉΡ‚

БрСдняя ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ компиляции = 2.5 сСк

ВрСмя расчСта ΠΎΡ‚Π²Π΅Ρ‚Π° = ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ 1 сСк

Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ (float)

ОбъСм ΠΏΠ°ΠΏΠΊΠΈ со Π²ΡΠ΅ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, созданными ΠΏΡ€ΠΈ компиляции = 14 Мб

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ =1003 Π±Π°ΠΉΡ‚Π°

БрСдняя ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ компиляции = 1.52 сСк

ВрСмя расчСта ΠΎΡ‚Π²Π΅Ρ‚Π° = ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ 1 сСк

Π―Π·Ρ‹ΠΊ программирования АссСмблСр УМ

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° с ΠΊΠΎΠ΄ΠΎΠΌ =664 Π±Π°ΠΉΡ‚

Π‘Ρ€Π΅Π΄Π½Π΅Π΅ врСмя компиляции ΠΈ Ρ€Π°ΡΡ‡Π΅Ρ‚Π° ΠΎΡ‚Π²Π΅Ρ‚Π° = 15 сСк.

Π―Π·Ρ‹ΠΊ программирования АссСмблСр IBM PC

ОбъСм ΠΏΠ°ΠΏΠΊΠΈ со Π²ΡΠ΅ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ компиляции = 203 142 Π±Π°ΠΉΡ‚

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° *.asm = 6 594 Π±Π°ΠΉΡ‚

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° *.obj = 707 Π±Π°ΠΉΡ‚

ОбъСм Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° *.exe =924 Π±Π°ΠΉΡ‚

БрСдняя ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ компиляции = ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ 1 сСк

ВрСмя расчСта ΠΎΡ‚Π²Π΅Ρ‚Π° = ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΌΠ°Π»ΠΎ, ΠΌΠ΅Π½Π΅Π΅ 1 сСк

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с Ρ‚рСмя языками программирования: Π‘ΠΈ, языком АссСмблСра для Π£Ρ‡Π΅Π±Π½ΠΎΠΉ ΠœΠ°ΡˆΠΈΠ½Ρ‹ ΠΈ ΡΠ·Ρ‹ΠΊΠΎΠΌ АссСмблСра IBM PC Π½Π° Π±Π°Π·Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Intel 8086.

Π’ Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты языка АссСмблСра ΠΈ Π­Π’Πœ Π² Ρ†Π΅Π»ΠΎΠΌ. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, Π±Ρ‹Π»ΠΈ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования Π‘ΠΈ, АссСмблСр УМ ΠΈ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€ IBM PC, составлСны Π±Π»ΠΎΠΊ-схСмы этих Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΠ·Ρ‹ΠΊΠΎΠ² программирования. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ способны Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ возмоТностСй Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ ΡΠΎ Π²ΡΡ‚Π°Π²ΠΊΠΎΠΉ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСра, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ написании ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ АссСмблСра IBM PC.

1. ГалисССв Π“. Π’. АссСмблСр для Win 32. Π‘Π°ΠΌΠΎΡƒΡ‡ΠΈΡ‚Π΅Π»ΡŒ. — Πœ.: Π”ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΈΠΊΠ°, 2007. — 368 с. — ISBN 978−5-8459−1197−1

2. Π—ΡƒΠ±ΠΊΠΎΠ² Π‘. Π’. АссСмблСр для DOS, Windows ΠΈ UNIX. — Πœ. Π”ΠœΠš ΠŸΡ€Π΅ΡΡ; БПб. ΠŸΠΈΡ‚Π΅Ρ€, 2006. — 608 с. — ISBN 5−94 074−259−9

3. Кип Π˜Ρ€Π²ΠΈΠ½. Π―Π·Ρ‹ΠΊ ассСмблСра для процСссоров Intel = Assembly Language for Intel-Based Computers. — Πœ.: Π’ΠΈΠ»ΡŒΡΠΌΡ, 2005. — 912 с. — ISBN 0−13−91 013−9

4. Калашников О. А. АссСмблСр? Π­Ρ‚ΠΎ просто! Учимся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2007. — 384 с. — ISBN 978−5-94 157−709

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