Эта табличка знакома всем
Впервые встретитвшись в книге "ZX Spectrum для пользователей и программистов", она перекочевала с дополнительной ошибкой в "Как написать игру для ZX Spectrum на ассемблере", а затем во все русскоязычные статьи, посвященные этой теме.Код:+----------+-----------+----------+ |Результат | Состояние | Мнемоника| |сравнения | флагов | условия | +----------+-----------+----------+ | A=X | Z=1 | Z | +----------+-----------+----------+ | A<>X | Z=0 | NZ | +----------+-----------+----------+ | Беззнаковое сравнение (0...255) | +----------+-----------+----------+ | A<X | CY=1 | C | +----------+-----------+----------+ | A>=X | CY=0 | NC | +----------+-----------+----------+ | С учетом знака (-128...+127) | +----------+-----------+----------+ | A<X | S=1 | P (?) +----------+-----------+----------+ | A>=X | S=0 | M (?) +----------+-----------+----------+
А теперь вопрос: почему при S=1 (Sign=отрицательное число) указано условие P (Plus), а при S=0 (Sign=положительное число) указано условие M (Minus).
Ведь должно быть с точностью до наоборот. Во всяком случае так говорят все тексты, посвященные этому вопросу на других языках (отличных от русского, то есть), а также банальная практика. Да и в самой книге "Как написать игру для ZX Spectrum на ассемблере" встречаются опровержения этой таблице: например, в одной из программ при задании условия выхода за левую границу экрана указано "JR C,aaa ;(или JP M,aaa)". То есть в диапазоне положительных чисел условие A<X (т.е. "С") эквивалентно "M", а не "Р", как показывает таблица.
Я часто использую это сравнение при определении попадания спрайта на экран: сравниваю А с -2, например, и использую значения P/M, прямо противоположные таблице.
Наконец, следует также сказать, что это условие будет выполняться, только если числа в формате Two's Complement (проще, байт со знаком), будут друг от друга отличаться не более чем на 128. То есть -4<5 = -4-5 =-9 даст S=1 (условие M), а вот -128<5 = -128-5 = -133 (-->123) даст S=0 (условие P).
Так в чем же подозрительная притягательность этой таблицы, позволяющая ей без особых подозрений перепечатываться из издания в издание?
Ну, или, может, кто-то сможет объяснить ее логику? =)





Размещение рекламы на форуме способствует его дальнейшему развитию 
Ответ