User Tag List

Результаты опроса: Какое условие соответствует сравнению A<X =)))

Голосовавшие
0. Вы ещё не участвовали в этом опросе
  • A<X (in Two's complement) это условие P

    0 0%
  • A<X (in Two's complement) это условие M

    0 0%
  • A<X (in Two's complement) это условие M, но не всегда =)

    0 0%
Показано с 1 по 8 из 8

Тема: Путаница с условиями P/M и флагом S во всех русскоязычных статьях о z80

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

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

    По умолчанию Путаница с условиями P/M и флагом S во всех русскоязычных статьях о z80

    Эта табличка знакома всем
    Код:
       +----------+-----------+----------+
       |Результат | Состояние | Мнемоника|
       |сравнения |  флагов   |  условия |
       +----------+-----------+----------+
       |  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     (?)
       +----------+-----------+----------+
    Впервые встретитвшись в книге "ZX Spectrum для пользователей и программистов", она перекочевала с дополнительной ошибкой в "Как написать игру для ZX Spectrum на ассемблере", а затем во все русскоязычные статьи, посвященные этой теме.
    А теперь вопрос: почему при 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).
    Так в чем же подозрительная притягательность этой таблицы, позволяющая ей без особых подозрений перепечатываться из издания в издание?
    Ну, или, может, кто-то сможет объяснить ее логику? =)
    Последний раз редактировалось Shadow Maker; 04.09.2011 в 17:59.

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

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

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

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

Похожие темы

  1. Всех с 8 марта!
    от Максагор в разделе Поздравления
    Ответов: 8
    Последнее: 12.03.2009, 02:28
  2. ВСЕХ С НОВЫМ ГОДОМ!
    от Destr в разделе Поздравления
    Ответов: 11
    Последнее: 06.01.2009, 15:06
  3. Ответов: 22
    Последнее: 21.03.2007, 00:16

Ваши права

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