Author Topic: Ассемблер для Z80  (Read 16362 times)

0 Members and 1 Guest are viewing this topic.

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« on: October 8, 2011, 01:50 »
Могу предложить уроки ассемблера для Z80.

Offline RawonaM

  • Posts: 41936
« Reply #1on: October 8, 2011, 10:54 »
Могу предложить уроки ассемблера для Z80.
Я за.

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #2on: October 8, 2011, 11:43 »
Могу предложить уроки ассемблера для Z80.
Я тоже за.

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

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

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

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

Offline Leo

  • Posts: 26866
« Reply #3on: October 8, 2011, 19:10 »
Могу предложить уроки ассемблера для Z80.

А Алгол60 сможете ?

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #4on: October 8, 2011, 23:23 »
Второе было бы интереснее. Сам ассемблер, по моим впечатлениям, простой. Зато сложно заставить его работать на эмуляторе. Когда я игрался с эмулятором xspect, в конце концов, сделал через зад так: вывод z80asm перенаправлял через od и sed, чтобы сделать код через запятую, приписывал к бейсиковому файлу в массиве, а потом бейсиковый файл пропускал через zmakebas. Оно, конечно, работало, но...
Я использую Alasm. Он нативный. И под него есть автоматические сшивалки и куча выложенных сорцов.
Для кросс-разработки обычно юзают SjASMPlus, под него разные сшивалки тоже написаны.

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #5on: October 9, 2011, 00:16 »
Я использую Alasm. Он нативный. И под него есть автоматические сшивалки и куча выложенных сорцов.
Я пока что с TR-DOS не разбирался, я только касеты эмулирую. :-[

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

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

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

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



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

z80asm спокойно скомпилировал строки srl a, 5 и sla a, 5, но оно не работало. Заменил пятью вызовали srl a и sla a—стало работать нормально. :what:
«Честного не жди слова, // Я тебя предам снова»

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #6on: October 9, 2011, 00:33 »
Кстати, я не понял, sla и srl сдвигают только по 1 биту, или как?
По 1 биту.
Кстати, sla a не нужно, есть же add a,a.

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #7on: October 9, 2011, 00:52 »
Кстати, я не понял, sla и srl сдвигают только по 1 биту, или как?
По 1 биту.
А, понял. Это ошибка z80asm. Он sla a и sla a, 5 компилирует в одно и то же. Да, надо брать другой ассемблер. :srch:

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

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

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #8on: October 9, 2011, 01:00 »
Если a=0..7, то
rrca
rrca
rrca
add a,l
ld l,a
adc a,h
sub l
ld h,a

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #9on: October 9, 2011, 01:06 »
Если a=0..7, то...
Я помедитирую над этим кодом, но он у меня не подойдет. По hl хранится шрифт с иероглифами, а их будет где-то штук 30.
«Честного не жди слова, // Я тебя предам снова»

« Reply #10on: October 9, 2011, 01:22 »
adc a,h
sub l
ld h,a
Элегантно-то как. :what: Занимают столько же, сколько один jp c, label.

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

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #11on: October 9, 2011, 01:36 »
По 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

Offline Bhudh

  • Posts: 47836
  • aka 蝎
    • Сайты по языкознанию
« Reply #12on: October 9, 2011, 02:29 »
Чё-т я не поел. Уроки по асму прям здесь начались?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Тайльнемер

  • Posts: 12131
  • Σοι υν βυρρο. Ix bin æn ézl
« Reply #13on: October 10, 2011, 13:54 »
По 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

Offline Triton

  • Posts: 6167
« Reply #14on: October 10, 2011, 13:55 »
Ностальгия...
Молиться, поститься и слушать радио Ватника

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #15on: October 10, 2011, 16:21 »
Чё-т я не поел. Уроки по асму прям здесь начались?
Не уроки, а вопросы, десу же.
«Честного не жди слова, // Я тебя предам снова»

Offline Drundia

  • Posts: 5627
« Reply #16on: October 10, 2011, 16:35 »
Ух, давайте игры писать под эмуляторы  :D

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #17on: October 10, 2011, 16:51 »
Ух, давайте игры писать под эмуляторы  :D
Почему нет? Давайте напишем игру «Лехослав против фриков»! ;D

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

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

Offline RawonaM

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

Offline Demetrius

  • Posts: 12675
  • Бес джинн фея колдунчик
« Reply #19on: October 10, 2011, 17:46 »
Но мне до игр далеко. Я пока что хочу написать программу, которой вводишь время, а она выводит его чтение на кантонском иероглифами. Типа вводишь «10:20», а она выдаёт «sahp dím sei go jih», вводишь «10:21» — выдаёт «sahp dím yih-sahp yāt fān».
Это очень просто.
Ага, Вам может и просто, а мне интересно поразбираться, как там с экраном, с клавиатурой работать, etc.

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

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

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

Offline jvarg

  • Posts: 12370
« Reply #20on: October 10, 2011, 18:04 »
Батя как-то откуда-то притащил "Атари".

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

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

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

Offline Alone Coder

  • Posts: 22398
    • Орфовики
« Reply #21on: October 10, 2011, 18:52 »
<a href="http://www.youtube.com/watch?v=qiNJW0k2fVo" target="_blank">http://www.youtube.com/watch?v=qiNJW0k2fVo</a>

Offline orang_baik

  • Posts: 3873
« Reply #22on: October 10, 2011, 18:58 »
Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

Offline jvarg

  • Posts: 12370
« Reply #23on: October 10, 2011, 19:06 »
Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

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

Offline orang_baik

  • Posts: 3873
« Reply #24on: October 10, 2011, 19:07 »
Для чего в жизни может пригодиться этот ассемблер? Или просто для развлечения?

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

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image
Type the letters shown in the picture:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: