Вложений: 2
Пакет для i8080: WinAsm Studio + fasm g
В продолжение темы...
Предлагаю пакет для быстрой разработки приложений для ПК "Специалист" и всех остальных. :)
Пакет сразу же работоспособен после распаковки на диск С: , хотя я его все-таки урезал, удалив эмуляторы уменьшения размера для... (Подробности см. ниже). Т.е., после распаковки можно запустить внутри winasm.exe, нажать Ctrl+O, открыть проект с примером и его скомпилировать нажатием Ctrl+Enter и сразу же выполнить в подключенном эмуляторе, не забывая нажать G<Enter>. Для создания нового проекта можно нажать Ctrl+N, Нажать ОК и сразу же получить новый проект на шаблоне "хеловорлда".
Содержит:
WinAsm Studio
Скрытый текст
Обычная IDE для ассемблера, отличается от других тем, что я ее допилил под fasm и под себя, поэтому другими не пользуюсь. :)
Имеет свои плюсы и минусы, неидеальна, но всех хотелок все равно никогда не реализуешь, зато имеет мощный механизм клепания проектов, шаблонов, и т.п., что удобно.
На сайте есть справки и по студии, и по моим надстройкам - всего здесь не опишешь.
[свернуть]
fasm g
Скрытый текст
Эээ... Собственно, ассемблер... Но я бы сказал о нём так: это не просто ассемблер, а мощный генератор чего-либо бинарного, с внутренним языком, позволяющим писать ассемблеры. Т.е. синтаксис команд целевого ассемблера полностью описывается внешними макросами. Кроме того, имеет возможность обрабатывать полученные бинарные данные целиком и по частям, на чем, в частности, основаны разные фичи: вывод в формате intel hex, преобразование строк из ср1251 в кои-7, подсчет контрольной суммы для rks. Этим же механизмом можно в конце вообще из полученного файла сгенерировать WAV для загрузки через магнитофонный вход, но я пока на это не пошел :)
[свернуть]
Эмуляторы
Скрытый текст
Не содержит, но!...
Содержит папки для них (или от них): Emu и Emu80. Раньше я пользовался Emu, но под вайном он работать отказался, и я перешел на Emu80. Проекты настроены на него, но выбирать эмулятор в свойствах проекта очень легко. Достаточно распаковать их в соответствующие папки (учитывая то, что в них уже есть) - и можно ими пользоваться. Если эмулятор уже установлен где-то, можно просто перенаправить его метку на реальный путь в менеджере эмуляторов.
[свернуть]
Шаблоны и примеры
Скрытый текст
Папка projects содержит проекты-примеры. Проект - это папка с фалом настроек проекта *.wap, исходниками и готовым файлом. Новые проекты по умолчанию помещаются сюда же.
Папка winasm/templates содержит папки-категории шаблонов, а в них находятся собственно шаблоны. Шаблоны - это те же проекты, только используемые как шаблоны (пардон за тавтологию)
[свернуть]
Другие процессоры
Скрытый текст
Дополнительно добавлено поддержку, шаблоны и примеры для і8048 и і8051 (эмулятор для них не определен).
В примере і8048 использован switch.inc, в результате на выходе генерируется вместо бинарника текст, удобный для программирования ПЗУ тумблерами: я его применил для 556РТ4. (Чтобы получить бинарник, нужно просто этот инклуд закомментиь).
Добавлена подсветка синтаксиса для Z80, но макросы для него я не включил в пакет, так как их автор промолчал на мой вопрос. Но зато внутри есть пример, в котором можно узнать где что нужно взять ;)
Есть также на форуме макросы для МОС6502, но для меня это незнакомый зверь.
Есть на форуме вроде бы и для PIC... Есть для AVR, но там оказалось не все так просто в реальном проекте...
В общем, думаю, среднему программеру по силам написать и самому для любого процессора.
[свернуть]
Фичи:
- Содержит макросы для генерирования заголовков и контрольной суммы для rks и rk.
- Содержит макрос, который автоматически конвертирует строку из ср1251 в кои7
- Содержит пример с готовым ввводом/выводом для начинающих
- Содержит небольшую библиотеку полезных функций, которые использованы в примерах
Пробуйте :) Спрашивайте :)
-------------------------------------
добавил обновленную библиотечку
Писание команд в одну строчку
В fasmg обратная косая черта объединяет текущую строку со следующей.
Но если нужно ассемблировать программу, в которой наоборот: в одну строку записаны несколько команд, то это можно организовать при помощи макроса, который Томаш любезно предоставил:
Код:
macro recursive_split line&
match first \ rest, line
first
recursive_split rest
else
line
end match
end macro
;-----------------------------------------------------------------------
macro ? line&
recursive_split line
end macro
его нужно разместить в начале программы, после чего можно писать так:
Код:
lxi h,hello\ call 0C818h\ jmp 0C800h
hello:
dr 10,"HELLO!",0
при желании можно использовать и другой символ для разбиения строки на части.