Я думаю, вы захотите написать макрос, который вы можете использовать, например AUTONUMBER s_id STATUS_OKAY
, который принимает два аргумента: 2nd - имя символа для определения, 1st - счетчик приращения.
You хотелось бы, чтобы он расширился до чего-то вроде:
STATUS_OKAY equ s_id
s_id set s_id+1 # post-incr so it uses the initial value of s_id
(я не знаю этот ассемблер или его синтаксис для определения макросов; хотя я предполагаю, что это возможно.)
Некоторые ассемблеры имеют специальная макро-директива для переопределения константы препроцессора, позволяющая вам увеличивать. например, NASM не будет работать с foo equ foo+1
, вам потребуется %define
. Вы использовали s_id set s_id+1
в большинстве своих строк, но equ
в последней, так что это, вероятно, просто опечатка.
Таким образом, полное использование будет выглядеть так:
s_id set 0 # starting value
AUTONUMBER s_id STATUS_OKAY
AUTONUMBER s_id STATUS_WAITING
AUTONUMBER s_id STATUS_ERROR
Сначала я ставлю имя счетчика, потому что оно всегда одинаково (и коротко). Второе место требует большего отступа, чтобы избежать неровных столбцов. И это помещает уникальную часть линии в один конец, где это визуально более очевидно.