ZX-Ревю 1997 №1-2 1997 г.

Форум - единый стандарт программирования на Ассемблере.


(с) Колотов Сергей, г. Шадринск, SerzhSoft, XI, 1996

ЕДИНЫЙ СТАНДАРТ ПРОГРАММИРОВАНИЯ НА АССЕМБЛЕРЕ.

В последнее время на страницах ZX-РЕВЮ все чаще и чаще можно встретить публикации, посвященные стандартизации. Наступление идет по всем фронтам: начиная от проекта ROM и заканчивая моделями компьютеров. Но пока еще не встречалось ни одной статьи, направленной на стандартизацию программирования. Предчувствуя запах тухлых яиц и гнилых овощей, уже приготовленных "свободными" кодерами и программистами для упражнений по метанию этих признаков уважения в автора данной статьи, сразу хотел бы предостеречь: остановите карающую длань! Ведь никто не заставляет именно Вас следовать нижеприведенным правилам и загонять в очень узкие рамки. Если Вы хотите ощущать полную свободу в программировании так ощущайте ее (и варитесь в собственном соку!)!

Программирование, а тем более на ассемблере, сопряжено с одной большой проблемой: программы, написанные одним, совсем необязательно будут понятны другому (в большинстве случаев это именно так!).

Даже если оба кодера и "съели в ассемблере не по одной собаке"! И это вполне естественно: один любит писать метки на русском языке английскими буквами, другой - наоборот, а третий - вообще вместо меток использует номера, ставя перед ними какую-либо букву, чтобы ассемблер это все нормально переваривал... Да и сам автор, написавший программу, через некоторое продолжительное время будет тупо смотреть на свое собственное "творение", не понимая как оно еще может работать!

Хорошо ли это? Нет, очень и очень плохо! В то время, как старина Speccy все больше и больше "загибается" от невиданного нашествия "амиг" и IBM, нужно не брести по одиночке многочисленными запутанными тропами, а "вместе весело шагать" одной проторенной дорогой, где все понимают друг-друга с полуслова. То есть предлагается "единый стандарт программирования на ассемблере", о котором далее и пойдет речь. Автор, конечно, понимает, что данная работа не закончена, и у кого-либо может вызвать протест, но главная задача этой статьи состоит не в публикации кучи непогрешимых заповедей, а предполагает возникновение диалога на страницах ZX РЕВЮ. Присылайте свои дополнения, предложения и просто высказывайте мнение, которое считаете наиболее правильным. Итак, вот некоторые пункты из моей "Библии Кодера":

1. Чем меньше в программе директив ORG - тем лучше.

2. Процедур же, наоборот, должно быть побольше.

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

4. Чем больше в программе ком-• ментариев, тем лучше. Здесь

срабатывает принцип "Маслом каши не испортишь."

5. Все процедуры отделяются друг от друга символом ";" (точка с запятой) в отдельной строке (пустой комментарий).

6. Каждая процедура начинается с уникального имени, являющегося сокращением английских слов, характеризующих действие данной процедуры. В тех ассемблерах, где это предусмотрено, имя процедуры заканчивается символом ":" (двоеточие). В строке с именем процедуры больше не должно быть никаких команд (возможен комментарий).

7. Метки внутри процедур.

Два первых символа любой метки должны однозначно указывать на тип этой метки:

LP (LOOP) - цикл GO (GO ТО) - переход IF (IF) - переход по условию (расширение GO) ER (ERROR) - ошибка 'EX (EXIT) - выход, завершающие операции LB (LABEL) - команда, изменяемая при выполнении СН (CHANGE) - аналог LB SP,HL,DE,BC,AF,IX,IY -изменяемая команда загрузки этих регистров (или их половинок). Например:

LD (SP_GKY+1),SP

«изменение

SP.GKY LD SP.NULL изменяемая команда

Для того, чтобы сразу было однозначно ясно и понятно, что данная команда изменяется во время выполнения программы, необходимо в команде загрузки регистра указывать в качестве операнда специально опеделенную в начале программы метку NULL. Она задается так: NULL EQU 0. Ее необходимо использовать во всех изменяемых командах.

Итак, после двух символов типа в метке далеее следуют 2-3 символа (для удобства могут отделяться символом подчеркивания "_"), характеризующие принадлежность к опеделенной процедуре. Эти символы берутся из имени процедуры, обычно являясь начальными буквами английских слов (сокращений), образующих имя процедуры.

Если в процедуре несколько однотипных меток, то далее ставится номер метки: 0..9 или 00..99.

Примеры меток для проце-

дур:

CLRSCR LPCS1, GOCS04, EXCS9, LBCS... GETKEY GOGKY1, LPGKY, IF GKY и т.д.

8. Переменные, массивы, таблицы как и процедуры должны быть "говорящими" Вот часто используемые элементы, входящие в состав имен переменных, процедур: см. Listing 1. Итак, все эти сокращения (плюс сокращения для меток внутри процедур) удобно применять в программировании. Их также можно включать в имена файлов и т.д.

На этом позвольте раскланяться. Надеюсь, что читатели продолжат данное начинание и напишут отзывы о необходимости такой стандартизации программирования на ассемблере. Listing 1.

