Π Π°Π·Π½ΠΎΠ΅

АссСмблСр язык программирования: АссСмблСр. ВступлСниС | Π£Ρ€ΠΎΠΊΠΈ АссСмблСра

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

АссСмблСр. ВступлСниС | Π£Ρ€ΠΎΠΊΠΈ АссСмблСра

  Обновл. 29 БСн 2019  | 

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ микропроцСссор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт арифмСтичСской, логичСской ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

КаТдоС сСмСйство процСссоров ΠΈΠΌΠ΅Π΅Ρ‚ свой собствСнный Π½Π°Π±ΠΎΡ€ инструкций для выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²Π²ΠΎΠ΄Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° экранС ΠΈ Ρ‚.Π΄. Π­Ρ‚ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ инструкций называСтся инструкциями машинного языка.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ инструкции машинного языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ Π±ΠΈΡ‚: 1 ΠΈΠ»ΠΈ 0. Однако ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык слишком слоТСн ΠΈ нСпонятСн для использования Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ сСмСйства процСссоров Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Π½Π°Π±ΠΎΡ€ инструкций для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π±ΠΎΠ»Π΅Π΅ понятной Ρ„ΠΎΡ€ΠΌΠ΅. Π­Ρ‚ΠΎΡ‚ язык Π½Π°Π·Π²Π°Π»ΠΈ языком ассСмблСра (ΠΈΠ»ΠΈ просто «ассСмблСр»). АссСмблСр – это транслятор (ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠ΄, написанный Π½Π° языкС ассСмблСра, Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° языка ассСмблСра

ИспользованиС языка ассСмблСра позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ:

Β  Β ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой, процСссором ΠΈ BIOS-ΠΎΠΌ;

Β  Β ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ прСдставлСны Π² памяти ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… устройствах;

Β  Β ΠΊΠ°ΠΊ процСссор ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ инструкциям ΠΈ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡ… выполняСт;

Β  Β ΠΊΠ°ΠΊ инструкции ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ эти Π΄Π°Π½Π½Ρ‹Π΅;

Β  Β ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ доступ ΠΊ внСшним устройствам.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ прСимущСства использования языка ассСмблСра:

Β  Β Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ мСньшС памяти;

Β   быстрСС выполняСтся;

Β  Β ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ слоТныС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ характСристики Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния ПК

ОсновноС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ обСспСчСниС ПК состоит ΠΈΠ· процСссора, памяти ΠΈ рСгистров. РСгистры – это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ процСссора, содСрТащиС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΈΡ… адрСса Π² памяти. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, систСма ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Ρ‘ с внСшнСго устройства Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π—Π°Ρ‚Π΅ΠΌ процСссор выполняСт инструкции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π”Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ хранятся Π² Π±ΠΈΡ‚Π°Ρ…: 1 (Π’ΠšΠ›) ΠΈΠ»ΠΈ 0 (Π’Π«ΠšΠ›).

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

Β  Β word: 2-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ элСмСнт Π΄Π°Π½Π½Ρ‹Ρ…;

Β  Β doubleword: 4-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ (32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ) элСмСнт Π΄Π°Π½Π½Ρ‹Ρ…;

Β  Β quadword: 8-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΉ (64-Π±ΠΈΡ‚Π½Ρ‹ΠΉ) элСмСнт Π΄Π°Π½Π½Ρ‹Ρ…;

Β  Β paragraph: 16-байтовая (128-битная) ΠΎΠ±Π»Π°ΡΡ‚ΡŒ;

Β  Β kilobyte: 1024 Π±Π°ΠΉΡ‚;

Β  Β megabyte: 1 048 576 Π±Π°ΠΉΡ‚.

Двоичная систСма счислСния

КаТдая систСма счислСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ обозначСния. Π’.Π΅. ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… записаны Π±ΠΈΡ‚Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ значСния. КаТдоС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ состоит ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ значСния, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° 2 (ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° 2, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это бинарная систСма, которая состоит ΠΈΠ· 2-ΡƒΡ… чисСл). Если Π±ΠΈΡ‚ΠΎΠΌ являСтся 1, Ρ‚ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ умноТаСтся Π½Π° 2, Π° Ссли 0, Ρ‚ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ остаётся 0. Π’ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ систСмС счислСния отсчёт вСдётся справа Π½Π°Π»Π΅Π²ΠΎ, Π° Π½Π΅ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (ΠΊΠ°ΠΊ Π² дСсятичной систСмС).

НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ значСния 8-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ числа 11111101:

Π‘ΠΈΡ‚11111101
ΠŸΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1286432168401
НомСр Π±ΠΈΡ‚Π°76543210

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ числа Ρ€Π°Π²Π½ΠΎ суммС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ всСх Π±ΠΈΡ‚ΠΎΠ²:

1 + 4 + 8 + 16 + 32 + 64 + 128 = 253

Π”Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ 11111101 = дСсятичноС 253. Π”Π΅Ρ‚Π°Π»ΡŒΠ½Π΅Π΅ ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ чисСл ΠΈΠ· Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ систСмы Π² Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ слоТСнии Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Ρ… чисСл Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² ΡƒΡ€ΠΎΠΊΠ΅ β„–44.

ШСстнадцатСричная систСма счислСния

ШСстнадцатСричная систСма счислСния состоит ΠΈΠ· 16 символов: 0-9 ΠΈ A-F. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ A-F ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для прСдставлСния ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹Ρ… Ρ†ΠΈΡ„Ρ€, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… дСсятичным значСниям с 10 ΠΏΠΎ 15.

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

ДСсятичноС прСдставлСниСДвоичноС прСдставлСниСШСстнадцатСричноС прСдставлСниС
000
111
2102
3113
41004
51015
61106
71117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F

Для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ числа Π² Π΅Π³ΠΎ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ эквивалСнт, Ρ€Π°Π·Π±Π΅ΠΉΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ число Π½Π° 4 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹, начиная справа, ΠΈ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ эти Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ†ΠΈΡ„Ρ€ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ число 1000 (8) 1100 (C) 1101 (D) 0001 (1) эквивалСнтно ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌΡƒ 8CD1.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ число Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅, просто Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ Π² Π΅Ρ‘ 4-Π·Π½Π°Ρ‡Π½Ρ‹ΠΉ Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ эквивалСнт.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ШСстнадцатСричноС число FAD8 эквивалСнтно Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌΡƒ 1111 (F) 1010 (A) 1101 (D) 1000 (8).

АдрСсация Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти

ΠŸΡ€ΠΎΡ†Π΅ΡΡ, посрСдством ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ процСссор управляСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ инструкций, называСтся Ρ†ΠΈΠΊΠ»ΠΎΠΌ выполнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов:

Β  Β ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ инструкции ΠΈΠ· памяти;

Β  Β Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²ΠΊΠ° ΠΈΠ»ΠΈ идСнтификация инструкции;

Β  Β Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ инструкции.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ нСскольким Π±Π°ΠΉΡ‚Π°ΠΌ памяти. НапримСр, рассмотрим ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0824H, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π±Π°ΠΉΡ‚Π° памяти. Π‘Π°ΠΉΡ‚ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда ΠΈΠ»ΠΈ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ Π±Π°ΠΉΡ‚ – 08, младший Π±Π°ΠΉΡ‚ – 24.

ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ², Ρ‚.Π΅. Π±Π°ΠΉΡ‚ младшСго разряда сохраняСтся Π² Π½ΠΈΠΆΠ½Π΅ΠΌ адрСсС памяти (слСва), Π° Π±Π°ΠΉΡ‚ ΡΡ‚Π°Ρ€ΡˆΠ΅Π³ΠΎ разряда – Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ адрСсС памяти (справа). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли процСссор пСрСнСсёт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0824H ΠΈΠ· рСгистра Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ‚ΠΎ 24 Π±ΡƒΠ΄Π΅Ρ‚ Π² Π½Π°Ρ‡Π°Π»Π΅ строки, Π° 08 – Π² ΠΊΠΎΠ½Ρ†Π΅, Π½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ процСссор Π±ΡƒΠ΄Π΅Ρ‚ справа Π½Π°Π»Π΅Π²ΠΎ, Π° Π½Π΅ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ (ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ процСссор Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ систСмС счислСния):

Когда процСссор пСрСносит Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· памяти Π² рСгистр, Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΏΡΡ‚ΡŒ мСняСт мСстами Π±Π°ΠΉΡ‚Ρ‹ (Ρ‚.Π΅. 08 ΠΎΠΏΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ слСва, Π° 24 – справа).

Π•ΡΡ‚ΡŒ 2 Π²ΠΈΠ΄Π° адрСсов памяти:

Β  Β Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ адрСс – прямая ссылка Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ мСстополоТСниС.

Β   сСгмСнтный адрСс (ΠΈΠ»ΠΈ Π΅Ρ‰Ρ‘ «смСщСниС») – адрСс сСгмСнта памяти со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ смСщСния.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим установку срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ для языка ассСмблСра.

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°…

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

Архивы АссСмблСр с нуля — АссСмблСрный ΠΊΠΎΠ΄

ΠŸΡ€ΠΎΡ‰Π°ΠΉ ассСмблСр MS-DOS ΠΈ здравствуй Windows!

ΠœΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ 16 Π±ΠΈΡ‚Π½Ρ‹ΠΉ ассСмблСр MS-DOS ΠΈ приступаСм ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ программирования Π½Π° 32 Π±ΠΈΡ‚Π½ΠΎΠΌ ассСмблСрС для Windows.

НуТно Π»ΠΈ Π±Ρ‹Π»ΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄Π΅ ΠΌΡ‘Ρ€Ρ‚Π²ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы, вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сразу ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ основам соврСмСнного программирования? Для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ успСха Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ программирования β€” это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ знаниям 16 Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ ассСмблСра Π²Ρ‹ вряд Π»ΠΈ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ Π² нашС врСмя. ΠŸΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ Π½Π°ΠΌΠΈ этап β€” это основа тСорСтичСских Π·Π½Π°Π½ΠΈΠΉ ΠΈ практичСского понимания сути программирования Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π΅Π΅ Π½Π°Ρ‡Π°Π»ΠΎ. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 19. ΠŸΡ€ΠΎΡ‰Π°ΠΉ ассСмблСр MS-DOS!Β»

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 9. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ просто ΠΈ понятно Π±Ρ‹Π»ΠΎ рассмотрСно, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (pointer). БСйчас ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ вопросу практичСского использования указатСля. Π•Ρ‰Ρ‘ Ρ€Π°Π· Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ассСмблСрС β€” Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ понятиС, Ρ‡Π΅ΠΌ Π² Π‘ΠΈ ΠΈ Π‘++, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ ΠΊΠ°ΠΊ пСрСмСнная, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся адрСс ячСйки памяти. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрСмСнная. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ассСмблСрС β€” адрСс ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ ячСйки памяти. Жёсткой привязки ΠΊ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ Β«ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉΒ» Π½Π΅Ρ‚.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ указатСля β€” простая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ части исполняСмого ΠΊΠΎΠ΄Π° Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, избСгая ΠΈΡ… дублирования. НапримСр, ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· написав ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ, осущСствляя Π²Ρ‹Π·ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΡΡ‚Π°Ρ‚ΠΈ, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” это ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ исполнСния ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ для удобства Β«ΠΎΠ±ΠΎΠ·Π²Π°Π»ΠΈΒ» понятным для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ (Π½Ρƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«MyBestFuncΒ»). ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 18. Π•Ρ‰Ρ‘ Ρ€Π°Π· ΠΎΠ± ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅.Β»

ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² ассСмблСрС.

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ вопроса Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ константа, массив, структура Π² ассСмблСрС, ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ понятии абстракции.

Для упрощСния написания ΠΊΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² понятный для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π²ΠΈΠ΄, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅ Π² ΡƒΡ‰Π΅Ρ€Π± для ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ условности ΠΈ обобщСния β€” ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ абстракции. Один ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… способов абстракции β€” Ρ€Π°Π·Π±ΠΈΠ²ΠΊΠ° ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° части β€” Π±Π»ΠΎΠΊΠΈ ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ ΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ особСнностями. Π—Π°Ρ‚Π΅ΠΌ эти Π±Π»ΠΎΠΊΠΈ ΠΎΠ±Π·Ρ‹Π²Π°ΡŽΡ‚ понятным для Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° языком. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 17. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹, массивы, структуры ΠΈ Ρ‚.Π΄.Β»

Π―Π΄Ρ€ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы β€” Π½Π°Π±ΠΎΡ€ систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠžΡΠ½ΠΎΠ²Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Windows 95 β€” Windows XP составляСт Π½Π°Π±ΠΎΡ€ систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, содСрТащихся Π² Ρ„Π°ΠΉΠ»Π°Ρ… с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ *.DLL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² систСмных диррСкториях … Windows\System,Β  System32, SysWOW64 (для 64 Π±ΠΈΡ‚Π½Ρ‹Ρ… вСрсий ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½ΠΎΠΊ) β€” Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Win API. К слову, Π² Windows 10 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Win API Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° практичСски Π² ΠΏΠΎΠ»Π½ΠΎΠΌ ΠΎΠ±ΡŠΡ‘ΠΌΠ΅, хотя ядро систСмы нСсколько измСнилось). Π’ MS-DOS ядро Ρ‚Π°ΠΊΠΆΠ΅ состоит ΠΈΠ· систСмных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ прСрывания DOS. Ну, Ссли Ρ‚ΠΎΡ‡Π½ΠΎ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ прСрывания DOS, Π° Π΅ΡΡ‚ΡŒ прСрывания BIOS (связаны с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΆΠ΅Π»Π΅Π·ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ прСрывания DOSΒ  ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· прСрывания BIOS), Π΄Π° ΠΈ понятиС ядра систСмы ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒβ€¦ Для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΈ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ отбросим услоТнСния Π² сторону! Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ понятиС для всСх ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ: прСрывания DOS. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 16. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ DOS.Β»

