Относительно org вычисляются метки, а не адреса переходов. То есть org задает абсолютное смещение для все меток до следующего org.
Так как в i8080 все переходы абсолютные, такой логики достаточно.
Ассемблер для Intel 8080 на TypeScript
Moderator: Shaos
-
begoon
- Maniac
- Posts: 204
- Joined: 22 Aug 2012 17:06
- Location: 188.220.42.216
-
Lavr
- Supreme God
- Posts: 16986
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Intel 8080 на TypeScript
Интересно, однако... Значит JMP METKA и CALL METKA - здесь METKA не адрес перехода?
iLavr
-
DmitryMilk
- Senior
- Posts: 109
- Joined: 12 May 2025 21:56
Re: Ассемблер для Intel 8080 на TypeScript
А в чем проблема-то с несколькими ORG? Адреса меток же по идее должны вычисляться на первом проходе, адрес метки определяется тем ORG, после которого она идет. А после какого ORG расположен CALL или JMP, переходящий по этой метке - не важно, т.к. к моменту второго прохода адреса всех меток уже полностью определены.Lavr wrote: 19 Apr 2026 14:31 Относительно org вычисляются адреса переходов. И какой из org берётся за точку отсчёта теперь?
Если у меня на один и тот же адрес jmp после первого org а потом после второго org? (ну или call...)
Я вот сейчас пишу под Z80, используя sjasm - вот там у меня вообще эквилибристика с метками - и определение одних меток через другие через EQU (смещения в бинарных данных), и даже есть ORG, в котором стоит не прямой адрес, а метка, определенная через EQU от другой метки
-
begoon
- Maniac
- Posts: 204
- Joined: 22 Aug 2012 17:06
- Location: 188.220.42.216
Re: Ассемблер для Intel 8080 на TypeScript
Как я уже писал, org - это просто статическое смещение в коде после него, включая, естественно, значения меток.
Можно иметь сколько угодно org’ов.
Конкретно в моем ассемблере есть дополнительные свойства org’ов, которые просто были моим решением.
Например, секции не могут пересекаться по адресам, то есть org’ом в целом нельзя пойти назад.
Или, адреса в org’ах используются при ренерации нескольких выходных файлов, если таковой режим (—split) задан.
Но обычно, если нужен единый файл, то дырки между секциями зануляются.
Все подробнейшим образом описано в документации.
Можно иметь сколько угодно org’ов.
Конкретно в моем ассемблере есть дополнительные свойства org’ов, которые просто были моим решением.
Например, секции не могут пересекаться по адресам, то есть org’ом в целом нельзя пойти назад.
Или, адреса в org’ах используются при ренерации нескольких выходных файлов, если таковой режим (—split) задан.
Но обычно, если нужен единый файл, то дырки между секциями зануляются.
Все подробнейшим образом описано в документации.
-
DmitryMilk
- Senior
- Posts: 109
- Joined: 12 May 2025 21:56
Re: Ассемблер для Intel 8080 на TypeScript
Я писал под MASM как раз с использованием вот таких конструкций вместо меток и условных переходов - это весьма удобно. Если еще использовать и отсутпы вложенности - ощущается, будто пишешь на ЯВУ.
-
begoon
- Maniac
- Posts: 204
- Joined: 22 Aug 2012 17:06
- Location: 188.220.42.216
Re: Ассемблер для Intel 8080 на TypeScript
Именно для этого я if/else и добавил, которые могут быть вложены. И уже не надо вручную делать метки-выходы из условий.
А в сочетании с proc/endp/return для опционального сохранения и восстановления регистров, все еще удобнее.
А в сочетании с proc/endp/return для опционального сохранения и восстановления регистров, все еще удобнее.
-
Alekcandr
- Devil
- Posts: 740
- Joined: 01 Oct 2007 10:30
- Location: Ukraine
Re: Ассемблер для Intel 8080 на TypeScript
На мой взгляд все эти хитрые конструкции сильно ломают совместимость с классическими ассемблерами. И что мы имеем в сухом остатке? 1000 и 1 ошибку при портировании кода на классический ассемблер.
Впрочем, это дело автора ассемблера, как вариант может он пишет ассемблер исключительно для себя.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
http://www.orion-ext.narod.ru
-
begoon
- Maniac
- Posts: 204
- Joined: 22 Aug 2012 17:06
- Location: 188.220.42.216
Re: Ассемблер для Intel 8080 на TypeScript
Я б сказал, что это больше дело программиста.
Можно использовать чисто классические конструкции. Соображения совместимости на 100% валидны.
Я, например, люблю синтаксис нескольких команд в строке через « / », ибо сильно сокращает вертикальный размер кода, но в плане общей совместимости это точно нет.
Можно использовать чисто классические конструкции. Соображения совместимости на 100% валидны.
Я, например, люблю синтаксис нескольких команд в строке через « / », ибо сильно сокращает вертикальный размер кода, но в плане общей совместимости это точно нет.
-
Alekcandr
- Devil
- Posts: 740
- Joined: 01 Oct 2007 10:30
- Location: Ukraine
Re: Ассемблер для Intel 8080 на TypeScript
Вот, вот программиста
Случай из жизни. Есть исходник, под хитрый ассемблер, к тому же платный. Как перенести код? Простая задача становится не только сложной, но и финансово затратной (купить ассемблер для разового использования).
Это как раз по мне не проблема при переносе.begoon wrote: 20 Apr 2026 23:57 Я, например, люблю синтаксис нескольких команд в строке через « / », ибо сильно сокращает вертикальный размер кода, но в плане общей совместимости это точно нет.
Ладно я никого не собираюсь поучать, как делать "личный" ассемблер или язык программирования.
Эмулятор OrionEXT:
http://www.orion-ext.narod.ru
http://www.orion-ext.narod.ru
-
Lavr
- Supreme God
- Posts: 16986
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Intel 8080 на TypeScript
Ха... случай из жизни... Вот однажды скачиваю я из сети неплохой исходник одного нежадного автора.Alekcandr wrote: 21 Apr 2026 00:16Случай из жизни. Есть исходник, под хитрый ассемблер, к тому же платный. Как перенести код?
Но, как оказалось, автор почему-то очень любит макросы!
По большому счёту весь ассемблер у него упакован в макросы.
А сама программа фактически написана макросами как неким языком высокого уровня.
Ну, честно говоря, очень тяжело было как что-то полезное для себя вынести, так и подправить его творение в нужном мне русле.
iLavr
-
Lavr
- Supreme God
- Posts: 16986
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Ассемблер для Intel 8080 на TypeScript
Меня всегда удивляет, когда люди такой глупый вопрос задают: А в чем проблема-то ... ?DmitryMilk wrote: 20 Apr 2026 22:59А в чем проблема-то с несколькими ORG? Адреса меток же по идее должны вычисляться на первом проходе, адрес метки определяется тем ORG, после которого она идет. А после какого ORG расположен CALL или JMP, переходящий по этой метке - не важно, т.к. к моменту второго прохода адреса всех меток уже полностью определены.Lavr wrote: 19 Apr 2026 14:31Относительно org вычисляются адреса переходов. И какой из org берётся за точку отсчёта теперь?
Если у меня на один и тот же адрес jmp после первого org а потом после второго org? (ну или call...)
А я разве где-то написал, что есть проблема?
Мне конкретно было интересно, как автор реализовал множественные ORG.
Автор мне пояснил, хотя что-то навёл тень на плетень "с адресами переходов / метками".
Почему мне это интересно? Когда я писал свой собственный ассемблер для себя, я ввёл специальный оператор, определяющий байт заполнения.
И в некоторых случаях я его выбираю не 00Н, как у Демина, а 0FFH.
А проблемы никакой нет. Ни у меня ни у автора. Просто бывают ассемблеры, которые уже второй ORG не воспринимают...
iLavr
