© Иван Рощин, Москва
| ZXNet | : 500:95/462.53 |
| : bestview@mtu-net.ru | |
| WWW | : http://www.ivr.da.ru |
При выполнении команды «Load sts» (в меню Setup) в случае, если файл с указанным именем не будет найден, сообщение об ошибке не выдаётся.
Если установлен режим Edit mode = Text, вы лишаетесь возможности доступа ко всем пунктам меню Run, кроме Inspect, что не всегда удобно.
Не выдаётся сообщение об ошибке при ассемблировании команды загрузки в однобайтный регистр двухбайтного числа. Например, команда LD B,#1234 будет ассемблирована как LD B,#34.
ZX ASM
| Исходный текст | Компилируется |
|---|---|
ADD HL,IX |
ADD HL,HL |
SBC HL,IY |
SBC HL,HL |
EX DE,IX |
EX DE,HL |
Эта ошибка может привести к крайне неприятной ситуации. Например, вы в своей программе написали «ADD HL,IX», забыв, что такой команды нет. Ассемблер также «ничего не заметил», а потом вы удивляетесь, почему ваша программа не работает.
В командах, работающих с половинками индексных регистров, должны использоваться обозначения XL, XH, YL, YH. Между тем, STS в этих же командах использует обозначения LX, HX, LY, HY.
Некорректно обрабатывается ситуация, когда вы определяете переменную с помощью DS, а количество отводимых под неё байтов равно нулю. Такой случай может возникнуть, например, если вы сначала определили переменную с помощью DB, а потом решили заменить DB на DS, при этом забыв заменить 0 на 1:
NAME DB 0 > NAME DS 0
Если текст программы изменялся с момента последней записи на диск, ZX ASM перед выполнением «опасных» операций предложит сохранить его. Но как же ZX ASM определяет, изменялся текст или нет? Очевидно, просто путём сравнения контрольной суммы текста, находящегося в памяти, и текста, в последний раз записанного на диск. Но этот способ в некоторых случаях даёт неправильный результат, и ZX ASM считает, что текст не изменился:
а) LD HL,#1234 LD HL,#3214
DB %01100110 DB %11001100
(т.к. изменение порядка символов не влияет на контрольную сумму текста)
б) LD A,5 LD A,4
LD B,6 LD B,7
(т.к.