Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° устройств Π½Π° основС Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΡΠΈΠ³Π½Π°Π»ΡŒΠ½Ρ‹Ρ… процСссоров Ρ„ΠΈΡ€ΠΌΡ‹ Analog Devices с использованиСм Visual DSP++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 26

Автор ОлСг Π’Π°Π»ΡŒΠΏΠ°

.INCLUDE <имя_Ρ„Π°ΠΉΠ»Π°>;

Если Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ INCLUDE, находится Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ вмСстС с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… скобках трСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя Ρ„Π°ΠΉΠ»Π°. Если Ρ„Π°ΠΉΠ» находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ этому ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ ΠΈ имя Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды окруТСния ADII). НапримСр, Ссли Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, называСтся filter.dsp ΠΈ располоТСн Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ C:\ADSP2181\PROG2\, Ρ‚ΠΎΠ³Π΄Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° INCLUDE Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

.INCLUDE <C:\ADSP2181\PROG2\filter.dsp>;

Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ассСмблСру Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ». БущСствуСт ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ указания ΠΏΡƒΡ‚ΠΈ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ. Π’Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды окруТСния ADII с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Set ADII=C:\ADSP2181\PROG2

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

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

.INCLUDE <Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°_макросов>;

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° MACRO

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° MACRO создаСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ макрос (Π½Π°Π±ΠΎΡ€ инструкций). ΠœΠ°ΠΊΡ€ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для повторСния часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ инструкций Π² исходном тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² макросу рСализуСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. ДопускаСтся Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ макросов. ΠœΠ°ΠΊΡ€ΠΎΠ²Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ свободной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ макросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ макрос. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ макрос ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ послСдним. ВсС константы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² макросах, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм макросов. ΠœΠ°ΠΊΡ€ΠΎΡ опрСдСляСтся двумя Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

.MACRO имя_макроса (Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚1, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚2, ...);

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ макрос Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° окончания макроса:

.ENDMACRO;

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ макроса ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ инструкциСй, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ ΠΈΠ»ΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠ²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠœΠ°ΠΊΡ€ΠΎΡ вызываСтся ΠΏΠΎ своСму ΠΈΠΌΠ΅Π½ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ макрос с ΠΈΠΌΠ΅Π½Π΅ΠΌ mac1, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mac1;. ΠœΠ°ΠΊΡ€ΠΎΠ²Ρ‹Π·ΠΎΠ² Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² строкС Π²Ρ‹Π·ΠΎΠ²Π° (Ρ‚.Π΅. инструкций, Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² прСпроцСссора ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ°ΠΊΡ€ΠΎΠ²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ).

АргумСнты макроса ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΡƒ записи:

%n, Π³Π΄Π΅ n = 0, 1, 2, …, 9;

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ опрСдСляСт макрос sum с трСмя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ:

.MACRO sum(%0, %1, %2);

Π’ ΠΊΠΎΠ΄Π΅ макроса Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ слуТСбными символами %1, %2, %3, ΠΈ Ρ‚.Π΄. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ макроса слуТСбныС символы Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π² макрос. ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ макроса Π΅ΠΌΡƒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². ДопустимыС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для Π½ΠΈΡ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π». 11.4.


Π’Π°Π±Π»ΠΈΡ†Π° 11.4 ДопустимыС ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² макрос Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ для Π½ΠΈΡ…

АргумСнт Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π° ΠΈΠ»ΠΈ арифмСтичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ НСт Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ MACRO, ENDMACRO, CONST, INCLUDE ^Π±ΡƒΡ„Π΅Ρ€ ^%n %Π±ΡƒΡ„Π΅Ρ€ %%n

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ^ ΠΈ % Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π·Π°ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈ слуТСбныС символы Π² ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² макрос, ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. НапримСр: read_data(^input);

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° LOCAL

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° LOCAL Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² макросС. Данная Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ассСмблСру ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠ΅Ρ‚ΠΊΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ макроса. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ дублирования ΠΌΠ΅Ρ‚ΠΎΠΊ Π² случаС, ΠΊΠΎΠ³Π΄Π° макрос вызываСтся нСсколько Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅. Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ записи:

.LOCAL ΠΌΠ΅Ρ‚ΠΊΠ°1, ΠΌΠ΅Ρ‚ΠΊΠ°2, ...;

АссСмблСр создаСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ вСрсии ΠΌΠ΅Ρ‚ΠΎΠΊ макроса, добавляя ΠΊ Π½ΠΈΠΌ Π½ΠΎΠΌΠ΅Ρ€. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ листинга с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ lst. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ для раскрытия макросов Π² листингС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ компилятора asm21 Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡ -m.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² любоС мСсто ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ нСсколько пустых ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΠΎΡ€.

.MACRO nops;

nop; nop; nop; nop; nop; nop;

.ENDMACRO;

