Цитата Сообщение от Higgins Посмотреть сообщение
То есть ассемблер не выявляет циклических зависимостей, просто впадая в бесконечный цикл проходов, правильно?
Можно прописать предел циклов, сейчас не скажу, какая команда, прости, я её делал в 2002-ом году и забыл ... А с собой нет описания. Прервать можно ещё ESC ... Сейчас вроде предел по проходам 64 или 128 ...


Цитата Сообщение от Higgins Посмотреть сообщение
Тогда такой вопрос: а как он определяет необходимость дополнительного прохода?
Второй проход происходит тогда, когда адрес метки изменился в отношении к предыдущему проходу и при этом метка использовалась в коде. Повторный проход может быть ещё при экзотических командах ... Например "JZ", Если ты используешь "JZ", то компилятор сам будет выискивать где надо поставить "JR Z" или "JP Z". Тогда применяет другой метод, который сам за тебя определит нужное количество JR/JP, для минимального размера памяти ...


Цитата Сообщение от Higgins Посмотреть сообщение
Ведь кроме случаев, когда подходящих значений меток нет (как, например, с ORG #8003-(END-START) выше), есть случаи, когда подходящих значений меток несколько. Я не знаю как это записать на ASAM, но схематично это может выглядеть так:
Записывать надо так:
Код:
        ORG #8003-(END-START)
START   DB "ABC"
        EQU IF_FLAG=LOW($/#8000)
        .IF_FLAG
         DB "XX"
        ..
        .1-IF_FLAG
         DB "Y"
        ..
        DB "DEF"
        EQU END=$
Главное адресом не попадать на точку когда, который будет при каждом проходе END менять на 8003/8004.

А почему возникла именно такая задача ? Или просто попытка поймать глюк асма ? Поймать можно, - он не идеален ...