Важная информация

User Tag List

Показано с 1 по 5 из 5

Тема: ZX Assembler++ (EmuZWin 2.75)- для новичков

  1. #1
    Guru Аватар для palsw
    Регистрация
    08.05.2011
    Адрес
    г. Измаил, Украина
    Сообщений
    3,216
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию ZX Assembler++ (EmuZWin 2.75)- для новичков

    Создал новую тему,так-как эта тема http://zx.pk.ru/showthread.php?t=1345&highlight=emuzwin больше про обновления самого эмулятора.

    1.Где почитать инструкцию на русском zx-assembler++,а также дебугер?
    2.Интересен сам процесс от начала и до запуска с отладкой :
    - Вот написал я текст самой программы -нажал Compile(F4) -повезло ошибок нет .
    - в логе в конце пишет вот это - (Waiting for coparison operation) -что он хочет от меня?
    -как дальше запустить скомпилированную программу на выполнение или я пропустил перед запуском важный момент?

    Код:
    ORG   60000
          ; Çàäàíèå ïîñòîÿííûõ àòðèáóòîâ ýêðàíà
           LD    A,7
           LD    (23693),A
           XOR   A
           CALL  8859
           CALL  3435
           LD    A,2
           CALL  5633
    ; Ââîä ñèìâîëîâ UDG - òðè «ïóëåâûå îòâåðñòèÿ»
           LD    HL,UDG
           LD    (23675),HL
    
    ; Îñíîâíàÿ ÷àñòü ïðîãðàììû
           CALL  MISH        ;ðèñîâàíèå ìèøåíè
    MAIN   CALL  WAIT        ;îæèäàíèå íàæàòèÿ ëþáîé êëàâèøè
           CP    " "
           RET   Z
           LD    A,22
           RST   16
           LD    E,20        ;çàäàíèå äèàïàçîíà äëÿ êîîðäèíàòû Y
           CALL  RND
           RST   16
           LD    E,30        ;çàäàíèå äèàïàçîíà äëÿ êîîðäèíàòû X
           CALL  RND
           RST   16
           LD    A,16
           RST   16
           LD    A,6
           RST   16
           LD    E,3         ;çàäàíèå íîìåðà «ïóëåâîãî îòâåðñòèÿ»
           CALL  RND
           ADD   A,144       ;âû÷èñëåíèå êîäà ñïðàéòà
           RST   16
           CALL  SND         ;çâóêîâîé ñèãíàë
           JR    MAIN
    
    ; Ïîäïðîãðàììà âûâîäà íà ýêðàí ìèøåíè
    MISH   LD    C,20
           CALL  CIRC
           LD    C,40
           CALL  CIRC
           LD    C,60
           CALL  CIRC
           LD    C,80
           CALL  CIRC
           LD    DE,TEXT
           LD    BC,LENTXT
           JP    8252
    
    ; Ïîäïðîãðàììà ðèñîâàíèÿ îêðóæíîñòåé
    CIRC   EXX
           PUSH  HL
           EXX
           PUSH  BC
           LD    A,120
           CALL  11560
           LD    A,90
           CALL  11560
           POP   BC
           LD    B,0
           CALL  11563
           CALL  9005
           EXX
           POP   HL
           EXX
           RET
    
    ; Ïîäïðîãðàììà îñòàíîâêè ñ÷åòà
    WAIT   XOR   A
           LD    (23560),A
    WAIT1  LD    A,(23560)
           AND   A
           JR    Z,WAIT1
           RET
    ; Ïîäïðîãðàììû
    RND    CALL  RND255
           LD    L,A
           LD    H,0
           LD    D,H
           CALL  12457
           LD    A,H
           RET
    RND255 PUSH  BC
           PUSH  DE
           PUSH  HL
    ; Ðåãèñòðîâàÿ ïàðà HL çàãðóæàåòñÿ çíà÷åíèåì èç ñ÷åò÷èêà «ñëó÷àéíûõ» ÷èñåë
    ;  (ýòî ìîæåò áûòü, íàïðèìåð, ñèñòåìíàÿ ïåðåìåííàÿ 23670/23671,
    ;  êîòîðàÿ èñïîëüçóåòñÿ Áåéñèêîì äëÿ òåõ æå öåëåé)
           LD    HL,(ADDR)
           LD    DE,7        ;äàëüøå ñëåäóåò ðàñ÷åò î÷åðåäíîãî
                             ; çíà÷åíèÿ ñ÷åò÷èêà
           ADD   HL,DE
           LD    E,L
           LD    D,H
           ADD   HL,HL
           ADD   HL,HL
           LD    C,L
           LD    B,H
           ADD   HL,HL
           ADD   HL,BC
           ADD   HL,DE
           LD    (ADDR),HL   ;ñîõðàíåíèå çíà÷åíèÿ ñ÷åò÷èêà «ñëó÷àéíûõ»
                             ; ÷èñåë äëÿ ïîñëåäóþùèõ ðàñ÷åòîâ
           LD    A,H         ;ðåãèñòð A çàãðóæàåòñÿ çíà÷åíèåì
                             ; ñòàðøåãî áàéòà ñ÷åò÷èêà
           POP   HL
           POP   DE
           POP   BC
           RET
    
    
    
    ADDR   DEFW  0
    SND    LD    B,80
           LD    HL,150
           LD    DE,1
    
    SND1   PUSH  BC
           PUSH  DE
           PUSH  HL
           CALL  949
           POP   HL
           POP   DE
           POP   BC
           DEC   HL          ;èëè INC HL
           DJNZ  SND1
           RET
    
    ; Äàííûå äëÿ ìèøåíè
    TEXT   DEFB  22,10,14
           DEFM  "10"
           DEFB  22,10,18
           DEFM  "8"
           DEFB  22,10,21
           DEFM  "6"
           DEFB  22,10,23
           DEFM  "4"
           DEFB  22,10,11
           DEFM  "8"
           DEFB  22,10,8
           DEFM  "6"
           DEFB  22,10,6
           DEFM  "4"
    LENTXT EQU   $-TEXT
    ; Äàííûå äëÿ «ïóëåâûõ îòâåðñòèé»
    UDG    DEFB  4,20,62,60,127,60,40,8
           DEFB  9,95,252,63,126,44,8,8
           DEFB  16,48,244,63,28,56,28,8
    0:0 Errors found at pass 1
    18:8 Waiting for coparison operation


    Что означает не активная кнопка :
    Последний раз редактировалось palsw; 15.09.2011 в 13:02.
    Радио-Губитель Канал на YouTube

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

  3. #2
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    http://s007.radikal.ru/i302/1108/ce/007502b23ce1.bmp

    Слева - дебагер для отладки и запуска
    По центру - текстовик
    Справа - результат
    Снизу - рабочие метки, для быстрого поиска в большом тексте

    1. Откомпилил (либо F4)
    2. Запустил

    ---------- Post added at 12:41 ---------- Previous post was at 12:39 ----------

    Надо после org написать команду entrypoint $

  4. #3
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от palsw Посмотреть сообщение
    1.Где почитать инструкцию на русском zx-assembler++,а также дебугер?
    HELP и пример использования от разработчика
    Вложения Вложения

  5. #4
    Guru Аватар для palsw
    Регистрация
    08.05.2011
    Адрес
    г. Измаил, Украина
    Сообщений
    3,216
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    разобрался 18:8 Waiting for coparison operation это ошибка - CP " " .Писали в соседнем топике что нужно вместо кавычек ставить апостроф -у меня не получается ,все равно ошибка получается .

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    В общем, проверка в эмуляторе EmuZWin показала, что буквы нужно вставлять обязательно заглавные и в апострофах, а не в кавычках. А лучше еще - коды нужных клавиш в числовом виде. Тогда всё нормально работает.
    Команду HALT ставить не обязательно, но я ставлю, т.к. высер

    XOR A
    LD (23560),A
    WAIT LD A,(23560)
    AND A
    JR Z,WAIT

    больно уж крив. И идиоту понятно, что условие JR Z,WAIT много-много раз успеет выполниться, прежде чем распознается наконец клавиша по умалчиваемому прерыванию.
    Вот тут проблема - апостроф это на клавише Ё ???
    Последний раз редактировалось palsw; 15.09.2011 в 14:42.
    Радио-Губитель Канал на YouTube

  6. #5
    Veteran
    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,858
    Спасибо Благодарностей отдано 
    131
    Спасибо Благодарностей получено 
    104
    Поблагодарили
    62 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от palsw Посмотреть сообщение
    Вот тут проблема - апостроф это на клавише Ё ???
    Да, это не тот апостроф. Нужен обычный, который на букве Э, тогда всё нормально работает, проверил только что.
    Кстати, если не сложно, кидай набранные примеры из этой книги в тему: http://zx.pk.ru/showthread.php?t=1143&page=4


    Цитата Сообщение от palsw Посмотреть сообщение
    1.Где почитать инструкцию на русском zx-assembler++,а также дебугер?
    Все инструкции на русском и английском языках лежат в одной папке с исполнимым файлом эмулятора.

    Цитата Сообщение от palsw Посмотреть сообщение
    2.Интересен сам процесс от начала и до запуска с отладкой :
    - Вот написал я текст самой программы -нажал Compile(F4) -повезло ошибок нет .
    - в логе в конце пишет вот это - (Waiting for coparison operation) -что он хочет от меня?
    Набираешь текст программы в ассемблере, вначале обязательно команда ORG xxxx (где xxxx - адрес начала программы). Команду ENT $ ставить не обязательно. Затем, на всякий случай сохранившись, компилируешь, возможно исправляешь ошибки. Затем закрываешь окно ассемблера, набираешь в самом эмуляторе волшебное RANDOMIZE USR xxxx и любуешься результатом.
    Отладчик можно вызывать в любой момент, в том числе и во время выполнения программы (меню Debug Window). Тогда выполнение программы остановится и будет отображаться текущая команда и ее адрес, а также значения всех регистров и стека. Дальше можешь пошагово выполнять команды клавишей F7 и смотреть на изменения регистров и памяти.
    Еще удобная команда - создание точек останова. Это чтобы не выполнять пошагово кучу команд, а пропускать сразу их (они как обычно выполнятся) от одной точки останова до другой. Например, если есть кусок программы, который гарантированно правильно работает, то незачем его выполнять пошагово, а сразу выполнить и перейти к коду, где возможна ошибка. Тогда ставишь точку останова на первой команде этого сомнительного кода (в дебаггере рядом с адресом команды тыкаешь, когда рука с кружочком, появляется красный кружочек. Убирать точку останова также). Просмотреть и удалить ненужные точки останова можно в меню Breakpoint List. Если нажимать F9, то прога будет выполняться обычным образом до следующей точки останова. Если нажимать F7, то будет каждая команда выполняться пошагово.

    Цитата Сообщение от palsw Посмотреть сообщение
    Что означает не активная кнопка :
    Установить счетчик команд на адресе выполнения (из списка адресов, которые были указаны ORGами). Активной становится после успешной компиляции. Я ей не пользуюсь, вроде незачем.

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

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

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

Похожие темы

  1. ZX Assembler for PC
    от askad в разделе Софт
    Ответов: 3
    Последнее: 31.12.2008, 12:28
  2. BASIC vs. Assembler
    от valker в разделе Программирование
    Ответов: 38
    Последнее: 19.10.2007, 01:04
  3. как самому собрать спектрум (тема для новичков)
    от D-M в разделе Несортированное железо
    Ответов: 54
    Последнее: 26.02.2007, 17:39
  4. ASSEMBLER
    от MadCat! в разделе Программирование
    Ответов: 50
    Последнее: 03.03.2005, 16:04

Ваши права

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