ΠœΠ°ΠΊΡ€ΠΎΡ β€” ΠΌΠ°ΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° популярных ассСмблСров (TASM, MASM, FASM), имССтся опрСдСлённая Β«Π²ΠΊΡƒΡΠ½ΠΎΡΡ‚ΡŒΒ», которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ понятный ΠΊΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ошибок. ΠœΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π²Π²ΠΈΠ΄Ρƒ макросы. ΠœΠ°ΠΊΡ€ΠΎΡ β€” ΠΌΠΈΠ½ΠΈΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий основных ΠΊΠΎΠΌΠ°Π½Π΄ ассСмблСра. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π»ΠΈΠ±ΠΎ ΡƒΠΆΠ΅ создан ΠΈ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ассСмблСра, Π»ΠΈΠ±ΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ выясним, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ макрос Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹), встроСнный Π² TASM. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 15. Π£ΠΏΡ€ΠΎΡ‰Π°Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² TASM.Β»

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ассСмблСрС β€” это Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°, которая Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ нСсколько, ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅Π»ΡŒΡŽ Π·Π°Π΄Π°Ρ‡. Ѐункция ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ дублирования ΠΊΠΎΠ΄Π°. Π§Π΅Π»ΠΎΠ²Π΅ΠΊ способСн ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΒ  ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ΅ число ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Для облСгчСния понимания ΠΈ создания ΠΊΠΎΠ΄Π° Π΅Π³ΠΎ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ β€” дробят Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ части. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 14. ΠšΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.Β»