ADR (ADDRESS) CNT (COUNTER) SPD (SPEED) LVL (LEVEL) LEN (LENGTH) SZE (SIZE) HGT (HEIGHT) WDT (WIDTH) VLM (VOLUME) CHR (CHAR) TXT (TEXT) STR (STRING) SRL (SCROLL) FLD (FIELD) BRD (BORDER) PAP (PAPER) INK

ARW (ARROW) SPR (SPRITE) XR.YR (X.Y-RANGE) X,Y,Z AY

AYA.AYB.AYC IN

OUT

BUF (BUFFER)

АДРЕС СЧЕТЧИК СКОРОСТЬ УРОВЕНЬ ДЛИНА РАЗМЕР ВЫСОТА ШИРИНА ОБЬЕМ СИМВОЛ ТЕКСТ СТРОКА СКРОЛЛЕР ПОЛЕ ГРАНИЦА БУМАГА ЧЕРНИЛА СТРЕЛКА СПРАЙТ РАЗМЕРЫ КООРДИНАТЫ МУЗ. ПРОЦЕССОР КАНАЛЫ AY ВХОДНОЙ ВЫХОДНОЙ БУФЕР

BIN (BINARY)

ДВОИЧНЫЙ

HEX

ШЕСТНАДЦАТЕРИЧ-

НЫЙ

DEC (DECIMAL)

ДЕСЯТИЧНЫЙ

BCD

ДВОИЧНО-

ДЕСЯТИЧНЫЙ

TRB (TRURBO)

быстрый

POS (POSITION)

ПОЛОЖЕНИЕ

CR (CARRAGE)

КАРЕТКА

LST (LAST)

ПОСЛЕДНИЙ

LST (LISTING)

ЛИСТИНГ

DAT (DATA)

ДАННЫЕ

ARR (ARRAY)

МАССИВ

ERR (ERROR)

ОШИБКА

NEW

НОВЫЙ

MDE (MODE)

РЕЖИМ

FL.FLG (FLAG)

ФЛАГ

TBL (TABLE)

ТАБЛИЦА

CHN (CHANNEL)

КАНАЛ

NXT (NEXT)

СЛЕДУЮЩИЙ

LN (LINE)

ЛИНИЯ

STK (STACK)

СТЕК

MEM (MEMORY)

ПАМЯТЬ

BEG.BGN (BEGIN)

НАЧАЛО

END

КОНЕЦ

PTR (POINTER)

УКАЗАТЕЛЬ

TOP

ВЫСОТА

ВОТ (BOTTOM)

ДНО

OLD

СТАРЫЙ

UDG

СИМВОЛЫ UDG

NO,NOT

ОТРИЦАНИЕ

YES

ДА

SCR (SCREEN)

ЭКРАН

SHD (SHADOW)

ТЕНЕВОЙ

MSK (MASK)

МАСКА

INT (INTERRUPT)

ПРЕРЫВАНИЕ

PRN (PRINT)

ПЕЧАТЬ

GET

взять

PUT

ПОЛОЖИТЬ

KEY

КЛАВИША, КЛЮЧ

ON

ВКЛЮЧЕНО

OFF

ВЫКЛЮЧЕНО

SYS (SYSTEM)

СИСТЕМНЫЙ

USR (USER)

ПОЛЬЗОВАТЕЛЬ

СКИЙ

FLE (FILE)

ФАЙЛ

CDE (CODE)

коды

OBJ (OBJECT)

ОБЪЕКТ

MAP

КАРТА

ROM

ПЗУ

RAM

ОЗУ

DRV (DRIVE)

дисковод

DVR (DRIVER)

ДРАЙВЕР

DVC (DEVICE)

УСТРОЙСТВО

HDR (HEADER)

ЗАГОЛОВОК

BCK (BACK)

НАЗАД

TR,TRD

TR-DOS

DOS UP

DN (DOWN) LF.LFT (LEFT) RG.RGH (RIGHT) FR.FIR (FIRE) CLR (CLEAR) CLR (COLOR) CLS

LO (LOW) HI (HIGH) MAX.MX MIN.MN SET

RES (RESET) VAR (VARIABLE) NUM (NUMBER) SGN (SIGN) MUS (MUSIC) SND (SOUND) FNT (FONT) CPR (COMPRESS) DCP (DECOMPRESS) CDR (CODER) DCD (DECODER) DCR (DECRUNCHER) FOR TO

SPC (SPACE) PLC (PLACE) ARC (ARCHIVE) RAR (REARCHIVATOR) FRM (FORMAT) FRM (FRAME) SCN (SCANNER) DEM (DEMO) EX,EXT (EXIT) EXT (EXTENTION) INI

WRK (WORK) TST (TEST) DGT (DIGIT)




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Обзорчик - Обзор игровых программ: Starglider, Scramble Spirits, The Acid game 1-4, Narcopolice, Slaine.
Юмор - Дембельская ракета рядового Кочкуркина.
Реклама - Реклама и объявления ...
Мир PC - Бум-с! И в темном закоулке возник небpитый мужик в камуфляжных штанах и кpасном жилете.
Рассказ - Ну, юзер, погоди! (продолжение).

В этот день...   24 ноября