PDA

Просмотр полной версии : ZX Assembler++ (EmuZWin 2.75)- для новичков



palsw
15.09.2011, 11:53
Создал новую тему,так-как эта тема 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


Что означает не активная кнопка :
http://i043.radikal.ru/1109/cb/3817da58e5d2.jpg (http://www.radikal.ru)

GM BIT
15.09.2011, 12:41
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 $

GM BIT
15.09.2011, 12:45
1.Где почитать инструкцию на русском zx-assembler++,а также дебугер?

HELP и пример использования от разработчика

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


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

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

больно уж крив. И идиоту понятно, что условие JR Z,WAIT много-много раз успеет выполниться, прежде чем распознается наконец клавиша по умалчиваемому прерыванию.
Вот тут проблема - апостроф это на клавише Ё ???

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



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


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


Что означает не активная кнопка :

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