Π‘Ρ‚Π΅ΠΊ Π² ассСмблСрС.

Π Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ тСсно связана со стСком. Π‘Ρ‚Π΅ΠΊΠΎΠΌ называСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Π΅ΠΊ Π² ассСмблСрС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ Β«ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π·Π°ΡˆΡ‘Π» β€” послСдним Π²Ρ‹ΡˆΠ΅Π», послСдним Π·Π°ΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β». Π’ любой ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² стСкС доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ элСмСнт, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Π² стСк послСдним. Π’Ρ‹Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈΠ· стСка Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ элСмСнта Π΄Π΅Π»Π°Π΅Ρ‚ доступным ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Π­Ρ‚ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ящик, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ лоТатся ΠΊΠ½ΠΈΠ³ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΠ½ΠΈΠ³Π΅, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŒ ΠΏΠΎΠΎΡ‡Π΅Ρ€Ρ‘Π΄Π½ΠΎ всС ΠΊΠ½ΠΈΠ³ΠΈ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ свСрху. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Β«MS-DOS ΠΈ TASM 2.0. Π§Π°ΡΡ‚ΡŒ 13. Π‘Ρ‚Π΅ΠΊ.Β»

язык АссСмблСра. ΠžΡΠ½ΠΎΠ²Ρ‹ языка АссСмблСра

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ машина ΠΌΠΎΠ³Π»Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π½Π° Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий Π½Π° языкС Β«Π½ΠΎΠ»ΠΈΠΊΠΎΠ² ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†Β». ΠŸΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ Π² этом Π΄Π΅Π»Π΅ станСт АссСмблСр. Π­Ρ‚ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык. Однако написаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — вСсьма Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΈ слоТный процСсс. Π”Π°Π½Π½Ρ‹ΠΉ язык Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для создания Π»Π΅Π³ΠΊΠΈΡ… ΠΈ простых дСйствий. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ любой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык программирования (АссСмблСр Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ прСкрасно) позволяСт Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ эффСктивныС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сильно Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ части. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ являСтся созданиС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ². Π”Π°Π½Π½Ρ‹ΠΉ язык Π΄Π°Π΅Ρ‚ большС возмоТностСй, Ρ‡Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Паскаль ΠΈΠ»ΠΈ Π‘.

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС языков АссСмблСра

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

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

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎ структурС языка

Если Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ структурС функционирования языка, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ процСссора. Π’ΠΎ Π΅ΡΡ‚ΡŒ АссСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½Π΅ΠΌΠΎΠΊΠΎΠ΄Ρ‹, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ для записи.

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

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½Π΅ΠΉΠΊΠΈ процСссора сущСствуСт своя систСма ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ раскладС ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ любой процСсс, Π² Ρ‚ΠΎΠΌ числС ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π―Π·Ρ‹ΠΊ АссСмблСра ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько синтаксисов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠŸΠ»ΡŽΡΡ‹ языка

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

Π”Ρ€Π°ΠΉΠ²Π΅Ρ€Π°, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, BIOS, компиляторы, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ‚. Π΄. – это всС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° языкС АссСмблСра.

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

ΠœΠΈΠ½ΡƒΡΡ‹ языка

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

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

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

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ языка

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ процСссора имССтся свой Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌΠΈ элСмСнтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄Ρ‹:

  • ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ mov ΠΈ Ρ‚. Π΄.
  • ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, связанныС с Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ: sub, imul ΠΈ Π΄Ρ€.
  • ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²Ρ‹Π΅ ΠΈ логичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ or, and ΠΈ Ρ‚. ΠΏ. ИмСнно эти основы языка АссСмблСра ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΅ΠΌΡƒ Π±Ρ‹Ρ‚ΡŒ схоТим с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ.
  • Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ, слСдуСт ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹: djnz, cfsneq, cjne. НСопытному программисту ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ это просто Π½Π°Π±ΠΎΡ€ Π±ΡƒΠΊΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π΅Π²Π΅Ρ€Π½ΠΎ.
  • In ΠΈ out ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° Π² ΠΏΠΎΡ€Ρ‚ (ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ· Π½Π΅Π³ΠΎ).
  • К ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ относят int. Благодаря Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ процСссов Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ основного дСйствия.

ИспользованиС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠ² Π½Π° языкС (АссСмблСр это позволяСт ΠΈ прСкрасно справляСтся с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ) самого Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв заканчиваСтся ΡƒΠ΄Π°Ρ‡Π½ΠΎ. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСссоры с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌ рСсурсом. Для 32-разрядной Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ язык ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Часто Π² ΠΊΠΎΠ΄Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹. Π§Ρ‚ΠΎ ΠΆΠ΅ это? И для Ρ‡Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ?

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

  • ВсСм извСстныС макросы.
  • Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ Π²Ρ‹ΡΡˆΠΈΠΉ язык. АссСмблСр ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ «считываСт» ΠΈΡ… ΠΈ выполняСт.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ контролирования ΠΈ управлСния Ρ€Π΅ΠΆΠΈΠΌΠ°ΠΌΠΈ компилятора.
  • РаспознаваниС констант ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • Π Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ находятся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ названия

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

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

ΠœΠ°ΠΊΡ€ΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π°

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

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

Assembler – Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня / Π₯Π°Π±Ρ€

ΠœΠ΅ΡΡΡ† Π½Π°Π·Π°Π΄ я попытался ΡΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, сколько Ρ€Π°Π·Π½Ρ‹Ρ… инструкций поддСрТиваСтся соврСмСнными процСссорами, ΠΈ насчитал 945 Π² Ice Lake. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ интСрСсный вопрос: какая Ρ‡Π°ΡΡ‚ΡŒ всСго этого разнообразия Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ компиляторами? НапримСр, Π½Π΅ΠΊΡ‚ΠΎ Pepijn de Vos Π² 2016 подсчитал, сколько Ρ€Π°Π·Π½Ρ‹Ρ… инструкций задСйствовано Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°Ρ… Ρƒ Π½Π΅Π³ΠΎ Π² /usr/bin, ΠΈ насчитал 411 β€” Ρ‚.Π΅. ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒ всСх инструкций x86_64, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π΅ использовались Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· стандартных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π΅Π³ΠΎ ОБ. Другая Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°Ρ Π΅Π³ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΊΠ° β€” Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ для x86_64 Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ состоит ΠΈΠ· инструкций mov. (Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΡ… инструкций mov достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.)

