Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ассемблер для Z80

Автор Alone Coder, октября 8, 2011, 00:50

0 Пользователи и 1 гость просматривают эту тему.

Alone Coder


RawonaM


Demetrius

Цитата: Alone Coder от октября  8, 2011, 00:50
Могу предложить уроки ассемблера для Z80.
Я тоже за.

Но вы сферический ассемблер в вакууме будете описывать, или в контексте спектрума?

Второе было бы интереснее. Сам ассемблер, по моим впечатлениям, простой. Зато сложно заставить его работать на эмуляторе. Когда я игрался с эмулятором xspect, в конце концов, сделал через зад так: вывод z80asm перенаправлял через od и sed, чтобы сделать код через запятую, приписывал к бейсиковому файлу в массиве, а потом бейсиковый файл пропускал через zmakebas. Оно, конечно, работало, но... :-[

Offtop
Правда, потом я написал велосипед, который к любому файлу добавляет заголовок tap-формата и чексумму, но на этом мой интерес был иссяк, так что я даже не попробовал загружать таким образом ассемблерный код. На картинках работало.

Поэтому, пожалуйста, заодно описывайте, как все это запустить на эмуляторе, и хотя бы минимум дополнительной информации (в какую память можно писать, etc.). Или хотя бы ссылки давайте.

Leo


Alone Coder

Цитата: Demetrius от октября  8, 2011, 10:43
Второе было бы интереснее. Сам ассемблер, по моим впечатлениям, простой. Зато сложно заставить его работать на эмуляторе. Когда я игрался с эмулятором xspect, в конце концов, сделал через зад так: вывод z80asm перенаправлял через od и sed, чтобы сделать код через запятую, приписывал к бейсиковому файлу в массиве, а потом бейсиковый файл пропускал через zmakebas. Оно, конечно, работало, но...
Я использую Alasm. Он нативный. И под него есть автоматические сшивалки и куча выложенных сорцов.
Для кросс-разработки обычно юзают SjASMPlus, под него разные сшивалки тоже написаны.

Demetrius

Цитата: Alone Coder от октября  8, 2011, 22:23
Я использую Alasm. Он нативный. И под него есть автоматические сшивалки и куча выложенных сорцов.
Я пока что с TR-DOS не разбирался, я только касеты эмулирую. :-[

Формат TAP, кстати, мне понравился. Никаких сшивалок не нужно, достаточно банальной конкатенации двух файлов.

Ну а готовые исходники мне не нужны, у меня же цель не что-то написать, а побаловаться для себя.

ЦитироватьДля кросс-разработки обычно юзают SjASMPlus, под него разные сшивалки тоже написаны.
Гм. Я попробую (сейчас не могу, ибо с телефона), но, IMHO, «встроенный язык Lua» и «многофайловый вывод» в ассемблере—это вопиющее преступление против Unix-way'а.

Такое впечатление, что разработчики включили туда еще и функции make/ant-подобных программ. :no:




Кстати, я не понял, sla и srl сдвигают только по 1 биту, или как?

z80asm спокойно скомпилировал строки srl a, 5 и sla a, 5, но оно не работало. Заменил пятью вызовали srl a и sla a—стало работать нормально. :what:

Alone Coder

Цитата: Demetrius от октября  8, 2011, 23:16
Кстати, я не понял, sla и srl сдвигают только по 1 биту, или как?
По 1 биту.
Кстати, sla a не нужно, есть же add a,a.

Demetrius

Цитата: Alone Coder от октября  8, 2011, 23:33
Цитата: Demetrius от октября  8, 2011, 23:16
Кстати, я не понял, sla и srl сдвигают только по 1 биту, или как?
По 1 биту.
А, понял. Это ошибка z80asm. Он sla a и sla a, 5 компилирует в одно и то же. Да, надо брать другой ассемблер. :srch:

ЦитироватьКстати, sla a не нужно, есть же add a,a.
Действительно, вдвое короче. :what:

Вообще, я все это нагородил, чтобы умножить a на 32 и сложить его с hl. Я сделал h += a >> 2, l += a << 5 (а также добавил jp c, icrease_h на случай переполнения). Как это лучше сделать?

Alone Coder


Demetrius

Цитата: Alone Coder от октября  9, 2011, 00:00
Если a=0..7, то...
Я помедитирую над этим кодом, но он у меня не подойдет. По hl хранится шрифт с иероглифами, а их будет где-то штук 30.

Demetrius

Цитата: Alone Coder от октября  9, 2011, 00:00
adc a,h
sub l
ld h,a
Элегантно-то как. :what: Занимают столько же, сколько один jp c, label.


Думаю, я могу обойтись и без этих трех байтов, если выравнять адрес в hl по 32-битной границе... :what:

Alone Coder

Цитата: Demetrius от октября  9, 2011, 00:06
По hl хранится шрифт с иероглифами, а их будет где-то штук 30.
Тогда
ex de,hl
ld l,a
ld h,0
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,de

Bhudh

Чё-т я не поел. Уроки по асму прям здесь начались?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Тайльнемер

Цитата: Alone Coder от октября  9, 2011, 00:36
Цитата: Demetrius от октября  9, 2011, 00:06
По hl хранится шрифт с иероглифами, а их будет где-то штук 30.
Тогда
ex de,hl
ld l,a
ld h,0
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,de
А если так:
add a,a
add a,a
add a,a
ex de,hl
ld l,a
ld h,0
add hl,hl
add hl,hl
add hl,de

Triton

Молиться, поститься и слушать радио Ватника

Demetrius

Цитата: Bhudh от октября  9, 2011, 01:29
Чё-т я не поел. Уроки по асму прям здесь начались?
Не уроки, а вопросы, десу же.

Drundia


Demetrius

Цитата: Drundia от октября 10, 2011, 15:35
Ух, давайте игры писать под эмуляторы  :D
Почему нет? Давайте напишем игру «Лехослав против фриков»! ;D

Но мне до игр далеко. Я пока что хочу написать программу, которой вводишь время, а она выводит его чтение на кантонском иероглифами. Типа вводишь «10:20», а она выдаёт «sahp dím sei go jih», вводишь «10:21» — выдаёт «sahp dím yih-sahp yāt fān».

Offtop
Кроме того, мне ещё нужно доделать свою игру для мобильных телефонов. Мне там немного осталось, но лень...

RawonaM

Цитата: Demetrius от октября 10, 2011, 15:51
Но мне до игр далеко. Я пока что хочу написать программу, которой вводишь время, а она выводит его чтение на кантонском иероглифами. Типа вводишь «10:20», а она выдаёт «sahp dím sei go jih», вводишь «10:21» — выдаёт «sahp dím yih-sahp yāt fān».
Это очень просто. Когда напишите, дайте мне код, я добавлю в бот считающий до миллиона, будет на кантонском тоже считать.

Demetrius

Цитата: RawonaM от октября 10, 2011, 15:58
Цитата: Demetrius от октября 10, 2011, 15:51
Но мне до игр далеко. Я пока что хочу написать программу, которой вводишь время, а она выводит его чтение на кантонском иероглифами. Типа вводишь «10:20», а она выдаёт «sahp dím sei go jih», вводишь «10:21» — выдаёт «sahp dím yih-sahp yāt fān».
Это очень просто.
Ага, Вам может и просто, а мне интересно поразбираться, как там с экраном, с клавиатурой работать, etc.

Меня один этот их экран добивает. Сначала записывается первая строка экрана, потом восьмая, потом шестнадцатая...  :uzhos: Я понимаю, зачем так сделали, но от того не легче.

ЦитироватьКогда напишите, дайте мне код, я добавлю в бот считающий до миллиона, будет на кантонском тоже считать.
Там счёт нужен только до 60, там основной прикол в других единицах (Вы заметили, что «10:20» — «sahp dím sei go jih» (10 часов 4 пятиминутки), вводишь «10:21» — выдаёт «sahp dím yih-sahp yāt fān» (десять часов 21 минута)?

Может, Вам для бота проще на яваскрипте? Вот, я побыстрому наваял, во вложении. Впрочем, пока что не вставляйте в бота, мне ещё надо с грамматическим справочником сверится. Если честно, я с такими большими числами не очень дружу...

jvarg

Батя как-то откуда-то притащил "Атари".

Всего с одной кассетой в качестве ПО.

Пришлось осваивать ассемблер, и самому писать программы. Научился.

Заодно и польский язык освоил по журналу "байтек" (у них "атари" был как у нас спектрум).
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)


orang_baik

Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

jvarg

Цитата: orang_baik от октября 10, 2011, 17:58
Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

Для развития логического мышления.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

orang_baik

Цитата: jvarg от октября 10, 2011, 18:06
Цитата: orang_baik от октября 10, 2011, 17:58
Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

Для развития логического мышления.
Он чем-то принципиально отличается от ассемблеров для других процессоров? Я просто не в курсе?

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр