ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄

АссСмблСр для Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Visual Studio

МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим ΠΊΠ°ΠΊ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ассСмблСр ΠΈΠ· Π‘++ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ встроСнный Π² Visual Studio 2005 для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Visual Studio, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ File > New > Project. Π’ Visual Studio Π½Π΅Ρ‚ языка ассСмблСр Π² ΠΎΠΊΠ½Π΅ Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, поэтому создаСм Π‘++ Win32 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π’ ΠΎΠΊΠ½Π΅ настроСк Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Β«Empty ProjectΒ».

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Visual Studio Π½Π΅ распознаСт Ρ„Π°ΠΉΠ»Ρ‹ с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ассСмблСр. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ассСмблСр Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ условия сборки ΡƒΠΊΠ°Π·Π°Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ *.asm. Для этого Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΡƒΠ½ΠΊΡ‚ мСню Β«Custom Build Rules. Β».

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π’ ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ ΠΎΠΊΠ½Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° компиляции для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², Visual Studio 2005 ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ для Ρ„Π°ΠΉΠ»ΠΎΠ² *.asm, Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ лишь Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, установив Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΡ€Π°Π²ΠΈΠ»Π° Β«Microsoft Macro AssemblerΒ» Π³Π°Π»ΠΎΡ‡ΠΊΡƒ.

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ΄Π°

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ написанию исходного ΠΊΠΎΠ΄Π° нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. НачнСм с добавлСния исходного ΠΊΠΎΠ΄Π° Π½Π° c++. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΏΠΊΡƒ Source Files. Π’ качСствС Template Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ C++ File ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ имя Ρ„Π°ΠΉΠ»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ main.cpp. НапишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ имя Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ² это Π² Π²ΠΈΠ΄Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ readName() которая Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ссылку Π½Π° считанноС имя. ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ содСрТимоС Ρ„Π°ΠΉΠ»Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ вывСсти привСтствиС, Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ функция sayHello() ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ напишСм Π½Π° ассСмблСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сначала ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π±Π»ΠΎΠΊ ΠΊ main.cpp:

Π­Ρ‚ΠΎΡ‚ Π±Π»ΠΎΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ компилятору, Ρ‡Ρ‚ΠΎ функция sayHello() Π±ΡƒΠ΄Π΅Ρ‚ объявлСна Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Π·ΠΎΠ²Π° Β«CΒ». ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ C++ искаТаСт ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» Π²Ρ‹Π·ΠΎΠ²Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ readName() ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sayHello(), для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ extern Β«CΒ» ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ readName(), это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π²Ρ‹Π·ΠΎΠ²Π° Β«CΒ».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, для этого просто Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Debug > Start Without Debugging ΠΈΠ»ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ Ctrl-F5. Если всС сдСлано Π²Π΅Ρ€Π½ΠΎ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

НСмного услоТним Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ассСмблСр Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ calcSumm() которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ сумму Π΅Π³ΠΎ Ρ†ΠΈΡ„Ρ€. ИзмСним наш ΠΊΠΎΠ΄ Π½Π° Π‘++ Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ calcSumm, Π²Π²ΠΎΠ΄ числа ΠΈ собствСнно Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Ρ„Π°ΠΉΠ» hello.asm, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ помСщаСтся Π² eax, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова PROC. ВсС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, ΠΎΠ½ΠΈ автоматичСски извлСкутся ΠΈΠ· стСка. Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π½Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Они сохранСны Π² стСкС ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹:

Запустив ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

ΠžΡ‚Π»Π°Π΄ΠΊΠ°

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного ΠΈ ΠΎΠ½Π° вовсС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ использования ассСмблСр. Π‘ΠΎΠ»Π΅Π΅ интСрСсным Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π° Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π½Π°ΠΌ Π΄Π°Π΅Ρ‚ Visual Studio для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° ассСмблСр. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ установим Ρ‚ΠΎΡ‡ΠΊΡƒ остановки Π² hello.asm, запустим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. image loader. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Окно Disassembly (Debug > Windows > Disassembly) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСр для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. Код ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ написали Π½Π° Π‘++ показываСтся Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ. Disassembled code показываСтся сСрым послС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅ΠΌΡƒ ΠΊΠΎΠ΄Π° Π½Π° C++/ассСмблСр. Окно Disassembly позволяСт ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ stepping ΠΏΠΎ Π½Π΅ΠΌΡƒ.

Окно рСгистров (Debug > Windows > Registers) позволяСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистров.

Окно памяти (Debug > Windows > Memory) позволяСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Π°ΠΌΠΏ памяти, слСва ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ адрСс, справа ΡˆΠ΅ΡΠ½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ значСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ячССк памяти, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ, вводя адрСс Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»Π΅ Π² Π²Π΅Ρ€Ρ…Ρƒ ΠΎΠΊΠ½Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° АссСмблСрС для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

МногиС ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Assembler – ΡƒΠΆΠ΅ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΉ ΠΈ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² основном это ΠΌΠΎΠ»ΠΎΠ΄Ρ‹Π΅ люди, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ систСмным ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ПО, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ высокоуровнСвых языков программирования, АссСмблСр Π½Π°ΡƒΡ‡ΠΈΡ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ с Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ рСсурсами, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‚Π΅Ρ…Π½ΠΈΠΊΡƒ, Ρ‚Π΅ΠΌ самым Ρ€Π°Π·Π²ΠΈΠ²Π°ΡΡΡŒ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ машинного обучСния. Для понимания этого Π΄Ρ€Π΅Π²Π½Π΅Π³ΠΎ ЯП, для Π½Π°Ρ‡Π°Π»Π° стоит ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ с простыми ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» АссСмблСра.

IDE для Assembler

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ вопрос: Π² ΠΊΠ°ΠΊΠΎΠΉ срСдС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° АссСмблСрС? ΠžΡ‚Π²Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½Ρ‹ΠΉ – MASM32. Π­Ρ‚ΠΎ стандартная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ЯП. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π½Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сайтС masm32.com Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Ρ…ΠΈΠ²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈ послС Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ инсталлятор install.exe. Как Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ FASM, ΠΎΠ΄Π½Π°ΠΊΠΎ для Π½Π΅Π³ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ Π³Π»Π°Π²Π½ΠΎΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ PATH строчку:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Β«Hello worldΒ» Π½Π° ассСмблСрС

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

Для Π½Π°Ρ‡Π°Π»Π° запускаСм Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ qeditor.exe Π² ΠΏΠ°ΠΏΠΊΠ΅ с установлСнной MASM32, ΠΈ Π² Π½Ρ‘ΠΌ пишСм ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПослС сохраняСм Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ Β«.asmΒ», ΠΈ Π±ΠΈΠ»Π΄ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡƒΠ½ΠΊΡ‚Π° мСню Β«ProjectΒ» β†’ Β«Build allΒ». Если Π² ΠΊΠΎΠ΄Π΅ Π½Π΅Ρ‚ ошибок, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скомпилируСтся, ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ exe-Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠΊΠ½ΠΎ Windows с надписью Β«Hello worldΒ».

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. title 2018 02 16 00.10.58. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-title 2018 02 16 00.10.58. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° title 2018 02 16 00.10.58. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π‘Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… чисСл Π½Π° assembler