Π― Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ исслСдованиС de Vos, взяв Π² качСствС «эталонного ΠΊΠΎΠ΄Π°Β» компилятор LLVM/Clang. Π£ Π½Π΅Π³ΠΎ сразу нСсколько прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ содСрТимым /usr/bin Π½Π΅Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ вСрсии Π½Π΅Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ ОБ:

  1. Π‘ Π½ΠΈΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ: это ΠΎΠ΄ΠΈΠ½ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ, ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ сопоставимый со всСм содСрТимым /usr/bin срСднСстатистичСского линукса;
  2. Он позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ISA: Π½Π° releases.llvm.org/download.html доступны ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ для x86, ARM, SPARC, MIPS ΠΈ PowerPC;
  3. Он позволяСт ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ историчСскиС Ρ‚Ρ€Π΅Π½Π΄Ρ‹: ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ доступны для всСх Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² начиная с 2003;
  4. НаконСц, Π² исслСдовании компиляторов Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор ΠΈ Π² качСствС ΠΏΠΎΠ΄ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° πŸ™‚

Начну со статистики ΠΏΠΎ мартовскому Ρ€Π΅Π»ΠΈΠ·Ρƒ LLVM 10.0:
Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ‚ΠΎΠΏΠΈΠΊΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ упомянули, Ρ‡Ρ‚ΠΎ самый ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρƒ Π½ΠΈΡ… получаСтся для SPARC. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ для AArch64 оказываСтся Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ мСньшС Ρ‡Ρ‚ΠΎ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ числу инструкций.

А Π²ΠΎΡ‚ распрСдСлСниС ΠΏΠΎ числу инструкций:

Assembler – Π―Π·Ρ‹ΠΊ программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня / Π₯Π°Π±Ρ€

ΠœΠ΅ΡΡΡ† Π½Π°Π·Π°Π΄ я попытался ΡΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, сколько Ρ€Π°Π·Π½Ρ‹Ρ… инструкций поддСрТиваСтся соврСмСнными процСссорами, ΠΈ насчитал 945 Π² Ice Lake. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΠ»ΠΈ интСрСсный вопрос: какая Ρ‡Π°ΡΡ‚ΡŒ всСго этого разнообразия Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ компиляторами? НапримСр, Π½Π΅ΠΊΡ‚ΠΎ Pepijn de Vos Π² 2016 подсчитал, сколько Ρ€Π°Π·Π½Ρ‹Ρ… инструкций задСйствовано Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ°Ρ… Ρƒ Π½Π΅Π³ΠΎ Π² /usr/bin, ΠΈ насчитал 411 β€” Ρ‚.Π΅. ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Ρ€Π΅Ρ‚ΡŒ всСх инструкций x86_64, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π½Π° Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π΅ использовались Π½ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· стандартных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² Π΅Π³ΠΎ ОБ. Другая Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Π°Ρ Π΅Π³ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΊΠ° β€” Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ для x86_64 Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ состоит ΠΈΠ· инструкций mov. (Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ извСстно, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈΡ… инструкций mov достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.)

Π― Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ исслСдованиС de Vos, взяв Π² качСствС «эталонного ΠΊΠΎΠ΄Π°Β» компилятор LLVM/Clang. Π£ Π½Π΅Π³ΠΎ сразу нСсколько прСимущСств ΠΏΠ΅Ρ€Π΅Π΄ содСрТимым /usr/bin Π½Π΅Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ вСрсии Π½Π΅Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ ОБ:

  1. Π‘ Π½ΠΈΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ: это ΠΎΠ΄ΠΈΠ½ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ, ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ сопоставимый со всСм содСрТимым /usr/bin срСднСстатистичСского линукса;
  2. Он позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ISA: Π½Π° releases.llvm.org/download.html доступны ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ для x86, ARM, SPARC, MIPS ΠΈ PowerPC;
  3. Он позволяСт ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ историчСскиС Ρ‚Ρ€Π΅Π½Π΄Ρ‹: ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠΈ доступны для всСх Ρ€Π΅Π»ΠΈΠ·ΠΎΠ² начиная с 2003;
  4. НаконСц, Π² исслСдовании компиляторов Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ компилятор ΠΈ Π² качСствС ΠΏΠΎΠ΄ΠΎΠΏΡ‹Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° πŸ™‚

Начну со статистики ΠΏΠΎ мартовскому Ρ€Π΅Π»ΠΈΠ·Ρƒ LLVM 10.0:
Π’ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ Ρ‚ΠΎΠΏΠΈΠΊΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ упомянули, Ρ‡Ρ‚ΠΎ самый ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρƒ Π½ΠΈΡ… получаСтся для SPARC. Π—Π΄Π΅ΡΡŒ ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊ для AArch64 оказываСтся Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒ мСньшС Ρ‡Ρ‚ΠΎ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ числу инструкций.

А Π²ΠΎΡ‚ распрСдСлСниС ΠΏΠΎ числу инструкций:

ARM Π°ccΠ΅ΠΌΠ±Π»Π΅Ρ€ / Π₯Π°Π±Ρ€

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ всСм!
По Ρ€ΠΎΠ΄Ρƒ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ я программист Π½Π° Java. ПослСдниС мСсяцы Ρ€Π°Π±ΠΎΡ‚Ρ‹ заставили мСня ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΏΠΎΠ΄ Android NDK ΠΈ соотвСтствСнно написаниС Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π‘. Π’ΡƒΡ‚ я столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Linux Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. МногиС оказались Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΏΠΎΠ΄ ARM ΠΈ сильно Π½Π°Π³Ρ€ΡƒΠΆΠ°Π»ΠΈ процСссор. Π Π°Π½Π΅Π΅ я практичСски Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π» Π½Π° ассСмблСрС, поэтому сначала Π±Ρ‹Π»ΠΎ слоТно Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот язык, Π½ΠΎ всС ΠΆΠ΅ я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ написана, Ρ‚Π°ΠΊ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ². Π― ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π΅ основы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΈΠ·ΡƒΡ‡ΠΈΠ», надСюсь ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ это заинтСрСсуСт. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΡƒΠ΄Ρƒ Ρ€Π°Π΄ конструктивной ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ΅ со стороны профСссионалов.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π°ΠΊ, для Π½Π°Ρ‡Π°Π»Π° разбСрёмся Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ARM. ВикипСдия Π΄Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅:

АрхитСктура ARM (Advanced RISC Machine, Acorn RISC Machine, ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½Π½Π°Ρ RISC-машина) β€” сСмСйство Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… микропроцСссорных ядСр Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ARM Limited. Компания занимаСтся ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ядСр ΠΈ инструмСнтов для Π½ΠΈΡ… (компиляторы, срСдства ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Ρ‚. ΠΏ.), зарабатывая Π½Π° Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ сторонним производитСлям.

Если ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, сСйчас большая Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств, ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚ΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° этой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ процСссоров. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством Π΄Π°Π½Π½ΠΎΠ³ΠΎ сСмСйства являСтся Π½ΠΈΠ·ΠΊΠΎΠ΅ энСргопотрСблСниС, благодаря Ρ‡Π΅ΠΌΡƒ ΠΎΠ½ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… встроСнных систСмах. АрхитСктура Ρ€Π°Π·Π²ΠΈΠ²Π°Π»Π°ΡΡŒ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ начиная с ARMv7 Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ 3 профиля: β€˜A’(application) β€” прилоТСния, β€˜R’(real time) β€” Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ,’M’(microcontroller) β€” ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€. Π˜ΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ интСрСсный Π΄Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΠ² Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅. ARM ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (Thumb ΠΈ ARM, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π² послСдниС врСмя появился Thumb-2, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ смСсью ARM ΠΈ Thumb). Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ рассмотрим собствСнно Ρ€Π΅ΠΆΠΈΠΌ ARM, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ исполняСтся 32-Π±ΠΈΡ‚Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ARM процСссор создан ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ²:

  • 37 рСгистров (ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 17)
  • АрифмСтико-логи́чСскоС устройство (АЛУ) β€” выполняСт арифмСтичСскиС ΠΈ логичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ
  • Barrel shifter β€” устройство, созданноС для пСрСмСщСния Π±Π»ΠΎΠΊΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство Π±ΠΈΡ‚
  • The CP15 β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ систСма, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ARM сопроцСссоры
  • Π”Π΅ΠΊΠΎΠ΄Π΅Ρ€ инструкций β€” занимаСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ инструкции Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

Π­Ρ‚ΠΎ Π½Π΅ всС ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ARM, Π½ΠΎ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½ΠΈΠ΅ Π² Π΄Π΅Π±Ρ€ΠΈ построСния процСссоров Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ‚Π΅ΠΌΡƒ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ.

ΠšΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠ΅ исполнСниС (Pipeline execution)

Π’ ARM процСссорах ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 3-стадийный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ (начиная с ARM8 Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π° 5-стадийный ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€). Рассмотрим простой ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ процСссора ARM7TDMI. ИсполнСниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ инструкции состоит ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… ступСнСй:

1. Π­Ρ‚Π°ΠΏ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ (F)

На этом этапС инструкции ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈΠ· ΠžΠ—Π£ Π² ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ процСссора.

2. Π­Ρ‚Π°ΠΏ дСкодирования (D)

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ распознаётся ΠΈΡ… Ρ‚ΠΈΠΏ.

3. Π­Ρ‚Π°ΠΏ исполнСния (E)

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ Π² ALU ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записываСтся Π² Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ рСгистр.

Но ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π°Π΄ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ, Π΅ΡΡ‚ΡŒ инструкции, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ нСсколько Ρ†ΠΈΠΊΠ»ΠΎΠ² исполнСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, load(LDR) ΠΈΠ»ΠΈ store. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС этап исполнСния (E) раздСляСтся Π½Π° этапы (E1, E2, E3…).

УсловноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅

Одна ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ARM ассСмблСра β€” условноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. КаТдая инструкция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ условно ΠΈ для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ суффиксы. Если суффикс добавляСтся ΠΊ названию инструкции, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π΅, происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ, Ρ‚ΠΎ инструкция Π½Π΅ выполняСтся. Буффиксы:
MI β€” ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число
PL β€” ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ»ΠΈ ноль
AL β€” Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ всСгда
Буффиксов условного выполнСния Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ суффиксы ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ: ARM докумСнтация
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒβ€¦

ΠžΡΠ½ΠΎΠ²Ρ‹ синтаксиса ARM ассСмблСра

Π’Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π» с ассСмблСром этот ΠΏΡƒΠ½ΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ фактичСски ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠΈΡˆΡƒ основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этим языком. Π˜Ρ‚Π°ΠΊ, каТдая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ассСмблСрС состоит ΠΈΠ· инструкций. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ создаётся Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
{ΠΌΠ΅Ρ‚ΠΊΠ°} {инструкция|ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹} {@ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ}
ΠœΠ΅Ρ‚ΠΊΠ° β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ β€” нСпосрСдствСнно ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° инструкции процСссору. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ инструкции ΠΈ ΠΈΡ… использованиС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅. ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ β€” константы, адрСса рСгистров, адрСса Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ β€” Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ влияСт Π½Π° исполнСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ИмСна рСгистров

Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠ΅Π½Π° рСгистров:
1.r0-r15

2.a1-a4

3.v1-v8 (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ рСгистры, с r4 ΠΏΠΎ r11)

4.sb and SB (статичСский рСгистр, r9)

5.sl and SL (r10)

6.fp and FP (r11)

7.ip and IP (r12)

8.sp and SP (r13)

9.lr and LR (r14)

10.pc and PC (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ счСтчик, r15).

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ костанты

Π’ ARM ассСмблСрС, ΠΊΠ°ΠΊ ΠΈ любом (практичСски) Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС программирования ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ константы. Они Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹:

  • ЧисловыС
  • ЛогичСскиС
  • Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅

ЧисловыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:
a SETA 100; создаСтся числовая пСрСмСнная Β«aΒ» с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 100.
Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:
improb SETS Β«literalΒ»; создаСтся пСрСмСнная improb с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«literalΒ». Π’ΠΠ˜ΠœΠΠΠ˜Π•! Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 5120 символов.
Π’ логичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… соотвСтствСнно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ значСния TRUE ΠΈ FALSE.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ инструкций ARM ассСмблСра

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ я собрал основныС инструкции, которая потрСбуСтся для дальнСйшСй Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (Π½Π° самом Π±Π°Π·ΠΎΠ²ΠΎΠΌ этапС:):












ΠΠ°Π·Π²Π°Π½ΠΈΠ΅Π‘ΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
ADD (Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅)ADD r0, r1, r2r0 = r1 + r2
SUB (Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅)SUB r0, r1, r2r0 = r1 β€” r2
RSB (ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅)RSB r0, r1, #10r0 = 10 β€” r1
MUL (ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅)MUL r0, r1, r2r0 = r1 * r2
MOVMOV r0, r1r0 = r1
ORR( логичСская опСрация)ORR r0, r1, r2r0 = r1 | r2
TEQTEQ r0, r1r0 == r1
LDR (Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ°)LDR r4, [r5]r4 = *r5
STRSTR r4, [r5]*r5 = r4
ADRADR r3, aa β€” пСрСмСнная. r3 = &a

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ использованиС основных инструкций Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм нСсколько простых ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½ΠΎ сначала Π½Π°ΠΌ понадобится arm toolchain. Π― Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π² Linux поэтому Π²Ρ‹Π±Ρ€Π°Π»: frank.harvard.edu/~coldwell/toolchain (arm-unknown-linux-gnu toolchain). Бтавится ΠΎΠ½ ΠΏΡ€ΠΎΡ‰Π΅ простого, ΠΊΠ°ΠΊ ΠΈ любая другая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° Linux. Π’ ΠΌΠΎΠ΅ΠΌ случаС (Russian Fedora) понадобилось Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ rpm ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с сайта.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ бСсполСзной, Π½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:) Π’ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я Π²Π°ΠΌ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ:


