Запутался в адресациях

Тема в разделе "WASM.BEGINNERS", создана пользователем Luzer, 17 ноя 2008.

  1. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    Доброго времени суток всем.
    Запутался в адресациях памяти.
    1. Непосредственная адресация
    2. Прямая адресация
    3. Прямая регистровая адресация
    4. Косвенная регистровая адресация
    5. Индексная регистровая адресация
    6. Относительная адресация.
    7. Прямая индексная адресация
    8. Относительная индексная адресация
    9. Автоинкрементная( автодекриментная)
    10. Поразрядная адресация
    Если есть немножко времени, немогли бы вы написать, примеры каждого вида адресации на примере ассемблерного кода.
    и еще нигде не могу найти последовательность микрокоманд к каждой из них.
    Уже благодарен вам)
     
  2. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    может натолкнет на путь истинный:
    http://256bit.ru/education/infor1/lecture3-4.htm
    http://www.intuit.ru/department/hardware/mpbasics/4/
    http://www.google.com.ua/search?rlz=1C1GGLS_ruUA299&sourceid=chrome&ie=UTF-8&q=Методы+адресации

    с примерами на асме:
    http://www.refstore.ru/box/9/pro/1571/index1.6.html
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    хехе сколько умных определений, относящихся к временам 386 =\
     
  4. beginner

    beginner New Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    233
    адресация то не менялась :)
    многие из этих адресаций изучались на базе i8080 (КР580ВМ80А)
    чемоданчик был что надо.
     
  5. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    ну сейчас-то понятия "индексной адресации" как таковой нет, esi и edi уже не особые индексные регистры, а самые обычные.
     
  6. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    GoldFinch, спасибо)
    А примеры микрокоманд есть?
    вот у меня например по относительной есть:
    1.Формирование адреса регистра
    2.Чтение данных из регистра
    3.Инкрементирование счетчика
    4.Чтение константы
    5.Суммирование
    6.Результат сложить с содержимым регистра(где хранится адрес сегмента)
    Ну не понятно что к чему,зачем и почему((
     
  7. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    Как записать на ассемблере ADD приемник, источник
    если
    источник: прямая индексная адресация, а
    приемник: автодекрементная.
    З.Ы:Это поможет
     
  8. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Luzer
    На IA-32 такого нет. Вообще виды адресации зависят от архитектуры проца. На PDP-11 эти виды есть, но приёмник там записывается вторым операндом, наприер:

    ADD 10(R3),-(R5)

    Но на IA-32, повторюсь, нет таких видов адресации.
     
  9. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    add [mem],[mem] небывает
     
  10. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    видимо имеется ввиду, что сначала нужно прочитать значение приемника из памяти, потому значение источника, а потом выполнить команду... я сам не очень въезжаю...
    а что нибудь по поводу микрокоманд можете сказать? (5 пост по счету)
     
  11. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    Вобщем взял я счя книжко про 386й проц в русском переводе и прочитал там что адресация бывает
    1) прямая, [imm16]
    2) косвенная регистровая, [bx]
    3) относительная, [bx+4]
    4) прямая индексная, imm16[si]
    5) относительная индексная, [bx+si+4]
    для 32-разрядного режима 2 и 3 - одно и тоже, и вообще ограничений на регистры нет
    + в 32-разрядном режиме есть масштабирование [eax+ecx*8]

    автодекрементная - видимо для строковых инструкций %)
     
  12. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    кстате, что есть микрокоманды?) микрокод? ;)
     
  13. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    SII
    "Электроника-60" - это ведь отечественный аналог PDP-11 ?
     
  14. Luzer

    Luzer New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2005
    Сообщения:
    95
    Вот кстате, как я понимаю, "изучая" этот предмет, уже три месяца( Называется он схемотехника ), что команды ассемблера состоят из микрокоманд(микропрограмм). Я сам не понимаю, как в какой-то одно команде(нам давали примеры) происходит переключение регистра счетчика команд по несколько раз. Видимо имеется ввиду, какое-то действие из некоторой последовательности команд на ассемблере, которые нада перевести в последовательность микрокоманд...
    в 5 посте, я приводил пример последовательности микрокоманд, при считывание данных используя относительную адресацию.
     
  15. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    GoldFinch
    есть ещё регистровая адресация: mov ax, bx
    и непосредственная: mov ax, 500
     
  16. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    GoldFinch
    Автоинкремент и автодекремент -- да, только в строковых инструкциях. В этом списке нет регистровой и непосредственной (о чём написал t00x); кроме того, обозначение imm (immediate) некорректно. Так обозначают операнд, являющийся константой, но не адрес или часть адреса операнда; в последнем случае надо использовать disp (displacement).

    K10
    Точнее, LSI-11 -- кастрированного варианта PDP-11. Главные отличия: в принципе отсутствуют разные режимы процессора (пользователь/система) и нет приоритета внешних прерываний (единственная линия, разделяемая всеми устройствами, а не до 7 линий). Плюс система команд поменьше, хотя все основные, есно, имеются.

    GoldFinch
    Если говорить точно, микрокод -- это последовательность микрокоманд. А микрокоманда -- это нечто цельное, что выполняется железом за один "заход" (обычно за один такт, но не всегда).

    Но вовсе не требуется реализовать команды с помощью микрокоманд. Первые вычислительные машины имели жёсткое схемное управление (где каждая команда и была элементарной операцией, исполняемой аппаратурой без всяких промежуточных звеньев в виде микрокоманд). Но сложные системы команд реализовать прямо в электронике проблематично. Например, у IBM были мэйнфреймы из серии 360 с полностью схемной реализацией, но в конце концов от такого подхода отказались в пользу микропрограммной реализации.

    Как правило, в одной микрокоманде задаётся несколько действий одновременно, но как она "устроена", зависит, есно, от железа. Длина микрокоманды может очень существенно различаться даже на машинах, реализующих одинаковую систему команд. У ЕС-1035 (советский мэйнфрейм, аналог IBM System/370) микрокоманда имела длину 32 бита, но обычно они были длиннее, нередко превосходя 100 бит.

    Наконец, в производительных процессорах обычно используется смесь аппаратного и микропрограммного управления. Например, в ЕС-1130 (последняя советская серийная ЕСка) выборка команд из памяти, их декодирование и вычисление адресов операндов в большинстве случаев выполнялось аппаратно, а сами команды исполнялись микропрограммами, причём наиболее часто используемые команды реализовывались микропрограммами из одной микрокоманды. Благодаря совмещению аппаратного и микропрограммного управления там удавалось выполнять по одной такой команде за такт процессора, что определяло высокое по тем меркам быстродействие. В то же время у упомянутой выше ЕС-1035 почти всё реализовывалось микропрограммно, и её быстродействие при примерно одинаковой (вроде бы даже более высокой) тактовой частоте было в несколько раз ниже.
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    похоже у нас одна и та же книжка :) (рыжая такая)
    я хз как непосредственное значение связано с адресацией, а если и связано, то что оно "адресует" %)
    думаю это ошибки перевода
     
  18. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    Наверное имелось ввиду mov ax,[500]
     
  19. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    неа, именно mov ax, 500
     
  20. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    GoldFinch
    Термин "адресация" применительно к машинным командам означает способ, которым операнд команды может быть обнаружен и пущен в дело. Поэтому регистровая адресация -- это когда операнд находится в регистре, а в коде команды задаётся номер (адрес) этого регистра, непосредственная адресация -- когда операнд находится в самом коде команды (т.е. является константой), прямая -- когда в команде прямо указан адрес операнда в памяти (т.е. когда адрес является константой) и т.д.

    murder
    Это прямая адресация: 500 является адресом операнда, а не самим операндом. А непосредственная -- это mov ax,500 (операндом является само число 500).