Π’ этом случаС ΠΌΡ‹ смотрим, Ρ€Π°Π²Π½Π° Π»ΠΈ сумма чисСл Π½ΡƒΠ»ΡŽ, ΠΈΠ»ΠΈ ΠΆΠ΅ Π½Π΅Ρ‚. Если Π΄Π°, Ρ‚ΠΎ Π½Π° экранС появляСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС ΠΎΠ± этом, ΠΈ, Ссли ΠΆΠ΅ Π½Π΅Ρ‚ – появляСтся ΠΈΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ с ΠΈΡ… использованиСм (jz, jmp, test). Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° суммы чисСл Π½Π° ассСмблСрС

ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ процСсс суммирования Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

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

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ значСния ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π½Π° ассСмблСрС

Одно ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… основных дСйствий Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ – это ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· консоли для ΠΈΡ… дальнСйшСй ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΎΠΊΠ½Π΅ Windows:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ:

Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ invoke – ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ макрос, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ упрощаСтся ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΎ врСмя компиляции макрос-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ АссСмблСра. Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅, ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ стСком – ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌ способом хранСния Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π² Ρ‚ΠΎΠΆΠ΅ врСмя ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ. По соглашСнию stdcall, Π²ΠΎ всСх WinAPI-функциях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· стСк, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ рСгистр eax.

Π¦ΠΈΠΊΠ»Ρ‹ Π² ассСмблСрС

Для создания Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° repeat. Π”Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ inc увСличиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° 1, нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, находится ΠΎΠ½Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, ΠΈΠ»ΠΈ ΠΆΠ΅ Π² самом процСссорС. Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ†ΠΈΠΊΠ»Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Β«.BREAKΒ». Она ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ», Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΅Π³ΠΎ дСйствиС послС Β«ΠΏΠ°ΡƒΠ·Ρ‹Β». Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ условиС repeat ΠΈ while с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Β«.CONTINUEΒ».

Π‘ΡƒΠΌΠΌΠ° элСмСнтов массива Π½Π° assembler

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ суммируСм значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² массивС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» Β«forΒ»:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ jne выполняСтся ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΊΠ΅, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сравнСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Если ΠΎΠ½ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ – происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄, Π° Ссли ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ Π½Π΅ Ρ€Π°Π²Π½ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Ρƒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π΅ осущСствляСтся.

АссСмблСр интСрСсСн своим прСдставлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠ³ΠΎΠ΄Π½ΠΎ. БпСциалист, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ разобрался Π²ΠΎ всСх тонкостях Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка программирования, Π²Π»Π°Π΄Π΅Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Π½Ρ‹ΠΌΠΈ знаниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ мноТСство ΠΏΡƒΡ‚Π΅ΠΉ использования. Одна Π·Π°Π΄Π°Ρ‡ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒΡΡ самыми Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами, поэтому ΠΏΡƒΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ тСрнист, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ассСмблСрС Π² 2018 Π³ΠΎΠ΄Ρƒ

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. . ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° . МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π‘Ρ‚Π°Ρ‚ΡŒΡ посвящСна языку ассСмблСр с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠΉ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Ρ‹ прСимущСства ΠΈ отличия ΠΎΡ‚ Π―Π’Π£, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΎ нСбольшоС сравнСниС компиляторов, скрупулёзно собрано Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ количСство Π»ΡƒΡ‡ΡˆΠ΅ΠΉ тСматичСской Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹.

1. Π―Π·Ρ‹ΠΊ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ отличия ΠΎΡ‚ Π―Π’Π£

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

Π―Π·Ρ‹ΠΊ ассСмблСра обСспСчиваСт доступ ΠΊ рСгистрам, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² адрСсации ΠΈ описаниС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ процСссора. Π―Π·Ρ‹ΠΊ ассСмблСра ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ срСдства Π±ΠΎΠ»Π΅Π΅ высокого уровня абстракции: встроСнныС ΠΈ опрСдСляСмыС ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ нСскольким ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, автоматичСский Π²Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², срСдства описания структур Π΄Π°Π½Π½Ρ‹Ρ…. Π“Π»Π°Π²Π½ΠΎΠ΅ достоинство языка ассСмблСра β€” Β«ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΒ» ΠΊ процСссору, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся основой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ программистом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π° Π³Π»Π°Π²Π½Ρ‹ΠΌ нСудобством β€” слишком ΠΌΠ΅Π»ΠΊΠΎΠ΅ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ воспринимаСтся с Ρ‚Ρ€ΡƒΠ΄ΠΎΠΌ. Однако язык ассСмблСра Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большСй стСпСни ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ само Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Ρ‡Π΅ΠΌ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ языки.

И хотя Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы сСйчас ΠΏΠΈΡˆΡƒΡ‚ Π½Π° Π‘ΠΈ, Π½ΠΎ Π‘ΠΈ ΠΏΡ€ΠΈ всСх Π΅Π³ΠΎ достоинствах β€” язык высокого уровня абстракции, ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ программиста Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тонкости ΠΈ Π½ΡŽΠ°Π½ΡΡ‹ ΠΆΠ΅Π»Π΅Π·Π°, Π° ассСмблСр β€” язык Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня абстракции, прямо ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ всС эти тонкости ΠΈ Π½ΡŽΠ°Π½ΡΡ‹.

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ использования ассСмблСра Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ сразу Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ:

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

На языкС ассСмблСра ΠΏΠΈΡˆΡƒΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° критичСски Π²Π°ΠΆΠ½Ρ‹:

Π―Π·Ρ‹ΠΊΠΈ программирования высокого уровня абстракции Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ с Ρ†Π΅Π»ΡŒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ большСго приблиТСния способа записи ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΊ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΌ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ записи, Π² частности матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… спСцифичСскиС тСхничСскиС особСнности ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ². Π―Π·Ρ‹ΠΊ ассСмблСра разрабатываСтся с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ спСцифики процСссора, поэтому для Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ³ΠΎ написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра трСбуСтся, Π² ΠΎΠ±Ρ‰Π΅ΠΌ, Π·Π½Π°Ρ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ процСссора ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Однако, имСя Π² Π²ΠΈΠ΄Ρƒ прСимущСствСнноС распространСниС PC-совмСстимых ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния для Π½ΠΈΡ…, ΠΎΠ± этом ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π·Π°Π±ΠΎΡ‚Ρ‹ Π±Π΅Ρ€ΡƒΡ‚ Π½Π° сСбя Ρ„ΠΈΡ€ΠΌΡ‹-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ спСциализированного ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

2. О компиляторах

Какой ассСмблСр Π»ΡƒΡ‡ΡˆΠ΅?

Для процСссора x86-x64, имССтся Π±ΠΎΠ»Π΅Π΅ дСсятка Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ассСмблСр компиляторов. Они ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π½Π°Π±ΠΎΡ€Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ синтаксисом. НСкоторыС компиляторы большС подходят для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ― для ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… программистов. НСкоторыС компиляторы достаточно Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… компиляторов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ мноТСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² программирования. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ассСмблСров написаны ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ пособия ΠΈ ΠΊΠ½ΠΈΠ³ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматриваСтся синтаксис, Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ. Какой ассСмблСр Π»ΡƒΡ‡ΡˆΠ΅?

Учитывая мноТСство Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ΠΎΠ² ассСмблСров для x86-x64 ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для ΠΈΡ… изучСния, ограничимся ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… компиляторов: MASM, TASM, NASM, FASM, GoASM, Gas, RosAsm, HLA.

ΠšΠ°ΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму Π²Ρ‹ Π±Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Π­Ρ‚ΠΎ вопрос, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π‘Π°ΠΌΡ‹ΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ассСмблСр Π½Π΅ принСсСт Π²Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·Ρ‹, Ссли ΠΎΠ½ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ΄ Ρ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