start:                       @ ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ строка, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
        mov   r0, #3         @ Π“Ρ€ΡƒΠ·ΠΈΠΌ Π² рСгистр r0 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3
        mov   r1, #2         @ Π”Π΅Π»Π°Π΅ΠΌ Ρ‚ΠΎΠΆΠ΅ самоС с рСгистром r1, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ с Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 2
        add   r2, r1, r0     @ Π‘ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ значСния r0 ΠΈ r1, ΠΎΡ‚Π²Π΅Ρ‚ записываСм Π² r2
        mul   r3, r1, r0     @ Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра r1 Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ рСгистра r0, ΠΎΡ‚Π²Π΅Ρ‚ записываСм Π² r3
stop:   b stop               @ Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎ получСния .bin Ρ„Π°ΠΉΠ»Π°:


/usr/arm/bin/arm-unknown-linux-gnu-as -o arm.o arm.s
/usr/arm/bin/arm-unknown-linux-gnu-ld -Ttext=0x0 -o arm.elf arm.o
/usr/arm/bin/arm-unknown-linux-gnu-objcopy -O binary arm.elf arm.bin

(ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ»Π΅ arm.s, Π° toolchain Π² ΠΌΠΎΠ΅ΠΌ случаС Π»Π΅ΠΆΠΈΡ‚ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /usr/arm/bin/)
Если всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ 3 Ρ„Π°ΠΉΠ»Π°: arm.s (собствСнно ΠΊΠΎΠ΄), arm.o, arm.elf, arm.bin (собствСнно исполняСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°). Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ собствСнноС arm устройство. Достаточно ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ QEMU. Для справки:

QEMU β€” свободная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для эмуляции Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ обСспСчСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠΌΡƒΠ»ΡΡ†ΠΈΡŽ процСссоров Intel x86 ΠΈ устройств Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ 80386, 80486, Pentium, Pentium Pro, AMD64 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ x86-совмСстимыС процСссоры; PowerPC, ARM, MIPS, SPARC, SPARC64, m68k β€” лишь частично.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Syllable, FreeBSD, FreeDOS, Linux, Windows 9x, Windows 2000, Mac OS X, QNX, Android ΠΈ Π΄Ρ€.

Π˜Ρ‚Π°ΠΊ, для эмуляции arm понадобится qemu-system-arm. Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π΅ΡΡ‚ΡŒ Π² yum, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌ, Ρƒ ΠΊΠΎΠ³ΠΎ Fedora, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΌΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ°Π½Π΄Ρƒ:

yum install qemu-system-arm

Π”Π°Π»Π΅Π΅ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эмулятор ARM, Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ arm.bin. Для этого создадим Ρ„Π°ΠΉΠ» flash.bin, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ„Π»ΡΡˆ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ для QEMU. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΎΡ‡Π΅Π½ΡŒ просто:


dd if=/dev/zero of=flash.bin bs=4096 count=4096
dd if=arm.bin of=flash.bin bs=4096 conv=notrunc

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π³Ρ€ΡƒΠ·ΠΈΠΌ QEMU с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎΠΉ flash ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ:


qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/null

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

[anton@localhost ~]$ qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/null

QEMU 0.15.1 monitor β€” type ‘help’ for more information

(qemu)

Наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° arm.bin Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… рСгистров, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° эти самыС рСгистры. ДСлаСтся это ΠΎΡ‡Π΅Π½ΡŒ простой ΠΊΠΎΠΌΠΌΠ°Π½Π΄ΠΎΠΉ: info registers

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ всС 15 ARM рСгистров, ΠΏΡ€ΠΈ Ρ‡Π΅ΠΌ Ρƒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Π΅ значСния. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅:) ЗначСния рСгистров ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ послС исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:


(qemu) info registers
R00=00000003 R01=00000002 R02=00000005 R03=00000006
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=00000000 R11=00000000
R12=00000000 R13=00000000 R14=00000000 R15=00000010
PSR=400001d3 -Z-- A svc32

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

Бписок рСсурсов для изучСния АссСмблСра / Π₯Π°Π±Ρ€

Β Β Β Π―Π·Ρ‹ΠΊ ассСмблСра β€” Ρ‚ΠΈΠΏ языка программирования Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, см. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ происхоТдСнии ΠΈ использовании Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°.

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

   КаТдая модСль процСссора, Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π΅ΠΌΡƒ язык (ΠΈΠ»ΠΈ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚) ассСмблСра.

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

БвязываниС ассСмблСрного ΠΊΠΎΠ΄Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками

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

ΠšΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ достигаСтся нСсколькими ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ:

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

Бинтаксис

Β Β Β Π•Π΄ΠΈΠ½ΠΎΠ³ΠΎ стандарта для синтаксиса языков ассСмблСра Π½Π΅ сущСствуСт, ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π²ΠΎΠ»Π΅Π½ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ свои собствСнныС синтаксичСскиС ΠΏΡ€Π°Π²ΠΈΠ»Π°. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ языки ассСмблСра для Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространённых процСссорных Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€, своСго Ρ€ΠΎΠ΄Π° стандарт de facto. Π’Π°ΠΊ основными стандартами ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандарты β€” Intel ΠΈ AT&T.

КаТдая инструкция записываСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ строкС.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки инструкций ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

label: code ; comment

Π³Π΄Π΅ label β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ; code β€” собствСнно, инструкция языка ассСмблСра; comment β€” ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

Β Β Β ΠŸΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° строки ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· коммСнтария, ΠΈΠ»ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.

Β Β Β ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ производятся дСйствия, это рСгистры процСссора ΠΈ участки ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ для Π½ΠΈΡ… Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ синтаксиса.

   АссСмблСрная инструкция, состоит ΠΈΠ· ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ (ΠΎΠ΄ΠΈΠ½, Π΄Π²Π° ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ Π² зависимости ΠΎΡ‚ инструкции). МнСмоникой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ слуТит Ρ‚Ρ€Ρ‘Ρ…- ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΌΠΈ сокращСниями ΠΈΡ… Π°Π½Π°Π»ΠΎΠ³ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π° английском языкС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

jmp β€” ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ с Π½ΠΎΠ²ΠΎΠ³ΠΎ адрСса памяти (ΠΎΡ‚ Π°Π½Π³Π». jump β€” ΠΏΡ€Ρ‹ΠΆΠΎΠΊ)
mov β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ (ΠΎΡ‚ Π°Π½Π³Π».

404 Not Found

move β€” ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ)
sub β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ (ΠΎΡ‚ Π°Π½Π³Π». subtract β€” Π²Ρ‹Ρ‡Π΅ΡΡ‚ΡŒ)
xchg β€” ΠΎΠ±ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π² рСгистрах/ячСйках памяти (ΠΎΡ‚ Π°Π½Π³Π». exchange β€” ΠΎΠ±ΠΌΠ΅Π½)

