User Tag List

Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 20 из 20

Тема: Что не так в коде?

  1. #11

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shuran33 Посмотреть сообщение
    Как в аласме можно хранить переменные?
    скорее смотри в сторону EQU

  2. #12

    Регистрация
    10.02.2005
    Адрес
    Вологда
    Сообщений
    893
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    скорее смотри в сторону EQU
    Да можно и предложенным автором способом тоже. Можно и прямо в коде, типа:
    Код:
           ld (LABEL1 +1), 62
           ...
           ...
           ld (LABEL1 +1), 63
           ...
           ...
    LABEL1 ld A, #00
    Всё от конкретной задачи зависит.
    Спектрумист, более менее умеющий форматировать дискеты на реале.

  3. #13

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    скорее смотри в сторону EQU
    EQU определяет константы.
    Цитата Сообщение от nyuk Посмотреть сообщение
    Да можно и предложенным автором способом тоже. Можно и прямо в коде, типа:
    Код:
    ld (LABEL1 +1), 62
    ...
    ...
    ld (LABEL1 +1), 63
    ...
    ...
    LABEL1 ld A, #00
    Ужас!!! Откуда вы взяли, что Z80 может заслать константу в ячейку памяти без использования регистров вообще?!
    Цитата Сообщение от shuran33 Посмотреть сообщение
    Вот так можно?
    Можно-то можно, только не понятно у тебя что такое date. Это именно массив из четырех чисел (букв)? Тогда обращения будут ld a,(data), ld a,(data + 1) и так далее.
    Цитата Сообщение от shuran33 Посмотреть сообщение
    И еще интересно где лучше хранить данные?
    А что за данные? Вообще, присваиваешь им метку и перечисляешь их после db, dw. Если данных много и они во внешнем файле на PC (например, картинка или музыка), подключаешь их INCBIN'ом с меткой. Просто в обычной памяти, для начала, желательно после #6000 = 24576.

    Цитата Сообщение от shuran33 Посмотреть сообщение
    На стеке нежелательно наверное?
    Да, стек не для этого придуман. Стек нужен для временного запоминания неиспользуемых в данный момент регистров чтобы можно было загрузитьв них что-то более нужное в данный момент. Ну и да, в стеке хранятся адреса возврата из подпрограмм. Большие данные в стеке хранить вообще говоря не запрещено, но это нетривиально и черевато ошибками.
    Последний раз редактировалось Alex Rider; 15.11.2013 в 10:41.

  4. #14

    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    617
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    А что за данные? Вообще, присваиваешь им метку и перечисляешь их после db, dw. Если данных много и они во внешнем файле на PC (например, картинка или музыка), подключаешь их INCBIN'ом с меткой. Просто в обычной памяти, для начала, желательно после #6000 = 24576.
    Данные будут координаты - x,y. Координат будет около 10 и все они будут постоянно меняться.

    На счет EQU - то постоянные тоже будут, так что думаю это тоже пригодится

  5. #15

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shuran33 Посмотреть сообщение
    Данные будут координаты - x,y. Координат будет около 10 и все они будут постоянно меняться.
    В цикле будешь их перебирать? Если так, то да, твой вариант оптимальный.

  6. #16

    Регистрация
    10.02.2005
    Адрес
    Вологда
    Сообщений
    893
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    Ужас!!! Откуда вы взяли, что Z80 может заслать константу в ячейку памяти без использования регистров вообще?!
    Извините, писал в измененном сознании. Больше не повторится.
    Естественно, имелось ввиду что-то типа ld hl, LABEL1 + 1 : ld (hl), 62 или ld a, 62 : ld (LABEL + 1), a

    Ну раз уж концепция хранения переменных в коде не канает в качестве ОДНОГО ИЗ ВАРИАНТОВ, можно забыть.
    Спектрумист, более менее умеющий форматировать дискеты на реале.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от shuran33 Посмотреть сообщение
    А тогда еще вопрос. Как в аласме можно хранить переменные?

    Вот так можно? :
    PHP код:
    ***LD***A,(date)
    ***RST***#10

    date*62,63,45,43*
    И еще интересно где лучше хранить данные? На стеке нежелательно наверное?
    Вот так:
    Код:
    value_coord        equ 10                       ; количество координат
                       ld hl,data
                       ld b,value_coord
    loop_01            push bc
                       push hl
                       ld a,(hl)
                       rst #10
                       pop hl
                       inc hl
                       pop bc
                       djnz loop_01
                       ret
    data               defb 62,65,78,71,69...

  9. #18

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А вот rst #10 - как раз тот самый "волшебный" вызов, который не портит hl, de и bc, и сохранять их не обязательно

  10. #19

    Регистрация
    25.05.2007
    Адрес
    Киржач, Владимирская обл.
    Сообщений
    617
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    16
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всем спасибо за ответы. RST #10 не собирался использовать, просто для примера написал.

    Andrew771, пытаюсь свой велосипед изобрести, так что за пример спасибо.

    Из всего вышеперечисленного сделал полезный вывод, что очень часто при вызовах подпрограмм надо сохранять регистры. Почему то раньше мне не приходило это в голову.
    Ну и с переменными разобрался.

  11. #20

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще про константы equ хочу добавить: я их использую, как правило, только в самом начале программ. Обычно в них всяческие значения параметров и настроек. Удобно их задавать, даже если в коде используется один раз (а если много раз, то тем более). Если потом нужно будет поменять значение константы, то не надо будет лазить и искать ее по коду, а просто поменять в начале в директиве equ.

Страница 2 из 2 ПерваяПервая 12

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Интерфейс эмулятора в коде Z80
    от CityAceE в разделе Эмуляторы
    Ответов: 29
    Последнее: 15.09.2008, 20:23

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •