как тип модели сборки действительно связан? - PullRequest
2 голосов
/ 07 февраля 2011

На самом деле я хочу сделать длинный код, но у меня есть некоторые проблемы с некоторыми подпрограммами, которые находятся в конце моего кода, например, места у меня недостаточно, поэтому я нашел что-то вроде взлома кода в таких сессиях, как .data. стек .model маленький и т. д., поэтому ломая мой код в таких сессиях, я получу решение? как линкер переводит эти сессии так, чтобы они могли работать с длинными кодами? какие типы моделей существуют? Я работаю с 8088, так что если вы знаете какой-либо 16-битный редактор, компилятор, отладчик, который я могу использовать в Windows, я был бы признателен. * 1001 спасибо *

1 Ответ

0 голосов
/ 07 февраля 2011

Ну, вы задали много вопросов, но я полагаю, что основной вопрос - как работают модели памяти, когда дело доходит до компиляции и компоновки кода сборки.На самом деле, у меня нет опыта работы с процессором 8088, но я думаю, что он не сильно отличается от 8086, так как он должен работать в реальном режиме .Хорошо, когда вы пишете ассемблерный код, вы должны выбрать модель памяти, в которой будет работать ваша программа. Это делается в вашей ассамблее с помощью директивы .model (AFAIR использовали и TASM, и MASM).Эта директива может иметь следующие параметры: TINY, SMALL, MEDIUM, COMACT, LARGE и HUGE.Каждый из них определяет модель памяти вашей программы.Модель памяти TINY означает, что ваш код и ваши данные будут представлять собой один сегмент.Другие модели позволяют объявлять код и данные в отдельных сегментах.Или даже объявить несколько сегментов, которые содержат код (в случае, если они превышают ограничение в 64 КБ).Это было бы для начала.

Теперь, учитывая все вышесказанное, мы должны отметить, что разные модели памяти меняют способ обращения с данными.Если вы выбрали модель памяти TINY, ваш код и данные находятся в одном сегменте.Но в малой модели их нет.Поэтому все ваши инструкции ASM, которые обращаются к сегменту DATA, должны иметь надлежащий набор регистров сегмента (DS).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...