· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Проблема при создании *.com файла.

Посл.отвђт Сообщенiе


Дата: Май 14, 2004 03:50:05

Зачем *.com?
Должен загружаться с дискеты (что-то вроде загрузочной).

Ниже приведен листинг программы, которая обрабатывает прерывания поступающие от мыши (com port1). При компиляции всё прекрасно работает. Но получается exe-шник.
Для com-а определяю сегмент, ставлю необходимые параметры при линковке и др. компилирую появляется дофига предупреждений и ошибок. Исправляю ошибки ничего не работает. Просто уже запарился.

Люди посмотрите листинг посоветуй что-нибудь. Спасибо за любую помощь.


_48804492__LIST.ASM


Дата: Май 14, 2004 10:04:44 · Поправил: Anonimka

Брр... В общем, сегмент в com-программе один единственный, а ты там стек определяешь... не надо. Точка входа всегда 100h, и что там стоит, то и будет выполняться. Значит, первыми по-любому должны быть команды, а не данные.

P.S. Ты лучше исправленный исходник покажи, конечный вариант com-а, который компилируется.


Дата: Май 14, 2004 14:00:17

.286
.model tiny
.code
org 100h
begin:
...
...
int 20h
end begin



tasm program.asm
tlink program.obj /t

а дальше получаешь свой program.com


Дата: Май 14, 2004 14:04:08

едрЁн батон !!! Ахтунг !!! Вот ты там понагародил то !"!!! Зачем всё так сложно то ????
Честно гоаоря я не совсем понимаю , а что значит "Должен загружаться с дискеты (что-то вроде загрузочной).
" ??


Дата: Май 14, 2004 21:17:42 · Поправил: defvitguru

P.S. Ты лучше исправленный исходник покажи, конечный вариант com-а, который компилируется.

Как раз это я и пытаюсь сделать.
А приведённый листинг прекрасно компилируется, но только в exe.

Я читал, что что-бы получить com файл обязательно нужно:

prg segment
assume cs:prg,ds:prg,es:prg,ss:prg
org 100h

...а что значит "Должен загружаться с дискеты (что-то вроде загрузочной).
" ??


Комп загружается с дискеты и начинает обрабатывать прерывания мыши поступающие с ком порта. А перед этим я записываю прогу на 2-3 дорожку дискеты.


Дата: Май 14, 2004 22:31:37

Уфф.. А можно посоветовать сначала все-таки попробовать переделать так, как говорят учебники? Это ж в любом есть..

В общем, как и было сказано, в com-программе один сегмент, стек непосредственно не определяется (ss:sp указывает на тот же единственный сегмент, только с конца), org 100h вначале. Ну RTFM же!


Дата: Май 16, 2004 11:33:29

итак, тебе необходим файл типа ком, но не ком, поскольку ты грузишься с дискеты, кстати, а кто загружает твою прогу ??? тебе для этого нужен загрузчик, а он уже должен быть исполнен по определённым правилам(прикрепляю примерчик). Или твоя прога сама исполняет это действо ??. В таком случае , стэк и все сегменты тебе придётся настраивать только самому, и не забудь, что БИОС работает на стеке пользователя, так как INT13h юзать тебе всяко придётся. А вообще, смотри примерчика загрузчика. Небольшой, простенький, разберёшься.

1179341283__BL.ASM


Дата: Май 16, 2004 22:43:32

Спасибо за загрузчик!

Ладно. Объясняю проблему.

В институте дали задание.

Задание: Составить программу, которая бы, загрузившись с загрузочной дискеты, обрабатывала бы прерывания мыши и показывала перемещение курсора, а по клику правой кнопки завершала бы работу.

Вот!
1. Загрузчик у меня есть. См. внизу.
2. Обработчик прерывания мыши тоже есть.

Проблема заключается в том, что мне необходимо переделать (или настроить) листинг так, что бы он компилировался в ком файл, пока он настроен только на exe.

Если я не ошибаюсь, то загрузчик может загружать ком файлы а не exe. Если это не так пожалуйста исправьте меня.

Большое спасибо.


_106287628__3.asm


Дата: Май 17, 2004 14:59:36

Если я не ошибаюсь, то загрузчик может загружать ком файлы а не exe. Если это не так пожалуйста исправьте меня.


ехе файл - это файл, имеющий сложную структуру, и требует для своей загрузки ось, которая настроит сегменты, релокэшэны и тд. Кончно, можно сделать всё это самостоятельно, но, зачем усложнять себе жизнь. К тому же, если на то пошло, тебе категорически запрещено использовать сервисы ос, так как её просто нет там. Поэтому, юзаем ком, как наиболее простой и удобный формат, а главное понятный.

так что - всё правильна :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.116