А xsl'ки нету?
А xsl'ки нету?
Переписываю сейчас кусочек кода с ZEUS на SjASMPlus, не могу разобраться в синтаксисе.
Как оформить в SjASM зевсовскую конструкцию: CP "A!W или DB "A!W, A!X
???
То есть нутром понимаю что там логический OR но на SjASM переложить не могу.
А что это хоть делает-то. Логический OR на sjasm - ||
Вероятно че-то типа "A"||"W", если я правильно понимаю (потому что хз что это такое - байты или что).
Но в DB ты так не воткнешь, надо че-то типа EQU.
Последний раз редактировалось Shadow Maker; 22.09.2015 в 09:25.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Да простое сравнение из разряда
В ZEUS сравнение с "А" пишется как "А, без второй кавычки.Код:LD A,(HL) CP "A!W JR Z,DUMMYLABEL
Спасибо, я невнимательный читатель манов )Логический OR на sjasm - ||
EQU там не сгодится, так как табличка данных описывается.Но в DB ты так не воткнешь, надо че-то типа EQU.
Думаю надо ассемлировать в ZEUS эти строки и посмотреть что он там в действительности делает ))) Подозрение, что что то сам додумывает для удобства.
УФФ ) разобрался )
дело было так:
просто плохо и не внимательно прочитал чужой кодКод:W EQU %1000 0000 X EQU %1010 0000 ; поэтому конструкция CP "A!W ;работает ))
Есть вопрос, как удобней всего оформлять список объектов, когда затем в разных местах программы используются порядковые номера этих объектов (т.е. индексы)?
Т.е. имеем что-то вроде:
Сами объекты:
Табличка индексов:Код:objects: DB 'aaaa' DB 'b' DB 'aasdasd DB 'ad' objects_end: ...
И потом использование:Код:object_1 EQU 1 object_2 EQU 2 object_3 EQU 3 object_4 EQU 4
Код:... ld a, obect_2 ... cp object_4 ...
Можно ли как-то обойтись без таблицы, т.е. что-то типа:
Может быть, sjasm умеет автоматически индекс строки давать?Код:objects: object_1: DB 'aaaa' object_2: DB 'b' object_3: DB 'aasdasd object_4: DB 'ad' objects_end:
Для объектов одинакового размера использую
(objects_end - objects) / object_len + 1
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
асм видит эту конструкцию какКод:objects: DB 'aaaa' DB 'b' DB 'aasdasd DB 'ad' objects_end:
Код:objects: DB 'aaaabaasdasdad' objects_end:
Во, кстати. Насчёт индексов/ID. Мне лично иногда не хватало аналога enum, хотя бы только для чисел. Типа вот:чтобы получить id1=1, id2=2, id3=3, id4=7, id5=8, id6=9...Код:ENUM id1=0,id2,id3,id4=7,id5,id6
Все любят гипножабу
Код:struct object f0 byte "a" byte "a" byte "a" byte "a" f1 byte "b" f2 byte "a" byte "a" byte "s" byte "d" byte "a" byte "s" byte "d" f3 byte "a" byte "d" ends objects ds object*10 ; место для 10 объектов ld hl,objects+5*object+object.f2 ;адрес поля f2 5-го (начиная с 0) объекта
---------- Post added at 18:10 ---------- Previous post was at 18:08 ----------
будет аналогичноКод:struct Types id0 byte id1 byte id2 byte id3 byte ... ends
Код:Types.id0=0 Types.id1=1 Types.id2=2 Types.id3=3 ...
Я фигово объяснил. Попробую на другом примере.
Пускай, есть блок данных со спрайтами.
Спрайт содержит два байта - ширину и высоту, и некоторое количество данных самой картинки. Что-то такое:
спрайт1
1, 1, .... тут 8 байт графики
спрайт2
2, 3, .... тут 48 байт графики
спрайт3
5, 2, ... тут 80 байт графики
и есть блок, описывающий комнату, где используются координаты на экране, и номер (!) спрайта
3,5,1 - в координаты 3,5 поместить спрайт номер 1 (именно индекс, а не адрес!)
10,20,1 - ... 10, 20, номер 1
15,2,3 - ... 15, 2, номер 3
25,10,2 - ... 25, 10, номер 2
естественно, описывать комнату цифрами не по-человечески, хочется давать нормальные названия индексам, которые и будут использоваться
3,5,собака
10,20,собака
15,2,книга
25,10,звезда
короче, что-то похожее на упомянутые enum-ы
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)