WindowsDOSLinuxBSDQNXMacOS, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π½Π°
процСссорС Intel/AMD
FASMxxxx
GASxxxxxx
GoAsmx
HLAxx
MASMxx
NASMxxxxxx
RosAsmx
TASMxx

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 16 Π±ΠΈΡ‚

Если ассСмблСр ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ DOS, Ρ‚ΠΎ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ 16-разрядныС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. ВсС ассСмблСры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 16-разрядныС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹. 16-разрядная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΊΠΎΠ΄Π°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Π² 16-разрядной сСгмСнтированной ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с 32-разрядной модСлью с плоской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ соврСмСнных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм).

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° 64 Π±ΠΈΡ‚

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ TASM, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Ρ„ΠΈΡ€ΠΌΠ° Borland ΠΎΡ…Π»Π°Π΄Π΅Π»Π° Π² сСрСдинС Π½ΡƒΠ»Π΅Π²Ρ‹Ρ…, ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ объСмС Π΄Π°ΠΆΠ΅ 32-разрядныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ 64-разрядных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° ассСмблСрС x86-x64, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ запускался Π±Ρ‹ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ процСссорС. Однако, Π΄Π°ΠΆΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ процСссорС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ пСрСносимости. НапримСр, Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свои ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами. NASM ΠΈ FASM ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСмах, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ассСмблСрС ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΎΠ΄Π½ΠΎΠΉ ОБ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ с «пСрСкомпиляциСй» исходного ΠΊΠΎΠ΄Π°? Π­Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚ HLA. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния Windows ΠΈ Linux Π½Π° ассСмблСрС с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ усилиями для этого? Π₯отя, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ОБ, Ρ‚ΠΎΠ³Π΄Π° эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° вас Π½Π΅ касаСтся.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° высокоуровнСвых языковых конструкций

НСкоторыС ассСмблСры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ синтаксис, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт языковыС высокоуровнСвыС структуры управлСния (Ρ‚ΠΈΠΏΠ° IF, WHILE, FOR ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅). Π’Π°ΠΊΠΈΠ΅ конструкции ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ассСмблСру ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ассСмблСры встроСны «высокоуровнСвыС конструкции» с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ высокоуровнСвыС конструкции Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ макросов.

Никакой ассСмблСр Π½Π΅ заставляСт вас ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ структуры управлСния ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… высокого уровня, Ссли Π²Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. ВысокоуровнСвыС конструкции ― это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ машинного языка, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ ΠΈΡ… ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ.

ΠšΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ

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

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ описываСтся качСство справочного руководства ассСмблСра, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прилагаСтся ΠΊ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρƒ:

Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΈ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹

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

MASM являСтся Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ срСди ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ объСма ΠΊΠ½ΠΈΠ³, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΡ…, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° этом Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅. Π•ΡΡ‚ΡŒ дСсятки ΠΊΠ½ΠΈΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ MASM Π² качСствС своСго ассСмблСра для обучСния ассСмблСру.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠ² ΠΏΠΎ ассСмблСру MASM/TASM ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄ MS-DOS. Π₯отя постСпСнно ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π² Windows ΠΈ Linux.

3. Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΈ Π²Π΅Π± рСсурсы

Beginners

Advanced

4. ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ассСмблСр ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят. Π’Ρ‹ запаслись ΠΏΠ°Ρ€ΠΎΠΉ/Ρ‚Ρ€ΠΎΠΉΠΊΠΎΠΉ ΠΊΠ½ΠΈΠ³ ΠΈ Π²Π΅Π± ΠΌΠ°Π½ΡƒΠ°Π»Π°ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈΡΡŒ ΠΈ с компилятором… К соТалСнию ΡƒΡ€ΠΎΠΊΠΈ программирования выходят Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, Π½ΠΎ для Ρ‚Π΅Ρ… Ρ‡Π΅ΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ°Π» Π½Π° MASM/FASM ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ:

Π–Π΅Π»Π°Π΅ΠΌ Π²Π°ΠΌ, Π΄Ρ€ΡƒΠ·ΡŒΡ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… достиТСний ΠΈ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ Π² 2018 Π³ΠΎΠ΄Ρƒ!

Π‘ ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
ΠœΠΈΡ…Π°ΠΈΠ» Π‘ΠΌΠΎΠ»Π΅Π½Ρ†Π΅Π² MiklIrk (Π˜Ρ€ΠΊΡƒΡ‚ΡΠΊΠΈΠΉ государствСнный унивСрситСт ΠΏΡƒΡ‚Π΅ΠΉ сообщСния),
АлСксСй Π“Ρ€ΠΈΡ†Π΅Π½ΠΊΠΎ expressrus (Донской государствСнный тСхничСский унивСрситСт).

Ps1: Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ, Π₯Π°Π±Ρ€Π°Ρ…Π°Π±Ρ€! Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ваш Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ подсвСтку ассСмблСра (Intel-синтаксис), это пригодится для Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… статСй!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

АссСмблСр для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Π’ любом Π΄Π΅Π»Π΅ Π³Π»Π°Π²Π½ΠΎΠ΅ β€” Π½Π°Ρ‡Π°Ρ‚ΡŒ. Или Π²ΠΎΡ‚ Π΅Ρ‰Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΊΠ°: «Начало β€” ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° Π΄Π΅Π»Π°Β». Но ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ Π½Π΅ знаСшь ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒΡΡ ΠΊ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΌΡƒ вопросу. Π’ связи с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ воспоминания ΠΌΠΎΠΈ Π΅Ρ‰Π΅ свСТи, ΡΠΏΠ΅ΡˆΡƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ своими сообраТСниями с ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΌΠΈΡΡ.

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. 0bdc9ca433987b89388d972b89b7d4b9. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-0bdc9ca433987b89388d972b89b7d4b9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 0bdc9ca433987b89388d972b89b7d4b9. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π‘ΠΊΠ°ΠΆΡƒ сразу, Ρ‡Ρ‚ΠΎ Π»ΠΈΡ‡Π½ΠΎ я Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡ€ΡƒΡŽ Π½Π΅ ΠΏΠΎΠ΄ PC, Π° ΠΏΠΎΠ΄ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹. Но это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ большого значСния, ΠΈΠ±ΠΎ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² AVR) систСма ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² с PC ΠΊΡ€Π°ΠΉΠ½Π΅ схоТа. Π”Π° ΠΈ, собствСнно говоря, ассСмблСр ΠΎΠ½ ΠΈ Π² АфрикС ассСмблСр.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, я Π½Π΅ ΡΡ‚Π°Π²Π»ΡŽ своСй Ρ†Π΅Π»ΡŒΡŽ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°. Π‘Π»Π°Π³ΠΎ, ΠΏΠΎ ассСмблСру написано ΡƒΠΆΠ΅ Π½Π΅Π²ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΌΠΎΠ΅ число Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. И Π΄Π°, ΠΌΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΎΠΏΡ‹Ρ‚Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… программистов, Π½ΠΎ я ΡΡ‡ΠΈΡ‚Π°ΡŽ Π½Π΅ лишним ΠΈΠ·Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ этого вопроса Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ.

Для Π½Π°Ρ‡Π°Π»Π° ΡƒΡΠΏΠΎΠΊΠΎΡŽ Π»ΡŽΠ±ΠΎΠ·Π½Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠ²ΠΎΠ±Ρ€Π°Π½Ρ†Π΅Π²: ассСмблСр β€” это совсСм Π½Π΅ слоТно, Π²ΠΎΠΏΡ€Π΅ΠΊΠΈ стСрСотипному мнСнию. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΠ½ Π±Π»ΠΈΠΆΠ΅ ΠΊ Β«Π·Π΅ΠΌΠ»Π΅Β», Ρ‚ΠΎ бишь ΠΊ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅. На самом Π΄Π΅Π»Π΅, ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ прост, Ссли ΡƒΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ идСю. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языков высокого уровня ΠΈ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… спСциализированных ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ для программирования (ΠΏΠΎΠ΄ всСм пСрСчислСнным я понимаю всякоС Π²Ρ€ΠΎΠ΄Π΅ C++, MatLAB ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΡˆΡ‚ΡƒΠΊ, Π³Π΄Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ программСрскиС Π½Π°Π²Ρ‹ΠΊΠΈ), ΠΊΠΎΠΌΠ°Π½Π΄ Ρ‚ΡƒΡ‚ Ρ€Π°Π·-Π΄Π²Π° ΠΈ обчСлся. По Π½Π°Ρ‡Π°Π»Ρƒ Π΄Π°ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π», эта Π·Π°Π΄Π°Ρ‡Π° Π²Ρ‹Π·Ρ‹Π²Π°Π»Π° лишь Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π½ΠΈΠ΅: ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ скудного количСства ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ? Π’Π΅Π΄ΡŒ ΠΎΠ±Ρ€Π°Π·Π½ΠΎ говоря, Π½Π° ассСмблСрС ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ числа. Но с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСра ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ слоТныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π° ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΡ€Π°ΠΉΠ½Π΅ Π»Ρ‘Π³ΠΊΠΈΠΉ. Π’ΠΎΡ‚ Π΄Π°ΠΆΠ΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Π½ΡƒΠΆΠ½ΠΎ Π²Π°ΠΌ Π·Π°ΠΆΠ΅Ρ‡ΡŒ свСтодиод, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊ Π½ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρƒ ΠΏΠΎΡ€Ρ‚Π° Π½ΠΎΠΌΠ΅Ρ€ 2, Π²Ρ‹ просто ΠΏΠΈΡˆΠ΅Ρ‚Π΅:
bset P2.0
И, ΠΊΠ°ΠΊ говорится, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. НуТно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ сразу ΡˆΡ‚ΡƒΠΊΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ? Π”Π° запросто:
mov P2, #000fh
Π”Π°, Ρ‚ΡƒΡ‚ я ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽ, Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ Π±ΠΎΠ΅Ρ† ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌ хотя Π±Ρ‹ со систСмами счислСния. Ну хотя Π±Ρ‹ с дСсятичной. πŸ˜‰

Π˜Ρ‚Π°ΠΊ, для достиТСния успСха Π² Π΄Π΅Π»Π΅ ассСмблирования, слСдуСт Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ (Π² ΠΌΠΎΠ΅ΠΌ случаС) ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°. Π­Ρ‚ΠΎ Ρ€Π°Π·.

ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π±ΠΎΠ»ΡŒΠ½Ρ‹Ρ… мСст Π² ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ β€” это организация памяти. Π’ΡƒΡ‚ Π½Π° Π₯Π°Π±Ρ€Π΅ я Π²ΠΈΠ΄Π΅Π»Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ: habrahabr.ru/blogs/programming/128991. Π•Ρ‰Π΅ ΠΌΠΎΠ³Ρƒ ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π±ΠΎΠ»Π΅Π²Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ: прСрывания. Π¨Ρ‚ΡƒΠΊΠ° Π½Π΅ слоТная, Π½ΠΎ ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ (ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ) тяТСлая для восприятия.

Если ΠΏΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ стоит слоТная Π·Π°Π΄Π°Ρ‡Π° ΠΈ Π²Ρ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ ΠΊ Π½Π΅ΠΉ ΠΏΠΎΠ΄ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒΡΡ, Π»ΡƒΡ‡ΡˆΠ΅ всСго Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. Π­Ρ‚ΠΎ воистину спасаСт. А ΠΏΠΎ Π½Π°Ρ‡Π°Π»Ρƒ, Π΄Π°ΠΆΠ΅ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ слоТная, Π»ΡƒΡ‡ΡˆΠ΅ всё ΠΆΠ΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΈΠ±ΠΎ этот процСсс ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΎΠΆΠΈΡ‚ΡŒ всё Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΠΏΠΎ мСстам. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ с вычислСниСм Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»Π° ΠΏΠΎ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΎΠ±Π΄ΡƒΠΌΡ‹Π²Π°Π»Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ я вСсь дСнь, Π½ΠΎ Π·Π°Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΊΡƒ ΠΏΠΎ Π½Π΅ΠΌΡƒ написала всСго Π·Π° 20 ΠΌΠΈΠ½ΡƒΡ‚. Плюс Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ дальнСйшСй ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ/ΠΈΠ»ΠΈ эксплуатации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚ΠΎ ассСмблСрный ΠΊΠΎΠ΄, Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌΠΈ, Ссли ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ понятСн построчно, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Ρ‡Π΅ΠΌ ΠΆΠ΅ общая идСя, придСтся Π½Π΅ΠΌΠ°Π»ΠΎ ΠΏΠΎΡ‚Ρ€ΡƒΠ΄ΠΈΡ‚ΡŒΡΡ.

Π˜Ρ‚Π°ΠΊ, Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ»ΡŽΡ‡ ΠΊ успСху β€” ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ написанный ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ. ΠΠ°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π½Π΅ ΡΠ°Π΄ΠΈΡ‚ΡŒΡΡ сразу Π·Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. НичСго дСльного Π²Ρ‹ с Ρ…ΠΎΠ΄Ρƒ Π½Π΅ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅. Π­Ρ‚ΠΎ Π΄Π²Π°.

БобствСнно, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠ°ΠΊ Π€Π°Π½Π΄ΠΎΡ€ΠΈΠ½ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ: Β«Π­Ρ‚ΠΎ Ρ‚-Ρ‚-три»… Но, боюсь, Π½Π° этом ΠΏΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ. Π₯отя Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ нСсколько Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΈ пряников.

Подводя ΠΈΡ‚ΠΎΠ³ ΠΌΠΎΠ΅ΠΌΡƒ нСсколько сумбурному ΠΌΠΎΠ½ΠΎΠ»ΠΎΠ³Ρƒ, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ассСмблСрС β€” это Π·Π½Π°Π½ΠΈΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ связноС построСниС мыслСй. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сразу с Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ ΠΊΠΈΠ΄Π°Ρ‚ΡŒΡΡ Π² ΡˆΡ‚ΡƒΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ с описаниСм внутрСнностСй Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ PC, Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ прСдставлСниС (ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡŽΡΡŒ, хотя Π±Ρ‹ для Π½Π°Ρ‡Π°Π»Π°) Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Π½ΡƒΠΆΠ½ΠΎ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π΅Ρ‰Π°Π½Π½Ρ‹Π΅ пряники! Π’ΠΎΡ‚ я Ρ‚ΡƒΡ‚ Ρ€Π°ΡΠΏΠΈΠ½Π°ΡŽΡΡŒ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ нСпонятном ассСмблСрС, Π° Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π² Π½Π΅ΠΌ, собствСнно говоря, Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ? Π”Π° ΠΌΠ½ΠΎΠ³ΠΎ всСго! Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅ΠΉ ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄Ρ€Π΅Π±Π΅Π΄Π΅Π½ΠΈ. ВсСго ΠΏΠ°Ρ€ΠΎΡ‡ΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ, считайтС, Π²Ρ‹ Π²ΠΎ всСоруТии. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π² связи с ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ Π±Π»ΠΈΠ·ΠΎΡΡ‚ΡŒΡŽ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ практичСски всё, Ρ‡Ρ‚ΠΎ Π΄ΡƒΡˆΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Ρ‚Π΅Ρ… ΠΆΠ΅ языков высокого уровня)! Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ассСмблСрный ΠΊΠΎΠ΄, ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ максимальной лаконичности Π² Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…, выполняСтся ΠΊΡ€Π°ΠΉΠ½Π΅ быстро.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ ΠΏΠ»ΡŽΡΡ‹. На этой оптимистичСской Π½ΠΎΡ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΎΡ‚ΠΊΠ»Π°Π½ΡΡ‚ΡŒΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π² assembler. ΠŸΠΎΠ»Π½Ρ‹ΠΉ курс ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° асмС ΠΎΡ‚ ][

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. asm h. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-asm h. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° asm h. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Π­Ρ‚ΠΎ пСрвая (Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ) ΡΡ‚Π°Ρ‚ΡŒΡ курса. ΠšΡƒΡ€Ρ рассчитан Π½Π° Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ Π·Π½Π°ΠΊΠΎΠΌ с высокоуровнСвым ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ приступаСт ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ ассСмблСра.

Π§ΠΈΡ‚Π°ΠΉ Π΄Π°Π»Π΅Π΅:

Но Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ само ΠΏΠΎ сСбС ΠΏΠΎ своСй сути, Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ языка? Π Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² ΠΏΠΎΡ€Π°ΠΆΠ°Π΅Ρ‚. НаиболСС часто ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΠ»Ρ‹ΡˆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ β€” это составлСниС инструкций ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ исполнСния ΠΈΡ… машиной с Ρ†Π΅Π»ΡŒΡŽ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Ρƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π’Π°ΠΊΠΎΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ справСдлив, Π½ΠΎ, Π½Π° ΠΌΠΎΠΉ взгляд, Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ всСй ΠΏΠΎΠ»Π½ΠΎΡ‚Ρ‹, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ Π½Π°Π·Π²Π°Π»ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρƒ составлСниСм ΠΈΠ· слов ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прочтСния ΠΈΡ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΌ. Π― склонСн ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΈΠΆΠ΅ ΠΊ творчСству, ΠΊ искусству. Как любой Π²ΠΈΠ΄ искусства β€” Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ творчСской мысли, ΠΈΠ΄Π΅ΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ прСдставляСт собой ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ чСловСчСской мысли. ΠœΡ‹ΡΠ»ΡŒ ΠΆΠ΅ Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΈ гСниальная, ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ посрСдствСнная.

Но, ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ‹ Π²ΠΈΠ΄ΠΎΠΌ программирования ΠΌΡ‹ Π½ΠΈ занимались, успСх зависит ΠΎΡ‚ практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² Π²ΠΊΡƒΠΏΠ΅ со Π·Π½Π°Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… основ ΠΈ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ. ВСория ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚Ρ€ΡƒΠ΄ β€” Π²ΠΎΡ‚ ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠ°ΠΌΠ½ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основываСтся успСх.

Π’ послСднСС врСмя ассСмблСр нСзаслуТСнно находится Π² Ρ‚Π΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… языков. ΠžΠ±ΡƒΡΠ»ΠΎΠ²Π»Π΅Π½ΠΎ это глобальной ΠΊΠΎΠΌΠΌΠ΅Ρ€Ρ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² максимально ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ сроки ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΎΡ‚ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π˜Π½Ρ‹ΠΌΠΈ словами, ΠΌΠ°ΡΡΠΎΠ²ΠΎΡΡ‚ΡŒ взяла Π²Π΅Ρ€Ρ… Π½Π°Π΄ ΡΠ»ΠΈΡ‚Π°Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ. А ассСмблСр, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡƒ мнСнию, Π±Π»ΠΈΠΆΠ΅ ΠΊ послСднСму. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Π²Ρ‹Π³ΠΎΠ΄Π½Π΅Π΅ Π² ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСбольшиС сроки ΠΏΠΎΠ΄Π½Π°Ρ‚Π°ΡΠΊΠ°Ρ‚ΡŒ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ° Π² Ρ‚Π°ΠΊΠΈΡ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, языках, ΠΊΠ°ΠΊ Π‘++, Π‘#, PHP, Java, JavaScript, Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ способСн ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΏΠΎΡ‚Ρ€Π΅Π±Π½Ρ‹ΠΉ софт, Π½Π΅ задаваясь вопросами, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Π΅Ρ‚, Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ спСциалиста ΠΏΠΎ ассСмблСру. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Ρ‚ΠΎΠΌΡƒ слуТит ΠΎΠ±ΡˆΠΈΡ€Π½Π΅ΠΉΡˆΠΈΠΉ Ρ€Ρ‹Π½ΠΎΠΊ всСвозмоТных курсов ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° любом языкС, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ассСмблСра. Π’Π° ΠΆΠ΅ тСндСнция прослСТиваСтся ΠΊΠ°ΠΊ Π² ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΠΈ Π² Π²ΡƒΠ·Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ сСгодняшнСго дня большая Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° базируСтся Π½Π° Ρ€Π°Π½Π½ΠΈΡ… процСссорах сСрии 8086, Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ Β«Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌΒ» 16-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдС MS-DOS! Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, с ΠΎΠ΄Π½ΠΎΠΉ стороны, с появлСниСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² IBM PC прСподаватСлям ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° эту ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΈΠ·-Π·Π° нСдоступности Π΄Ρ€ΡƒΠ³ΠΈΡ…. А с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ развития Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ 80Ρ…86 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ DOS ΡΠΎΡ…Ρ€Π°Π½ΡΠ»Π°ΡΡŒ, Ρ‡Ρ‚ΠΎ позволяло ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ дСньги Π½Π° ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΈ составлСниС ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΎΠ² для изучСния Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π½ΠΎΠ²Ρ‹Ρ… процСссоров. Однако сСйчас Ρ‚Π°ΠΊΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для изучСния ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌ. MS-DOS ΠΊΠ°ΠΊ срСда выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±Π΅Π·Π½Π°Π΄Π΅ΠΆΠ½ΠΎ устарСла ΡƒΠΆΠ΅ ΠΊ сСрСдинС дСвяностых Π³ΠΎΠ΄ΠΎΠ², Π° с ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ ΠΊ 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ процСссорам, начиная с процСссора 80386, сама систСма ΠΊΠΎΠΌΠ°Π½Π΄ стала Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ бСссмыслСнно Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ объяснСниС странностСй Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΡƒΠΆΠ΅ Π½Π΅ появятся Π½ΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ процСссорС.

Π§Ρ‚ΠΎ касаСтся Π²Ρ‹Π±ΠΎΡ€Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды для изучСния ассСмблСра, Ρ‚ΠΎ, Ссли Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ 32-Π±ΠΈΡ‚Π½ΠΎΠΉ систСмС ΠΊΠΎΠΌΠ°Π½Π΄, Π²Ρ‹Π±ΠΎΡ€ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π²Π΅Π»ΠΈΠΊ. Π­Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Windows, Π»ΠΈΠ±ΠΎ прСдставитСли сСмСйства UNIX.

Π’Π°ΠΊΠΆΠ΅ слСдуСт ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько слов ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ ассСмблСр Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды. Как извСстно, для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с процСссорами Ρ…86 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° синтаксиса ассСмблСра β€” это синтаксис AT&T ΠΈ синтаксис Intel. Π­Ρ‚ΠΈ синтаксисы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² синтаксисС Intel выглядит Ρ‚Π°ΠΊ:

Π’ синтаксисС ΠΆΠ΅ AT&T ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΎΠΉ Π²ΠΈΠ΄:

Π’ срСдС ОБ UNIX Π±ΠΎΠ»Π΅Π΅ популярСн синтаксис Ρ‚ΠΈΠΏΠ° AT&T, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… пособий ΠΏΠΎ Π½Π΅ΠΌΡƒ Π½Π΅Ρ‚, ΠΎΠ½ описываСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² справочной ΠΈ тСхничСской Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ассСмблСр Π½Π° основС синтаксиса Intel. Для UNIX-систСм Π΅ΡΡ‚ΡŒ Π΄Π²Π° основных ассСмблСра β€” это NASM (Netwide Assembler) ΠΈ FASM (Flat Assembler). Для Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ Windows ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ FASM ΠΈ MASM (Macro Assembler) ΠΎΡ‚ Ρ„ΠΈΡ€ΠΌΡ‹ Microsoft, ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ сущСствовал Π΅Ρ‰Π΅ TASM (Turbo Assembler) Ρ„ΠΈΡ€ΠΌΡ‹ Borland, которая ΡƒΠΆΠ΅ довольно Π΄Π°Π²Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Π»Π°ΡΡŒ ΠΎΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ собствСнного Π΄Π΅Ρ‚ΠΈΡ‰Π°.

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ статСй ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅ΠΌ вСсти Π² срСдС Windows Π½Π° основС языка ассСмблСра MASM (просто ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠ½Π΅ нравится большС). МногиС Π°Π²Ρ‚ΠΎΡ€Ρ‹ Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС изучСния ассСмблСра Π²ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π΅Π³ΠΎ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ языка си, исходя ΠΈΠ· Ρ‚Π΅Ρ… сообраТСний, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ практичСским ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдС якобы довольно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ: Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΈ основы программирования Π² Π½Π΅ΠΉ, ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора. Однако ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ…ΠΎΡ‚ΡŒ ΠΌΠ°Π»ΠΎ-ΠΌΠ°Π»ΡŒΡΠΊΠΈΡ… Π½Π°Ρ‡Π°Ρ‚ΠΊΠΎΠ² Π·Π½Π°Π½ΠΈΠΉ Π² языкС си. Π”Π°Π½Π½Ρ‹ΠΉ ΠΆΠ΅ Ρ†ΠΈΠΊΠ» статСй ΠΎΡ‚ самого своСго Π½Π°Ρ‡Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ сосрСдоточСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° самом ассСмблСрС, Π½Π΅ смущая читатСля Π½ΠΈΡ‡Π΅ΠΌ ΠΈΠ½Ρ‹ΠΌ, Π΅ΠΌΡƒ нСпонятным, хотя Π² дальнСйшСм ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ связь с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ основ программирования, ΠΈ это касаСтся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ программирования Π½Π° ассСмблСрС, ΠΊΡ€Π°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС ΠΎ ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. И ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ сразу ΠΆΠ΅ с создания ΠΎΠΊΠΎΡˆΠ΅Ρ‡Π΅ΠΊ, ΠΊΠ½ΠΎΠΏΠΎΡ‡Π΅ΠΊ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΎΠΊΠΎΠ½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Ρ‹Ρ‚ΡƒΠ΅Ρ‚ ΠΌΠ½Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ консоль β€” Π°Ρ€Ρ…Π°ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΡ‚ΠΎΠΊ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ. Однако это Π½Π΅ Ρ‚Π°ΠΊ. КонсольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ лишСно всякой внСшнСй зависимости ΠΎΡ‚ ΠΎΠΊΠΎΠ½Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈ сосрСдоточСно Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅ΠΊΡ€Π°ΡΠ½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π½Π΅ ΠΎΡ‚Π²Π»Π΅ΠΊΠ°ΡΡΡŒ Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… основ ΠΊΠ°ΠΊ программирования, Ρ‚Π°ΠΊ ΠΈ самого ассСмблСра, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ знакомство с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΈ ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ практичСских Π·Π°Π΄Π°Ρ‡. И ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ, ΠΊΠΎΠ³Π΄Π° настанСт врСмя ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ знакомству с ΠΎΠΊΠΎΠ½Π½Ρ‹ΠΌΠΈ прилоТСниями, Π·Π° ΠΏΠ»Π΅Ρ‡Π°ΠΌΠΈ ΡƒΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Π½ΡƒΡˆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ запас Π·Π½Π°Π½ΠΈΠΉ, ясноС прСдставлСниС ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ процСссора ΠΈ, самоС Π³Π»Π°Π²Π½ΠΎΠ΅, осознаниС своих дСйствий: ΠΊΠ°ΠΊ ΠΈ Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ассСмблСр?

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

На Π·Π°Ρ€Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ эры ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π­Π’Πœ Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Ρ†Π΅Π»Ρ‹Π΅ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρ‹ ΠΈ вСсили Π½Π΅ ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΠ½Π½Ρƒ, имСя объСм памяти с Π²ΠΎΡ€ΠΎΠ±ΡŒΠΈΠ½Ρ‹ΠΉ ΠΌΠΎΠ·Π³, Π° Ρ‚ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ мСньшС. ЕдинствСнным способом программирования Π² Ρ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π° Π±Ρ‹Π»ΠΎ Π²Π±ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° нСпосрСдствСнно Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚ΡƒΠΌΠ±Π»Π΅Ρ€Ρ‹, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΊΠΈ ΠΈ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ. Число Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΌΠΎΠ³Π»ΠΎ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сотСн ΠΈ росло ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ услоТнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Встал вопрос ΠΎΠ± экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Π΄Π΅Π½Π΅Π³. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π² Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ стало появлСниС Π² ΠΊΠΎΠ½Ρ†Π΅ сороковых Π³ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ транслятора-ассСмблСра, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈ просто ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½Π° чСловСчСском языкС ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь процСсс программирования, ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΈΡ… ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ. Π—Π°Ρ‚Π΅ΠΌ появились языки высокого уровня ΠΈ компиляторы (Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ΄Π° с Π±ΠΎΠ»Π΅Π΅ понятного Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ языка) ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ (исполнитСли написанной Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π»Π΅Ρ‚Ρƒ). Они ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»ΠΈΡΡŒ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π»ΠΈΡΡŒ β€” ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, дошло Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΡ‹ΡˆΠΊΠΎΠΉ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ассСмблСр β€” это машинно ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΎΠ΄ΠΈΠ½. ΠžΡ‚ΡΡŽΠ΄Π° ΠΈ Π΅Π³ΠΎ полная Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° β€” язык программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ поколСния (послС машинного ΠΊΠΎΠ΄Π°). ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ процСссора, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ процСссоров со своим собствСнным Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, Ρ‚ΠΎ, соотвСтствСнно, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ разновидности, ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Ρ‹, языка ассСмблСра. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ использованиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «язык ассСмблСра» ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ сущСствовании Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΈΠ»ΠΈ хотя Π±Ρ‹ стандарта Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ языки. Π•Π³ΠΎ Π½Π΅ сущСствуСт. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написана конкрСтная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅ языка написана. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ассСмблСр привязан ΠΊ устройству процСссора, Π° Ρ‚ΠΈΠΏ процСссора ТСстко опрСдСляСт Π½Π°Π±ΠΎΡ€ доступных ΠΊΠΎΠΌΠ°Π½Π΄ машинного языка, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС Π½Π΅ пСрСносимы Π½Π° ΠΈΠ½ΡƒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ассСмблСр всСго лишь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ программисту Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ свой собствСнный ассСмблСр, Ρ‡Ρ‚ΠΎ часто ΠΈ происходит. На самом Π΄Π΅Π»Π΅ Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ Π²Π°ΠΆΠ½ΠΎ, язык ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ассСмблСра ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ. Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΠΏΠΎΠ½ΡΡ‚ΡŒ сам ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ процСссора, ΠΈ Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ составит Ρ‚Ρ€ΡƒΠ΄Π° ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ассСмблСр, Π½ΠΎ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ процСссор со своим Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄.

Бинтаксис

ΠžΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ½ΡΡ‚ΠΎΠ³ΠΎ стандарта для синтаксиса языков ассСмблСра Π½Π΅ сущСствуСт. Однако Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² языков ассСмблСра ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ‰ΠΈΡ… Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π°ΠΊΠΈΠ΅ стандарты β€” Intel-синтаксис ΠΈ AT&T-синтаксис.

ΠžΠ±Ρ‰ΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записи инструкций ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² для ΠΎΠ±ΠΎΠΈΡ… стандартов:

Опкод β€” это ΠΈ Π΅ΡΡ‚ΡŒ собствСнно ассСмблСрная ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° инструкции процСссору. К Π½Π΅ΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ прСфиксы (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, повторСния, измСнСния Ρ‚ΠΈΠΏΠ° адрСсации). Π’ качСствС ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ константы, названия рСгистров, адрСса Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ стандартами Intel ΠΈ AT&T ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ Π² основном порядка пСрСчислСния ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² ΠΈ ΠΈΡ… синтаксиса ΠΏΡ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… адрСсации.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ для всСх процСссоров ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ сСмСйства Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ (срСди ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстных β€” ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссоров ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Motorola, ARM, x86). Они ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² спСцификации процСссоров.

НапримСр, процСссор Zilog Z80 наслСдовал систСму ΠΊΠΎΠΌΠ°Π½Π΄ Intel i8080, Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ» Π΅Π΅ ΠΈ помСнял Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (ΠΈ обозначСния рСгистров) Π½Π° свой Π»Π°Π΄. НапримСр, смСнил Intel-ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mov Π½Π° ld. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Ρ‹ Motorola Fireball наслСдовали систСму ΠΊΠΎΠΌΠ°Π½Π΄ Z80, нСсколько Π΅Π΅ ΡƒΡ€Π΅Π·Π°Π². ВмСстС с Ρ‚Π΅ΠΌ Motorola ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ ΠΊ Intel-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ, ΠΈ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ассСмблСров для Fireball Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Intel-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, Π° ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° β€” с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Zilog.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹

ΠšΡ€ΠΎΠΌΠ΅ ассСмблСрных ΠΊΠΎΠΌΠ°Π½Π΄, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ β€” ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π΅ пСрСводящиСся нСпосрСдствСнно Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ инструкции, Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ компилятора. Набор ΠΈ синтаксис ΠΈΡ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ разнятся ΠΈ зависят Π½Π΅ ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π° ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ компилятора. Π’ качСствС Π½Π°Π±ΠΎΡ€Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ:

Достоинства ΠΈ нСдостатки

К достоинствам ΠΌΠΎΠΆΠ½ΠΎ отнСсти ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π—Π° нСдостатки ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ слСдуСт ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ язык ассСмблСра?

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

Π’Π°ΠΊ Π·Π°Ρ‡Π΅ΠΌ ΠΆΠ΅ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ врСмя Π½Π° Π΅Π³ΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅? По ряду вСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½, ΠΈ Π²ΠΎΡ‚ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ…: ассСмблСр β€” это ΠΊΡ€Π°Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ камСнь, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ покоится всС бСсконСчноС пространство программирования, начиная ΠΎΡ‚ роТдСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ процСссора. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„ΠΈΠ·ΠΈΠΊ ΠΌΠ΅Ρ‡Ρ‚Π°Π΅Ρ‚ Ρ€Π°Π·Π³Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΉΠ½Ρƒ строСния всСлСнной, Π½Π°ΠΉΡ‚ΠΈ эти Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡ‹Π΅ (Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅) элСмСнты, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° состоит, Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡΡΡŒ лишь смутным ΠΎ Ρ‚ΠΎΠΌ прСдставлСниСм ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ. АссСмблСр ΠΆΠ΅ ΠΈ Π΅ΡΡ‚ΡŒ Ρ‚Π° пСрвичная матСрия, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ состоит всСлСнная процСссора. Он β€” Ρ‚ΠΎΡ‚ инструмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄. А ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡƒΠΌΠ΅Π½ΠΈΠ΅ просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ программисту, Π΄Π°ΠΆΠ΅ Ссли Π½ΠΈΠΊΠΎΠ³Π΄Π° Π² ΠΆΠΈΠ·Π½ΠΈ ΠΎΠ½ Π½Π΅ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ ассСмблСрной строчки. НСльзя ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΌ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ имСя понятия ΠΎΠ± элСмСнтарной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅. На ΠΊΠ°ΠΊΠΎΠΌ Π±Ρ‹ языкС Π²Ρ‹ Π½ΠΈ писали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ хотя Π±Ρ‹ Π² ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚Π°Ρ… ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ процСссор, исполняя вашС Π²Ρ‹ΡΠΎΡ‡Π°ΠΉΡˆΠ΅Π΅ ΠΏΠΎΠ²Π΅Π»Π΅Π½ΠΈΠ΅. Если Ρ‚Π°ΠΊΠΎΠ³ΠΎ понимания Π½Π΅Ρ‚, программист Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π±Π΅Π·Π΄ΡƒΠΌΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ всС доступныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ вСдая, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΎΠ½ Ρ‚Π²ΠΎΡ€ΠΈΡ‚.

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

Π˜Π½Ρ‹ΠΌΠΈ словами, Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ процСссоры, ассСмблСр Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ.

Π’ этом ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ язык ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ассСмблСра ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ. Зная ΠΎΠ΄ΠΈΠ½ язык ассСмблСра, Ρ‚Ρ‹ с успСхом моТСшь Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ, ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΠ² лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя Π½Π° ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ справочной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Но самоС Π³Π»Π°Π²Π½ΠΎΠ΅ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, умСя ΠΌΡ‹ΡΠ»ΠΈΡ‚ΡŒ языком процСссора, Ρ‚Ρ‹ всСгда Π±ΡƒΠ΄Π΅ΡˆΡŒ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, для Ρ‡Π΅Π³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈ Π·Π°Ρ‡Π΅ΠΌ происходит. А это ΡƒΠΆΠ΅ Π½Π΅ просто ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ программирования ΠΌΡ‹ΡˆΠΊΠΎΠΉ, Π° ΠΏΡƒΡ‚ΡŒ ΠΊ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, нСсущСго ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Π²Π΅Π»ΠΈΠΊΠΎΠ³ΠΎ мастСрства.

АссСмблСр β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ искусство?

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚Π°ΠΊ, всС зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² Ρ‡ΡŒΠΈΡ… Ρ€ΡƒΠΊΠ°Ρ… ΠΎΠ½ находится. АссСмблСр β€” это ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ элСмСнт ΠΌΠΈΡ€Π° процСссора, ΠΈΠ· сочСтаний этих элСмСнтов складываСтся Π΅Π³ΠΎ Π΄ΡƒΡˆΠ°, Π΅Π³ΠΎ самосознаниС. Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ вся ΠΌΡƒΠ·Ρ‹ΠΊΠ°, написанная Π² истории чСловСчСства, состоит ΠΈΠ· сочСтаний сСми Π½ΠΎΡ‚, Ρ‚Π°ΠΊ ΠΈ сочСтаниС ассСмблСрных ΠΊΠΎΠΌΠ°Π½Π΄ наполняСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΉ ΠΌΠΈΡ€ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Тизнью. ΠšΡ‚ΠΎ Π·Π½Π°Π΅Ρ‚ лишь Ρ‚Ρ€ΠΈ Π°ΠΊΠΊΠΎΡ€Π΄Π° β€” это «попса», ΠΊΠΎΠΌΡƒ ΠΆΠ΅ извСстна вся ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° β€” это классика.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ Π½Π°ΡƒΠΊΠ° Ρ‚Π°ΠΊ ΠΆΠ°ΠΆΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π² ΠΊΠ²Π°Π½Ρ‚ΠΎΠ²Ρ‹Π΅ Π³Π»ΡƒΠ±ΠΈΠ½Ρ‹ ΠΈ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π² свои Ρ€ΡƒΠΊΠΈ Π½Π΅ΡƒΠ»ΠΎΠ²ΠΈΠΌΡ‹ΠΉ ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠΈ? Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°Π΄ Π½Π΅ΠΉ Π²Π»Π°ΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π΅ ΠΏΠΎ своСй Π²ΠΎΠ»Π΅, ΡΡ‚Π°Ρ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π’Π²ΠΎΡ€Ρ†Π° ВсСлСнной. Π’ Ρ‡ΡŒΠΈ Ρ€ΡƒΠΊΠΈ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚ такая Π²Π»Π°ΡΡ‚ΡŒ β€” это Π΅Ρ‰Π΅ вопрос. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π½Π°ΡƒΠΊΠΈ, Π² ΠΌΠΈΡ€Π΅ программирования Ρ‚Π°ΠΉΠ½ Π½Π΅Ρ‚, Π½Π°ΠΌ извСстны ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΈ, Π΅Π³ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈ Ρ‚Π° Π²Π»Π°ΡΡ‚ΡŒ Π½Π°Π΄ процСссором, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΌ Π΄Π°Π΅Ρ‚ Π·Π½Π°Π½ΠΈΠ΅ ассСмблСра.

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

АссСмблСр ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€

НС Ρ‚Π°ΠΊ Π΄Π°Π²Π½ΠΎ ДТСймс ΠšΡΠΌΠ΅Ρ€ΠΎΠ½ выпустил Π² свСт 3D-Π²Π΅Ρ€ΡΠΈΡŽ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Β«Π’Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°Β», ΠΈ Π² качСствС интСрСсного историчСского Ρ„Π°ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΈΠ±ΠΎΡ€Π³Π°-ΡƒΠ±ΠΈΠΉΡ†Ρ‹.

ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. terminator. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Ρ„ΠΎΡ‚ΠΎ. ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄-terminator. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ассСмблСр Π³Π΄Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° terminator. МногиС ΠΈΠ· нас ΠΈΠ·ΡƒΡ‡Π°Π»ΠΈ ассСмблСр Π² унивСрситСтС, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π»ΠΎΡΡŒ простыми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΏΠΎΠ΄ DOS. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Windows ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° ассСмблСр, Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ассСмблСр Π² Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΏΠΎΠ΄ Visual Studio 2005. ΠšΠ°Π΄Ρ€ ΠΈΠ· Ρ„ΠΈΠ»ΡŒΠΌΠ° Β«Π’Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Β»

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Β«Π·Ρ€Π΅Π½ΠΈΠ΅Β» Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π°, Π° слСва Π½Π° Π½Π΅ΠΌ отобраТаСтся ассСмблСрный листинг. Будя ΠΏΠΎ Π½Π΅ΠΌΡƒ, Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹ΠΉ Π£Π½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π° процСссорС MOS Technology 6502 Π»ΠΈΠ±ΠΎ Π½Π° MOS Technology 6510. Π­Ρ‚ΠΎΡ‚ процСссор Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π² 1975 Π³ΠΎΠ΄Ρƒ, использовался Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Apple ΠΈ, ΠΏΠΎΠΌΠΈΠΌΠΎ всСго ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, Π½Π° Π·Π½Π°ΠΌΠ΅Π½ΠΈΡ‚Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… приставках Ρ‚ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Atari 2600 ΠΈ Nintendo Entertainment System (Ρƒ нас Π±ΠΎΠ»Π΅Π΅ извСстной ΠΊΠ°ΠΊ Dendy). ИмСл лишь Ρ‚Ρ€ΠΈ 8-разрядных рСгистра: А-аккумулятор ΠΈ Π΄Π²Π° индСксных рСгистра X ΠΈ Y. Π’Π°ΠΊΠΎΠ΅ ΠΌΠ°Π»ΠΎΠ΅ ΠΈΡ… количСство ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 256 Π±Π°ΠΉΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти (Ρ‚Π°ΠΊ называСмая нулСвая страница) ΠΌΠΎΠ³Π»ΠΈ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ фактичСски использовались Π² качСствС 8-разрядных ΠΈΠ»ΠΈ 16-разрядных рСгистров. Π£ Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСссора Π±Ρ‹Π»ΠΎ 13 Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² адрСсации Π½Π° всСго 53 ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π£ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° ΠΈΠ΄Π΅Ρ‚ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° инструкций LDA-STA-LDA-STA. Π’ сСмСйствС 6502 ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состояли Ρ‡ΡƒΡ‚ΡŒ ΠΌΠ΅Π½Π΅Π΅ Ρ‡Π΅ΠΌ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ· LDA/LDY/LDX/STA/STX/STY:

Π§Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ запись Π² ΠΏΠΎΡ€Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ этими ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ‚ΠΎΡ€Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ осмыслСнный Π²ΠΈΠ΄, Π° Π½Π΅ прСдставляСт собой Π±Π΅ΡΡ‚ΠΎΠ»ΠΊΠΎΠ²ΡƒΡŽ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΡŽ сцСнариста: MOS Technology 6502 / БистСма ΠΊΠΎΠΌΠ°Π½Π΄.

ΠžΡ‚Ρ€Π°ΡΠ»ΠΈ практичСского примСнСния

Π Π°Π½Π΅Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² нашС врСмя ассСмблСр ΠΏΠΎΡ‡Ρ‚ΠΈ вытСснСн языками высокого уровня. Однако ΠΈ ΠΏΠΎ сСй дСнь Π΅ΠΌΡƒ находится ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹.

ВмСсто Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

ΠœΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ Π² ассСмблСр Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… Ρ†ΠΈΠΊΠ»Π°. Π’Π΅ΠΌΡ‹ этого Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ, Π½ΠΎ Ссли Ρƒ тСбя Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΈΠ΄Π΅ΠΈ ΠΈΠ»ΠΈ поТСлания β€” смСло пиши Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Ρ‹, всС ΡƒΡ‡Ρ‚Π΅ΠΌ. 🙂

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *