Мне присвоены значения регистров для CS, DS, SS, ES, SP, BP, SI, DI, AX, BX, CX, DX. Как я могу найти размер в шестнадцатеричных байтах сегмента кода?Размер сегмента кода 8086
ответ
Вы не можете.
8086 довольно устарел сейчас, но некоторые динамозавры помнят об этом. Это был 16-разрядный процессор, но с 20 битами для адресов: 4 сегментные регистры (CS, DS, ES и SS) имели значения, сдвинутые на 4, и смещение было добавлено к этому. Общая адресуемая память составляла 1 Мбайт.
Максимальный размер любого сегмента составил 65536 байт (0x10000). Но фактический размер сегмента кода не был известен процессору. Не было никакой защиты памяти, и было разрешено записывать данные в середине сегмента кода (что может быть правильным или неправильным, если программист знал, почему :-()
Были разные модели памяти (например, Ссылка: 8086 Memory Model):
- Мельчайшие: CS = DS = SS = ES: общая программа, используемая 1 один сегмент и был ограничен 64k байт
- Малый:. один сегмент кода и один сегмент данных данные и код оба используются для адресации (16 бит).
- Компактный: один сегмент для кода, без ограничений для данных: код, используемый вблизи addre ssing (16 бит), и данные, используемые до адресации (32 бита: сегмент + смещение)
- Носитель: один один сегмент данных, без ограничений для кода
- Большой: нет ограничений для кода и данных
Итак:
- максимальный код сегмента составляет 64 Кбайт, но используемый размер может быть меньше
- код может использовать столько сегмент по мере необходимости (для средних и крупных модели) размер каждой был менее 64k
Я согласен с вами по большей части, но я бы сказал, что размер ЛЮБОГО сегмента всегда 64kb (размер сегмента на 8086 не может быть изменен AFAIK), вы говорите: максимальный размер любого сегмента составлял 65536 байт (0x10000) _, я предполагаю, что размер сегмента всегда равен 64kb, и, как вы указываете, вы не можете вычислить, сколько из них даже используется на 8086. Этот вопрос появляется как дубликат другого, где он предположил, что сегмент кода можно вычислить, и я совершенно не согласен. –
@MichaelPetch: то, что вы называете сегментом, - это память, адресуемая из одного базового регистра, и это действительно 64k на 8086! То, что я (и вопрос ref'd - хороший выбор для вас) вызывает сегмент, - это то, что объявленный линкером сегмент, и этот * ограничен * до 64k. Теперь * предполагая, что программа использует небольшую модель памяти * и *, предполагая CS
Я понимаю, откуда вы родом, однако из того, как формулируются вопросы здесь, а другой нет упоминания о контексте (компоновщик) и т. Д. С отсутствием надлежащего контекста я возвращаюсь к тому, как процессор увидит его.У маленькой модели памяти все сегменты будут одинаковыми, но я сомневаюсь, что кто-то будет утверждать, что сегмент кода равен 0 байтам ;-). Я думаю, что вопросы не имеют ясности, и, возможно, вопросы здесь не так, как они были фактически предоставлены оригинальным плакатам. –
- 1. 8086 Сборка: поместить область переменных в начале сегмента кода
- 2. Размер сегмента сегмента JDK7
- 3. Intel 8086: Почему 4 сегмента памяти
- 4. Фрагмент кода, чтобы найти размер сегмента кучи или сегмента сегмента для программы
- 5. Каковы максимальные и минимальные размеры сегмента на 8086?
- 6. Assembly Определение размера сегмента кода
- 7. Оптимальный размер сегмента TCP
- 8. Какого сегмента кода сделать
- 9. Временная сложность сегмента кода
- 10. UISegmentedControl размер сегмента сенсорное обнаружение
- 11. Максимальный размер сегмента Java Socket
- 12. Понимание сегмента кода сборки MIPS
- 13. Поиск сегмента кода из файла
- 14. Размер сегмента сегмента Oracle Temp - выбор запроса непоследовательный
- 15. 8086 Сборка: определение времени выполнения кода?
- 16. Преобразование кода C в сборку 8086
- 17. Ошибка ошибки сегмента сегмента C++
- 18. iText - размер шрифта и семейство текстового сегмента
- 19. Кто вычисляет размер сегмента данных программы?
- 20. Как получить размер сегмента данных в C++
- 21. Размер сегмента Exact Code для процесса Windows
- 22. Размер сегмента в реальном режиме x86
- 23. Как настроить/уменьшить размер сегмента tcp
- 24. Условие гонки с использованием сегмента кода
- 25. Какова цель этого сегмента кода от Glibc
- 26. Как изменить выравнивание сегмента кода в ELF
- 27. о соображениях класса для сегмента кода
- 28. Поиск времени выполнения сегмента кода в C
- 29. Нам нужна помощь в понимании сегмента кода
- 30. Преобразование сегмента кода из C++ в C#
Возможный дубликат [Рассчитать размер в Hex Bytes] (http://stackoverflow.com/questions/7509836/calculate-size-in-hex-bytes) –
Я случайно не согласен с ответом в дублированном вопросе. Я почти согласен с ответом Сержа здесь, кроме как сказать, что весь сегмент - 64kb. Даже если сегмент равен 0xFFFF, он все еще 64kb и обтекает его в нижней части памяти. –