необходимо разобраться с размером сегментного регистра

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 1 дек 2011.

  1. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Друзья! Мне сказали разобраться с регистром fs, вот, разбираюсь, начал отсюда:
    http://www.wasm.ru/article.php?article=pipm02

    Вот там есть картинка сегментного дескриптора, размер- два двойных слова, то есть 8 байт

    А потом автор тут сказал самим разобраться с сегментными десрипторами
    http://www.wasm.ru/article.php?article=pipm03

    Вот изображение главной таблицы дескрипторов


    Код (Text):
    1. GDT:
    2. ; нулевой дескриптор (ОБЯЗАТЕЛЬНО ДОЛЖЕН ПРИСУТСВОВАТЬ, НО РУКАМИ НЕ ТРОГАТЬ!)
    3. 0.                      db    8 dup (0)
    4.  
    5. ; Сегмент с  базой в 0 и лимитом в 1235h (не забывай про +1 к лимиту!)
    6. ; Линейный адрес базы = 0, линейный адрес лимита = 0 + 1235h = 1235h
    7. 1. Descr_code           db    34h,12h,00h,00h,00h,XXh,0X000000b,00h
    8. GDT_limit                =    $-GDT
    9.  
    10. GDTR                    dw    GDT_limit-1
    11.                         dd    ?
    Вот я так понял, что Descr_code это и есть эта структура- сегментный, но в таком случае её размер должен быть 8 байт, считаем слева направо:
    1+1+1+1+1+1+4+1= 11 байт

    А должно быть 8, почему так?
    Я уж всяко таблицу вертел, самому не осилить мне её, спасибо, кто откликнется.
     
  2. SII

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

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Там 8 байт и есть, смотрите внимательней, а не просто считайте куски дескриптора.
     
  3. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Чем так писать лучше вообще ничё не писать, если бы я мог сам сосчитать, я бы сюда не писал.
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    amvoz
    Четвёрка — ошибка. Там один байт, а не 4 (буква b в конце числа означает, что кодирование бинарное, а не 16-ричное).
     
  5. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Блин, я впервые с таким столкнулся спасибо вам большое!