Β Β Β ΠžΡ‚ ассСмблСра ΠΊ ассСмблСру мСняСтся синтаксис Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½ΠΎ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ (Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ спСцификации процСссора), Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡƒΡ… случаСв: Если ассСмблСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ кроссплатформСнный AT&T-синтаксис, Ρ‚ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ приводятся ΠΊ синтаксису AT&T.

   Если ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ сущСствовало Π΄Π²Π° стандарта записи ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊ (систСма ΠΊΠΎΠΌΠ°Π½Π΄ Π±Ρ‹Π»Π° наслСдована ΠΎΡ‚ процСссора Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ производитСля).

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

   ВСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ассСмблСра (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° процСсс ассСмблирования ΠΈ свойства Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°).

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ассСмблСр ΠΈΠΌΠ΅Π΅Ρ‚ собствСнныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹.

Для упрощСния ΠΈ ускорСния написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° языкС ассСмблСра слуТат макросы.

Достоинства языка ассСмблСра

   Максимально ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС срСдств процСссора, использованиС мСньшСго количСства ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈ ΠΊΠ°ΠΊ слСдствиС β€” большая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ мСньший Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
   ИспользованиС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² инструкций процСссора (MMX, SSE, SSE2, SSE3)
   Доступ ΠΊ ΠΏΠΎΡ€Ρ‚Π°ΠΌ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ особым рСгистрам процСссора (Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ОБ эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ доступна Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ядра ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ²)
Β Β Β Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования ΡΠ°ΠΌΠΎΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎΡΡ (Π² Ρ‚ΠΎΠΌ числС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ) ΠΊΠΎΠ΄Π° (ΠΏΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ эта Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ нСдоступна, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ запись Π² страницы ΠΊΠΎΠ΄Π° Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π°, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ общСдоступных систСм ΠΈΠ·-Π·Π° ΠΈΡ… Π²Ρ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Ρ… нСдостатков имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ исполнСния ΠΊΠΎΠ΄Π° содСрТащСгося Π² сСгмСнтС (сСкции) Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΡƒΠ΄Π° запись Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π°)
   Максимальная Β«ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠ°Β» для Π½ΡƒΠΆΠ½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹

Β Β Β NB: ПослСдниС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ бСзопасности, внСдряСмыС Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы ΠΈ компиляторы, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ запись Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ участкС памяти (тСхнология W^X).

   ВСхнология W^X ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² OpenBSD (Π³Π΄Π΅ ΠΈ появилась), Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… BSD-систСмах, Π² Linux; Π² Microsoft Windows (начиная с Windows XP SP2) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ схоТая тСхнология DEP.

НСдостатки

Β Β Β Π‘ΠΎΠ»ΡŒΡˆΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΌΡ‹ ΠΊΠΎΠ΄Π°, большоС число Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Π»ΠΊΠΈΡ… Π·Π°Π΄Π°Ρ‡, мСньшСС количСство доступных для использования Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с языками высокого уровня
Β Β Β Π’Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎΡΡ‚ΡŒ чтСния ΠΈ поиска ошибок (хотя здСсь ΠΌΠ½ΠΎΠ³ΠΎΠ΅ зависит ΠΎΡ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ стиля программирования)
Β Β Β Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ компилятор языка высокого уровня, благодаря соврСмСнным Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π΄Π°Ρ‘Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (ΠΏΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ качСство/врСмя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ).
Β Β Β ΠΠ΅ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ (ΠΊΡ€ΠΎΠΌΠ΅ совмСстимых).
   АссСмблСр Π±ΠΎΠ»Π΅Π΅ слоТСн для совмСстных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° языкС ассСмблСра

Β Β Β ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы DOS Π½Π° процСссорС сСмСйства Intel x86, Π²Ρ‹Π΄Π°ΡŽΡ‰Π΅ΠΉ Π½Π° экран привСтствиС (написан Π½Π° TASM):

mov bx,1 ; ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ направлСния Π²Ρ‹Π²ΠΎΠ΄Π° (Π½Π° экран)
mov cx,13 ; ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ количСства символов строки
mov dx,offset msg ; ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² рСгистр DX смСщСниС строки
mov ah,40h ; Π²Ρ‹Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° строки
int 21h ; Π²Ρ‹Π·ΠΎΠ² прСрывания DOS «Набор ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Β» для Π²Ρ‹Π²ΠΎΠ΄Π° строки
int 20h ; Π²Ρ‹Π·ΠΎΠ² прСрывания DOS (Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹)

msg DB β€˜Hello, World!$’

msg β€” ΠΌΠ΅Ρ‚ΠΊΠ° (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€), ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰Π°Ρ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ.
ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «язык ассСмблСра»

Β Β Β Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ языков ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» своС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡ‚ названия транслятора (компилятора) с этих языков β€” ассСмблСра (Π°Π½Π³Π». assembler β€” сборщик). НазваниС послСднСго обусловлСно Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Ρ€Π΅Π²Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π½Π΅ сущСствовало языков Π±ΠΎΠ»Π΅Π΅ высокого уровня, ΠΈ СдинствСнной Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²ΠΎΠΉ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСра Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ нСпосрСдствСнно Π² ΠΊΠΎΠ΄Π°Ρ….

Β Β Β Π―Π·Ρ‹ΠΊ ассСмблСра Π² русском языкС часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ «ассСмблСром» (Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ связанноС с Π½ΠΈΠΌ β€” «ассСмблСрный»), Ρ‡Ρ‚ΠΎ, согласно английскому ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρƒ слова, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ вписываСтся Π² ΠΏΡ€Π°Π²ΠΈΠ»Π° русского языка. Однако, сам ассСмблСр (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ) Ρ‚ΠΎΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ просто «ассСмблСром», Π° Π½Π΅ «компилятором языка ассСмблСра» ΠΈ Ρ‚.ΠΏ.

   ИспользованиС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π° «язык ассСмблСра» Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΎ сущСствовании Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ языка Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня, ΠΈΠ»ΠΈ хотя Π±Ρ‹ стандарта Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ языки. ΠŸΡ€ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ написана конкрСтная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΡΡ‚ΡŒ, для ΠΊΠ°ΠΊΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΎΠ½Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚Π΅ языка написана.

Π―Π·Ρ‹ΠΊ ассСмблСра — Simple English Wikipedia, бСсплатная энциклопСдия

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

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

АссСмблСр ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° — это Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ язык , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для выполнСния простых Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ, Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ всС простыС Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ слоТной Π·Π°Π΄Π°Ρ‡ΠΈ. НапримСр, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° своСм экранС. ВмСсто этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, написанная Π½Π° ассСмблСрС, Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅ΠΉ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ всС ΠΌΠ΅Π»ΠΊΠΈΠ΅ шаги, связанныС с ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ прСдлоТСния.

