Как писАть на MASM в строчку

Дата публикации 14 июн 2002

Как писАть на MASM в строчку — Архив WASM.RU

В этой маленькой статье речь идет совсем не о том, что TASM лучше MASMа, как могут подумать те, кто ошибся в постановке ударения при прочтении названия статьи, а о том, как записывать последовательности команд в исходном тексте в одну строку.

  Настоящим настоящим ассемблерщикам рекомендуется непосредственно перед прочтением нижележащего крамольного еретического текста выполнить следующие операции:

  1. Взять 20 капель спиртовой настойки валерианового корня (Tinctura Valerianae)
  2. Влить упомянутые в п.1 20 капель в высокую узкую стеклянную емкость емкостью 0,5 л
  3. Дополнить упомянутую в п.2 емкость до уровня золотого ободка пивом (beer, пыво) по вкусу
  4. Взболтать, но не размешивать, по рецепту Д.Бонда (в переводе на русский - агент МЖ7)
  5. Употребить полученную суспензию внутрь большими глотками в три приема: сначала 0,25 л + 10 капель, затем 0,125 л + 5 капель, и затем оставшиеся 0,125 л + 5 капель
  6. Кликнуть на ссылку, найти реквизиты подписки на конференцию RTFM_Helpers и активно участвовать в ней, выбросив из головы кошмарные идеи, изложенные на этой странице.
Этот совет продиктован исключительно заботой о здоровье настоящего настоящего ассемблерщика, который, как известно, испытывает непереносимые мучения от любого комфорта и просто-тки титаническим усилием воли заставляет себя писать программы с помощью мнемокодов команд, а не одной только директивы db. Ибо звучат еще в наших ушах бессмертные слова: "Ну вы, блин, заставьте нас еще горизонтально исходник скроллить, как в вижуал васике!"

  Ну вот, продолжаем для оставшихся ренегатов и предателей.

  Ассемблер - величайший язык, царь языков, практически лишенный недостатков, достойный всенародной любви и поклонения почти таких же, как Заместитель Руководителя Администрации Президента Российской Федерации. Но есть у него (у ассемблера, а не, упаси боже, Заместителя) один не то чтобы недостаток, а так, мелкая мелочь.

  Неприятность этой мелкой мелочи мы ощутили во всем ее необозримом масштабе, когда спустя три дня по окончании гарантийного срока сдох наш любимый Sony GDM-200, и временно перекочевал под стол вместе со своими 1280х1024, а вместо него на столе оказался старенький SyncMaster 500s, с натугой выдающий 800х600. С тех пор до 80% нашего рабочего времени уходило на переключение между окнами и, чтоб он пропал совсем, скроллинг исходного текста вверх-вниз.

  Существенно сократить число сгорающих в секунду нейронов нам удалось благодаря одному-единственному совсем простенькому макросу. Вот он:

Код (Text):
  1.  
  2. @ MACRO p0,p1,p2,p3,p4,p5,p6,p7
  3. p0
  4. p1
  5. p2
  6. p3
  7. p4
  8. p5
  9. p6
  10. p7
  11. ENDM
  12.  

  И все! Как только этот макрос был включен в нашу постоянную макробиблиотеку, мы получили счастливую и давно желаемую возможность записывать в одну строчку несколько (а именно - от 2 до 8) команд.

  Возьмем, к примеру, самую что ни на есть типовую ситуацию. Нужно скопировать фрагмент памяти в новое место. Что запишет в исходный текст кто-нибудь из покинувших нас настоящих настоящих ассемблерщиков? Ну, например, нечто вроде этого:

Код (Text):
  1.  
  2. ;Copy from one buffer to another
  3. mov esi,one_buffer
  4. mov edi,another_buffer
  5. mov ecx,how_many_bytes
  6. cld
  7. rep movsb
  8.  

  А что запишем мы, ренегаты и предатели? А вот что:

Код (Text):
  1.  
  2. ;Copy from one buffer to another
  3. @<mov esi,one_buffer>,<mov edi,another_buffer>,<mov ecx,how_many_bytes>,<cld>,<rep movsb>
  4.  

  Вот какие преимущества, по нашему скромному IMHO, мы получаем в результате этого маневра:

  1. Про уменьшение трудозатрат на вертикальный скроллинг уже сказано
  2. Кроме того, наше подсознание перестает возиться с понятием "команда" и переходит на более высокий уровень: "блок". Результатом чего, очевидно, должно явиться повышение производительности труда.
  3. У нас появляется дополнительный стимул к хорошему комментированию исходного текста.
    Может оно, казалось бы, ассемблерщику и ни к чему, но это только до тех пор, пока не соберешься разобраться в собственном коде, а то и, не дай бог, кто-нибудь не захочет купить наши гениальные исходники за 100000 зелени. Вот тогда-то и скажешь себе: от дурак-то был, когда комментарии не писал!
  4. С повышением потребности в комментировании возрастает наша граматность, култура, любовь к языку, родному и английскому, и умение кратко выражать свои мысли, причем не только в троллейбусе.
  5. Облегчается копирование текста. Допустим, за год работы мы копируем текст с места на место 50000 раз, в среднем по 10 строк. Так вот сравните, каково: во втором случае мы копируем 50000 строк, а в первом - 500000! В десять раз больше, но за ту же зарплату!
    Освоив предлагаемый метод, вы можете смело идти к своему руководителю и рекомендовать ему снизить вам зарплату в 10 раз. Гарантируем: с этого момента вы будете его любимым сотрудником.
  6. Появляется возможность наконец-то изучить клавишные макросы рабочей среды. Щелк на горячую клавишу - и группа строк свернулась в одну строку. Щелк на другую - и строка развернулась в группу строк: отлаживай, дорогой.
  7. При желании можно считать, что повышается читабельность исходного текста.

  Недостатков у предлагаемого метода только один:

  1. Так вот сиди теперь и думай: чего это я, дурак, все с ассемблером вожусь? Может, на Visual Basic перейти?

  Дальнейшее совершенствование предложенного метода видится нам на пути увеличения числа параметров макроса. Предварительные оценки показывают, что добавление только одного параметра p8 может привести к увеличению числа обрабатываемых макросом строк примерно на 12,5%. Желающие могут провести соответствующие эксперименты с целью уточнения этой оценки.

Желающие полюбоваться новым видом исходника и почерпнуть кое-какие стилевые идеи, могут кликнуть сюда.
© Svet(R)off

0 1.093
archive

archive
New Member

Регистрация:
27 фев 2017
Публикаций:
532