Адресация в V86

Тема в разделе "WASM.ASSEMBLER", создана пользователем lukash, 3 июн 2007.

  1. lukash

    lukash New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2006
    Сообщения:
    142
    Всем привет!

    Допустим, мне известны сегмент: смещение в V86. Пытаюсь прочитать значение по этому адресу с помощью физ. адресации, но пока не совсем получается. Физический адрес считаю как в RM (сегмент *16+смещение). Подскажите, как его корректно вычислить плз.
     
  2. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    а чем так не устраивает?
    Код (Text):
    1. mov ax, сегмент
    2. mov ds, ax
    3. mov ax, word ptr ds:[смещение]
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    или как написали уже или lods не устраивает?
     
  4. lukash

    lukash New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2006
    Сообщения:
    142
    Y_Mur
    Great

    Неа. Ни так и ни так не устраивает:) Могу только по физ.адресу. И это значение я не из V86 считываю, есть только сегмент и смещение в V86 - вот в чем прикол:)

    Я так понял, что полученный мной якобы "физический" адрес является линейным в обычном PM, или нет?
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    В многозадачной среде у каждой проги своё адресное пространство и по одному и тому же адресу в разных программах будут находиться разные данные, так что если тебе из одной проги влезть в другую которая v86, то кури страничную организацию памяти, только это уже раздел kernel, а не ассемблер ;)
     
  6. lukash

    lukash New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2006
    Сообщения:
    142
    Y_Mur

    Спасибо. Вроде как разобрался - по этому линейному адресу буду считать физический по правилам страничной адресации. На эту тему есть статья Chingachguk'а, так что сейчас попробую сделать.
     
  7. lukash

    lukash New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2006
    Сообщения:
    142
    Все, сделал! И это работает:)

    Всем спасибо.