Рассчитать размер в шестнадцатеричных байтах - PullRequest
0 голосов
/ 22 сентября 2011

Как правильно рассчитать размер в шестнадцатеричных байтах сегмента кода. Мне дают:

IP = 0848    CS = 1488    DS = 1808   SS = 1C80    ES = 1F88

Практическое упражнение, над которым я работаю, спрашивает, каков размер (в шестнадцатеричных байтах) сегмента кода, и дает следующие варианты:

A. 3800    B. 1488    C. 0830    D. 0380    E. none of the above

Правильный ответ - А. 3800, но я понятия не имею, как рассчитать это.

1 Ответ

1 голос
/ 22 сентября 2011

Как рассчитать длину:

  • Примечание CS.Найдите регистр сегмента, ближайший к нему, но больше.
  • Возьмите разницу между ними и умножьте на 0x10 (читай: нажмите на 0).

В вашем примереДС ближайший.1808 - 1488 == 380. И 380 x 10 = 3800.

Кстати, это работает только на 8086 и других аналогичных процессорах с головным мозгом и в реальном режиме на x86.В защищенном режиме на x86 (то есть, если вы не пишете загрузочный сектор или простую DOS-программу), значение регистра сегмента имеет очень мало общего с размером сегмента, и, таким образом, материал выше простоне применяется.

...