Stl75(26.06.2023)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Чтобы prettyasm запустить локально, нужен локальный сервер. Например, если установлен Питон, то проще всего в каталоге, где сорцы ассемблера, запустить "python3 -m http.server 8000" и тогда ассемблер будет на http://localhost:8000/ Сорцы ассемблера - https://github.com/svofski/pretty-8080-assembler Но кнопка "RUN" так работать все равно не будет, потому что эмулятор будет расположен на другом домене. Чтобы все заработало вместе, надо аналогичным образом разместить у себя vector06js. Если правда интересно, могу попробовать рассказать как это сделать. Но по-моему это того не стоит.
Чтобы локально программу собирать есть отличные ассемблеры. Я иногда пользуюсь TASM 3.2, например: https://www.ticalc.org/archives/file...250/25051.html
А чтобы запускать и отлаживать есть эмуляторы.
По-моему идейно это скорее из темы "Программирование": https://zx-pk.ru/threads/34480-programmirovanie.html
Там замечательная сводка всевозможных средств разработки под Вектор.
Больше игр нет
electroscat(26.06.2023), Stl75(26.06.2023)
Привет всем...
Да хотел, что-нибудь попробовать написать...
Не большое...
У меня первый мой комп был - Вектор-06Ц...
Но книжки по ассемблеру не было в поставке - не разобрался...
В комплекте шли брошюры - Basic, monitor и книга со схемами...
Stl75(28.06.2023)
Процедура неинтересная для общественности, но для полноты картины дополню обработкой деления на 0.
Как вариант:
1. В начале добавляем
mov a,e\ ora d\ rz
2. Меняем
mvi b,8 на mvi b,7
...
jnz UDiv16168_1 на jp UDiv16168_1
После таких изменений и дополнений на выходе флаг Z=1 будет индикатором деления на 0. Флаг S=0 тоже показывает деление на 0.
Последний раз редактировалось ivagor; 29.06.2023 в 08:02. Причина: Исправил про Z
Improver(28.06.2023)
Если отвлечься от требований, которые мне были нужны для конкретной программы, то процедуру можно разлочить до 8=24/16. Убираем XRA A в начале и MOV A,L в конце и вуаля:
;L=AHL/DE
;AH=AHL%DE
Правда если нужна проверка делителя на ноль в начале, то она в таком случае усложняется
Код:inr e\ dcr e\ jnz $+6 inr d\ dcr d\ rz
Все знают традиционный вариант преобразования HEX полубайта в символ
Некоторые (теперь и я) знают оптимизированный вариант для x86 с вычитанием и десятичной коррекцией, котрый предложил Norbert Juffa.Код:cpi 0Ah jc $+5 adi 7 adi 30h
Этот вариант 1 в 1 преобразуется для z80 (возможно там он его и подсмотрел), а вот 8080/85/ВМ1 не поддерживают десятичную коррекцию после вычитания.
Берем идею, по сравнению с z80 добавляется cmc (что сущая ерунда на фоне традиционного подхода)
Редкая, но приятная ситуация, когда получается одновременно ускорить и сократить.Код:cpi 0Ah cmc aci 30h daa
andrews(21.07.2023), Improver(21.07.2023), Oleg N. Cher(21.07.2023), parallelno(21.07.2023), Pyk(28.07.2023), svofski(22.07.2023)
parallelno(22.07.2023)
Если я правильно нагуглил описание команды daa, то она устанавливает флаг carry в один если коррекция была. Если я ничего не напутал то вроде должно работать следующие:
Daa
Aci 30h
Поправьте пожалуйста если ошибся
ivagor(22.07.2023)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)