Наверное самый распространенный способ определения размера сегмента это в конце сегмента расположить метку. Еще, думаю, можно сыграть на порядке расположения сегментов. Работая с пакетом TASM заметил, что размер сегмента возращает выражение offset <имя сегмента>. Т. е. не надо никаких меток и заботиться о том, что бы после метки небыло никаких объявлений этого сегмента. Но эта фича не прокатила в MASM. Кто как действует в подобных ситуациях? Существуют ли в MASMе подобные лаконичные решения?
Длину сегмента, адрес байта, лежащего сразу за концом сегмента, адрес последнего байта в сегменте. Т.е. все, что может помочь определить, где сегмент заканчивается. Вот тут перелистал ман по MASMу, подобные директивы size, sizeof, length, но жаль, что они не применимы к сегментам. Если это действительно из области фантастики, то думаю отыграться на порядке расположения сегментов в exe, а именно, после сегмента тех же данных прописать сегмент нулевой длины и отталкиваться от его адреса. Просто сборка делается из нескольких OBJ и мелких ньюансов надо бы допустить минимум, дабы избавиться от возможной головной боли людей, а главное - себя самого.))))
а вот я щас сам не могу уже вспомнить, в каких текстах у меня получалось с выражением offset <имя сегмента>, и действительно ли это было с TASMом. ............. нашел, и происходило это с MASMом%) в архиве. под дебагером видно что значения, загружаемые в регистры соответствуют значения в поле LENGTH, что в MAPе. А вот при зборке exe из нескольких объектных этого не получается
вобщем становится ясно, все зависит от того, где объявлены переменные, располагаемые в этом сегменте. Если сегмент собирается по кускам из разных OBJ, то и offset будет давать значение длины данных, объявленных в этом ASM файле. Вроде бы так получается. ЗЫ Сорри за беспокойство, видимо отпуск пора оформлять.