User Tag List

Показано с 1 по 10 из 23

Тема: Сомнительная мнемоника

Комбинированный просмотр

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

    Регистрация
    25.06.2005
    Адрес
    Одесса
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    69
    Спасибо Благодарностей получено 
    75
    Поблагодарили
    31 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Так обозначается переходы во многих архитектурах. Пример в DEC-архитектуре (PDP-11): jmp (R0); или на 680x0 аналогично.

    Само взятие регистра в скобки означает, что исполнительный адрес - это ячейка памяти, адресуемая данным регистром. А уж что делать с исполнительным адресом, взять из него операнд или перейти по исполнительному адресу - это зависит от команды. Поэтому и получается, что jmp (hl) - это получить исполнительный адрес равный HL, и перейти по нему. А в команде LD (ix+00),a - получить исполнительный адрес равный ix+00, и занести в эту ячейку регистр а.
    Кстати, немного вот подумал над этим утверждением, и мне показалось, что эти случаи плохо сравнимы, и вот почему.

    1) Когда в команде, скажем, LD (ix+00),a указывается в скобках выражение для получения исполнительного адреса, то на самом деле этот адрес играет вспомогательную роль при выполнении команды - содержимое регистра A помещается здесь по адресу, равному содержимому IX плюс 0. Но сам по себе регистр IX не изменяется, и по выполнении команды его содержимое не окажется ни в одном регистре, ни в ячейках памяти. Он ПОМОГАЕТ выполнению команды, его содержимое используется для определения операнда-приемника (ячейки памяти), но само содержимое IX не участвует в выполняемом действии копирования содержимого регистра в память.

    2) А вот в команде LD SP, HL содержимое регистра HL в итоге окажется в другом регистре SP. И тут все понятно, скобок нет.

    3) В команде JP <метка> операнд, который всегда пишется без скобок, прямо помещается в регистр PC, как если бы команда была записана в виде LD PC, <метка>.

    4) Поэтому, т.к. в результате команды JP (HL) операнд играет отнюдь НЕ вспомогательное значение - содержимое HL при выполнению команды так же прямо помещается в PC, как если бы использовалась мнемоника LD PC, HL, закономерность записи со скобками нарушается.

    Более того, "вспомогательное" употребление того, что записано в скобках, прослеживается во всех командах Z80. Кроме JP (HL), JP (IX), JP (IY). Вот поэтому и кажется странной запись со скобками.

    Естественно, как я уже говорил, запись мнемоники в указанных архитектурах не имела принципиального значения, когда сложных команд косвенной адресации 16-битного числа вообще не было в 8-битных процессорах. И те, кто ее использовал (и использует), просто привыкают к записи. А на тех процессорах, где такая адресация возможна, естественно, JMP [BX] никто не воспринимает, как LD PC, BX.

    К тому же, мнемоника для Z80 используется и описывается в таком виде повсеместно, поэтому не заменять же ее на JP HL .

    P.S.: Как вариант, может, просто поддерживать мнемонику JP HL/IX/IY в ассемблерах, наравне с действующей JP (HL/IX/IY) - для обозначения одного и того же кода. Может, приживется?.. Хотя, если еще подумать, тех, кто осваивает ассемблер Z80, такой ход запутает еще больше.

    Цитата Сообщение от GriV Посмотреть сообщение
    Предлагаю просто смириться с этим фактом :-) Или потребовать у разработчиков АСМов для Z80 поддержки эквивалентной записи LD PC,HL для тех, кого смущает JP (HL).
    ...хмм, на самом деле, параллельная поддержка команды LD PC,HL даже лучше, чем параллельная поддержка JP HL вместе с JP (HL) для кода #E9. Так путаницы не возникает. Я за, только подписей нужно еще очень много .
    Последний раз редактировалось TomCaT; 28.05.2011 в 22:29.
    Помни. Только на компьютере можно семь раз Cut, а один - Format. В реале все иначе. (c)
    Власть людей сильнее, чем люди у власти.
    Чем меньше мы смотрим на мир, тем больше задумываемся о нем. (c)

    Скрытый текст

    Can you help Robin in his quest for the silver arrow? (c) Odin "Robin of the Wood"
    Мы все немного режем по дереву, а потом собираем корабли в бутылках.
    Is it the same old story you are going to tell me
    or is it the old story telling me and you we are the same?
    http://www.sky.od.ua/~ptsk
    [свернуть]


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

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

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

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

Ваши права

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