Как мы неоднократно видели в приведенных выше примерах, TASM допускает вложенность условных директив компиляции. Более того, так как вложенность требуется довольно часто, TASM предоставляет набор дополнительных директив формата ELSEIFxxx, которые заменяют последовательность подряд идущих ELSE и IFxxx в структуре:
IFxxx; ELSE IFxxx;...ENDIFENDIF |
Эту последовательность условных директив можно заменить эквивалентной последовательностью дополнительных директив:
IFxxx;... ELSEIFxxx;...ENDIF |
Наличие xxx в ELSExxx говорит о том, что каждая из директив IF, IFB, IFIDN и т. д. имеет аналогичную директиву ELSEIF, ELSEIFB, ELSEIFIDN и т. д.
В конечном итоге это улучшает читаемость кода. В последнем примере фрагмента макроса, проверяющем, имя какого регистра было передано в макрос, наблюдается подобная ситуация. Последовательность ELSE и IFDIFI можно записать так, как в строке 4:
<1>show macro rg<2>ifdifi ,<3>goto M_al<4>elseifdifi ,<5> goto M_ah<6>else<7>exitm<8>endif<9>:M_al<10>...<11>:M_ah<12>...<13>endm |