Вакая ассСмблСрная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠ³Π»Π° Π±Ρ‹ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· мноТСства, ΠΌΠ½ΠΎΠ³ΠΈΡ… инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вмСстС Π΄Π΅Π»Π°ΡŽΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ каТСтся Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ простым ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ. Π­Ρ‚ΠΎ затрудняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сборки для людСй.Напротив, высокоуровнСвый язык программирования ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PRINT Β«Hello, world!Β» , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скаТСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС нСбольшиС Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° вас.

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

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² машинном ΠΊΠΎΠ΄Π΅ [ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ | ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ источник]

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² машинном ΠΊΠΎΠ΄Π΅, программист Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ каТдая инструкция выглядит Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΌ (ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ) Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅. Π₯отя для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, для программиста это слоТно.КаТдая инструкция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ„ΠΎΡ€ΠΌ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… для людСй выглядит просто ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ чисСл. Π›ΡŽΠ±Π°Ρ ошибка, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ ΠΏΡ€ΠΈ написании машинного ΠΊΠΎΠ΄Π°, Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ сдСлаСт Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ. Π’Ρ‹ΡΠ²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ людСй Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, глядя Π½Π° Π½Π΅Π³ΠΎ.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ выглядит ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

05 2A 00

Π­Ρ‚ΠΎΡ‚ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ сообщаСт процСссору ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° x86 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 42 ΠΊ сумматору.Π§Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΎΡ‡Π΅Π½ΡŒ слоТно Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ Π·Π½Π°Π΅Ρ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ИспользованиС языка ассСмблСра вмСсто [ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ | ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ источник]

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

НапримСр, ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° (05 2A 00) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан Π½Π° ассСмблСрС ΠΊΠ°ΠΊ:

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

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

Π Π°Π·Π±ΠΎΡ€ΠΊΠ° ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° [ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ | ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ источник]

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

ПониманиС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСны ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для понимания Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ассСмблСрС. На самом ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹ состоят ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных частСй:

  1. основная ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠžΠ—Π£, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ инструкции,
  2. процСссор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, выполняя инструкции, Π°
  3. Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° (ΠΈΠ½ΠΎΠ³Π΄Π° сокращСнно Π΄ΠΎ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΡΠ²ΡΠ·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с внСшним ΠΌΠΈΡ€ΠΎΠΌ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π½Π΅ основной памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ·ΠΆΠ΅.

Основная ΠΏΠ°ΠΌΡΡ‚ΡŒ [ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ | ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ источник]

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΏΠ°ΠΌΡΡ‚ΡŒ d

.

Simple English Wikipedia, бСсплатная энциклопСдия

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

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΎΡ‡Π΅Π½ΡŒ простых инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ основным опСрациям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.НапримСр, ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΒ» заставляСт процСссор ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ строку Π±ΠΈΡ‚ΠΎΠ² ΠΈΠ· мСста Π² памяти процСссора Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ мСсто хранСния, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ рСгистром. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, Ρ‡Ρ‚ΠΎ процСссор ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ восьми рСгистров, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ инструкция пСрСмСстит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (строку Π±ΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹) ΠΈΠ· ячСйки памяти 3000 Π² мСсто хранСния, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ рСгистром 8:

 Π» 8,3000
 

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ этих инструкций ассСмблСра.Π­Ρ‚Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ инструкций ассСмблСра, извСстная ΠΊΠ°ΠΊ исходный ΠΊΠΎΠ΄ ΠΈΠ»ΠΈ исходная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π·Π°Ρ‚Π΅ΠΌ указываСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ассСмблСра ΠΏΡ€ΠΈ запускС этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° ассСмблСрС Π±Π΅Ρ€Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ шаблон (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ† Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹).
Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ассСмблСрС Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π²ΠΎΠ΄Π°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½ΡƒΠ»Π΅ΠΉ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.ПослС этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ (ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ) Π² любоС врСмя.
На самых Ρ€Π°Π½Π½ΠΈΡ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… программисты фактичСски писали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² машинном ΠΊΠΎΠ΄Π΅, Π½ΠΎ вскорС Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ языки ассСмблСра ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ инструкций для ускорСния программирования. БСгодня ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ассСмблСрС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΌ, Π³Π΄Π΅ трСбуСтся ΠΎΡ‡Π΅Π½ΡŒ эффСктивный ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ опСрациями процСссора. Однако для этого трСбуСтся Π·Π½Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ слоТилось Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±Ρ‹Π»ΠΎ написано Π½Π° языках «Π±ΠΎΠ»Π΅Π΅ высокого уровня», Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ COBOL, FORTRAN, PL / I ΠΈ C.Π­Ρ‚ΠΈ языки Π»Π΅Π³Ρ‡Π΅ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ быстрСС ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Π΅ΠΌ язык ассСмблСра. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ исходный ΠΊΠΎΠ΄, написанный Π½Π° этих языках, называСтся компилятором. Как ΠΈ ассСмблСр, компилятор ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ языка Π±ΠΎΠ»Π΅Π΅ высокого уровня ΠΈ сводит ΠΈΡ… ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ.

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

  1. ↑ Peter Calingaert, АссСмблСры, компиляторы ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π›ΠΎΠ½Π΄ΠΎΠ½: Pitman, 1979), стр. 9

.

x86 Assembly — Π’ΠΈΠΊΠΈΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΊΠ½ΠΈΠ³ΠΈ для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ рассматриваСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ассСмблСрС для сСмСйства микропроцСссоров x86. ЦСль — Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ассСмблСрС x86, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ с историСй ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ сСмСйства процСссоров x86.

Говоря ΠΎ x86, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρƒ вСсь спСктр процСссоров Π½Π° Π±Π°Π·Π΅ x86 (начиная с ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Intel 8086 Π² 1978 Π³ΠΎΠ΄Ρƒ). Π­Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя:

  • Π‘Π±ΠΎΡ€ΠΊΠ° IA-32, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ называСмая сборкой x86-32 (32-разрядная Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Intel, начиная с Intel 80386), 32-разрядноС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ исходной 16-разрядной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ процСссора Intel x86 (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Intel 8086 — 80286 процСссоров).IA-32 ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с 16-Π±ΠΈΡ‚Π½ΠΎΠΉ x86.
  • x86-64, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ AMD64 ΠΈΠ»ΠΈ AMD 64-Π±ΠΈΡ‚, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстим с 32-Π±ΠΈΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.
  • Intel 64, Ρ€Π°Π½Π΅Π΅ Π½Π°Π·Ρ‹Π²Π°Π²ΡˆΠ°ΡΡΡ IA-32e ΠΈΠ»ΠΈ EM64T, ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° x86-64.

По всСй ΠΊΠ½ΠΈΠ³Π΅ эти Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ взаимозамСняСмо, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ. ΠŸΡ€ΠΈ рассмотрСнии 16-Π±ΠΈΡ‚Π½Ρ‹Ρ…, 32-Π±ΠΈΡ‚Π½Ρ‹Ρ… ΠΈΠ»ΠΈ 64-Π±ΠΈΡ‚Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ ΠΈ Π»ΡŽΠ±Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹, Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹

ΠžΡΠ½ΠΎΠ²Ρ‹ x86

БСмСйство x86
АрхитСктура x86 ΠΈ описаниС рСгистров
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ
16, 32 ΠΈ 64 Π±ΠΈΡ‚
Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Набор ΠΊΠΎΠΌΠ°Π½Π΄ x86

x86 Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ ΠΏΠΎΡ‚ΠΎΠΊΡƒ управлСния
АрифмСтичСскиС инструкции
ЛогичСскиС инструкции
Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ сдвигу ΠΈ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Ρƒ
ΠŸΡ€ΠΎΡ‡ΠΈΠ΅ инструкции

.

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

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