Π’Ρ‹Π·ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ макроса Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ осущСствляСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ nops;. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ макрос wait с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΈ ΠΎΠ΄Π½ΠΎΠΉ локальной ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ.

MACRO wait(%0);

 local loop;

 cntr=%0;

 do loop until ce;

 loop: nop;

ENDMACRO;

Π­Ρ‚ΠΎΡ‚ макрос позволяСт ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π° 100 Ρ†ΠΈΠΊΠ»ΠΎΠ² Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΠΉ записью:

wait(100);

ЕстСствСнно, Ρ‡Ρ‚ΠΎ вмСсто числа 100 ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ любоС число Π² Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½ΠΎΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ для счСтчика Ρ†ΠΈΠΊΠ»ΠΎΠ².

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ макроса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая пСрСносит содСрТимоС Π±ΡƒΡ„Π΅Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ области памяти Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

.MACRO mem_trans (%0, %1, %2, %3, %4) {Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ 5 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²}

.LOCAL trans;

I4=%0; {Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ I4 ΠΊΠ°ΠΊ адрСс источника}

I5=%1; {Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ I5 ΠΊΠ°ΠΊ адрСс ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°}

M4=1 {Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ 1}

CNTR=%2 {Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π±ΡƒΡ„Π΅Ρ€Π°}

DO trans UNTIL Π‘Π•; {ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π΄Π°Π½Π½Ρ‹Ρ…}

si=%3(I4, M4) {ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Ρ‚ΠΈΠΏΠ° %3 памяти}

trans: %4(I5, M4)=si; {Π’ Ρ‚ΠΈΠΏ %4 памяти}

.ENDMACRO

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° этого макроса Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ:

mem_trans (^tabl_coef, ^buf, %buf, PM, DM);

Π—Π΄Π΅ΡΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² макрос ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ адрСса Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² tabl_coef ΠΈ but, Π΄Π»ΠΈΠ½Π° Π±ΡƒΡ„Π΅Ρ€Π° but ΠΈ Ρ‚ΠΈΠΏ памяти. Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова PM ΠΈ DM ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹.

НСсколько ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° листинга. Π€Π°ΠΉΠ» листинга с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ lst позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ процСсса ассСмблирования. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° листинга ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этом Ρ„Π°ΠΉΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ поля:

addr β€” смСщСниС ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ адрСса модуля;

inst β€” ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ;

source line β€” Π½ΠΎΠΌΠ΅Ρ€ строки исходного Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΊΠΎΠ΄.

Release 5.11 Assembler Version 1.34s 9/19/95

D:\TEMA\IKS\PROG\TEST.DSP\DOS.dsp Mon Jun 21 17:07:36 2004 Page 1

addr inst     source line

              1 .module/RAM/ABS=0 example;

              2 .PAGEWIDTH 70;

              3 {ОписаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…}

              4 .var/dm flag;

              5

              6 {Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…}

              7 .init flag: 0x000f;

              8

              9 again:

0000 02010F  10 toggle FL1; /* Π˜Π½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ */

0001 18000Fu 11 jump again; /* Π—Π°Ρ†ΠΈΠΊΠ»ΠΈΡ‚ΡŒ */

             12 .endmod;

КаТдая строка Π² листингС этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ свой Π½ΠΎΠΌΠ΅Ρ€. ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ошибки Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ строкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ компилятор Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π½ΠΎΠΌΠ΅Ρ€ строки. Π‘ΠΈΠΌΠ²ΠΎΠ» Β«uΒ» Π² ΠΏΠΎΠ»Π΅ inst ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ содСрТит адрСс ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

БущСствуСт ΠΏΡΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² ассСмблСра для формирования Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° листинга.

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° NEWPAGE

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° NEWPAGE вставляСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ страниц. ПослС Ρ‚Π°ΠΊΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ продолТится с Π½ΠΎΠ²ΠΎΠΉ страницы. Данная Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅, примСняСтся для выдСлСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ оформлСния листинга ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π΅ использования:

.NEWPAGE;

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° PAGELENTH

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° PAGELENTH рСгулярно вставляСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ страниц послС ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ количСства строк. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΅Π΅ записи:

.PAGELENGTH число_строк;

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° LEFTMARGIN

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° LEFTMARGIN оставляСт Π»Π΅Π²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ числом столбцов (знакомСст символов). Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΅Π΅ записи:

.LEFTMARGIN число_столбцов;

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° INDENT

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° INDENT осущСствляСт отступ строк ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² исходном ΠΊΠΎΠ΄Π΅ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ числом столбцов. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΅Π΅ записи:

.INDENT число_столбцов;

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° PAGEWIDTH

Π”ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° PAGEWIDTH опрСдСляСт ΡˆΠΈΡ€ΠΈΠ½Ρƒ строк листинга с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ числом столбцов. Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π΅Π΅ записи:

.PAGEWIDTH число_столбцов;