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

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
    Member Аватар для Oleg Origin
    Регистрация
    14.12.2010
    Адрес
    Санкт-Петербург
    Сообщений
    183
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    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
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ты короче тут много умных слов написал, я ничего не понял
    Но в таблице явно опечатка, потому что JP P = true, если флаг S=0, и JP M = true, если S=1.

    PS - Я эту табличку вообще первый раз в жизни вижу Так что ты это прям смело заявил, что знакома всем.
    Последний раз редактировалось Shadow Maker; 04.09.2011 в 18:16.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  4. #3
    Member Аватар для Oleg Origin
    Регистрация
    14.12.2010
    Адрес
    Санкт-Петербург
    Сообщений
    183
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот и я вижу, что опечатка, но нигде - ни в печатных изданиях, ни в интернете - не найти правильной версии этой таблички. Встречается только такая версия. И кочует из книги в книгу. А в некоторых статьях авторы еще и добавляют, что "перестали путаться в условиях, когда повесили перед собой эту табличку". Вот на этих словах я остался в окончательном недоумении: как это 20 лет (1991 год издания книги "ZX Spectrum для пользователей и программистов") некоторые люди умудряются писать программы, "пользуясь" неправильной таблицей =)

    А источники, откуда она взялась - я написал. Могу еще несколько статей назвать, но смысл один. Табличка очень известная, и везде неправильная, получается...

  5. #4
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну я предполагаю, что реально мало людей пользуется знаковым сравнением.

    А ты чтоли решил игру написать? Или 20 лет несправедливости исправить решил?
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  6. #5
    Member Аватар для Oleg Origin
    Регистрация
    14.12.2010
    Адрес
    Санкт-Петербург
    Сообщений
    183
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ...или многие замечали ошибку, но молчали =)
    игры-то я писал и пишу (хотя это к теме и не совсем относится), а вопрос просто чтобы удостовериться, что я все правильно понял насчет повсеместной опечатки.
    ибо если везде видишь один и тот же вариант, начинаешь сомневаться...
    Новые игры для ZX Spectrum www.olegorigin.org Brand New ZX Spectrum Games

  7. #6
    --- Аватар для Shadow Maker
    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,823
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    235
    Поблагодарили
    100 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Может и так, но лично вот я ни разу не пользовался сравнением со знаком. А так можно же экспериментально проверить, если сомневаешься
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  8. #7
    Veteran
    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >>Впервые встретитвшись в книге "ZX Spectrum для пользователей и программистов"
    Я пользуюсь Зилоговским мануалом, который в своё время перевели как "Микропроцессорный комплект Z80".

  9. #8
    Veteran Аватар для Grand
    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,152
    Спасибо Благодарностей отдано 
    214
    Спасибо Благодарностей получено 
    331
    Поблагодарили
    146 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Thumbs up

    Цитата Сообщение от Oleg Origin Посмотреть сообщение
    ...или многие замечали ошибку, но молчали =)
    Так оно и есть. Много лет назад я исправил себе эту таблицу прямо в упомянутой книге. Две последние строчки таблицы теперь у меня имеют вид:
    Код:
       |   A<X    |   S=1     |    M     |
       +----------+-----------+----------+
       |  A>=X    |   S=0     |    P     |
       +----------+-----------+----------+
    Если в каком-либо моем посте перестала работать гиперссылка или показываться картинка, напишите мне об этом в личном сообщении,чтобы я смог это исправить.

    Grand's - сайт об электронно-вычислительной технике (зеркало)

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

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

Эту тему просматривают: 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

Ваши права

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