Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка - segment-relocatable items 
:(
    Опции темы
Eternal
Дата 3.3.2006, 03:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 3.3.2006

Репутация: нет
Всего: нет



Доброго времени суток.

проблема кароче такая:
пишу программу которая через каждые 30 тиков вызывает заданную процедуру (Dirki)
но часть считающяя тики в TSR. Есть кусок кода из учебника, но возникает ошибка cannot generate COM file :segment-relocatable items present ...

вот то шо у меня есть:

.model tiny
.386
.code
org 100h
Begin:
JMP Start
ALARMCOUNT DW ?
Dirki PROC NEAR
; call FREE_ENV
ret
Dirki ENDP

Start:
MOV AX,60
MOV BX,1092
MUL BX
MOV AH,0
INT 1AH
ADD AX,DX
MOV ALARMCOUNT,AX

PUSH DS
MOV AX,SEG ALARM !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MOV DS,AX !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
MOV DX,OFFSET ALARM
MOV AL,1CH
MOV AH,25H
INT 21H
POP DS
ret

;--- резидентная часть
ALARM PROC FAR
PUSHF
PUSH AX
PUSH CX
PUSH DX
PUSH DS
PUSH CS
POP DS

MOV AH,0
INT 1AH

MOV CX,ALARMCOUNT
CMP DX,CX
JNE NOT_YET

CALL Dirki

NOT_YET: POPF
POP DS
POP DX
POP CX
POP AX
IRET
ALARM ENDP
end Begin

Строчки с знаками "!" неправильны, внимание вопрос smile - как правильно работать с сегментами чтоб ошибки не возникало?

Благодарю за внимание
PM MAIL   Вверх
Chingachguk
Дата 7.3.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Ты ссылаешься на имена сегментов, которые у тебя не объявлены. Обычно сегменты используют в программах типа EXE (сегменты кода, данных и т.п.). Судя по твоей директиве ".model tiny" ты хочешь от компиллятора совсем другой модели программы - COM (один сегмент для всего).

Почитай про разные модели памяти где-нибудь, например у Зубкова С.В. (есть в сети).

Но вообще-то твоя задача (обработчик прерывания и еще что-то несложное) вроде бы не требует сегментов (хотя можно и использовать их). В той части кода, где у тебя "ошибки", требуется указать DOS (int 21h) ПОЛНЫЙ адрес обработчика прерывания 1Ch (user-таймер). Адрес должен быть указан в регистрах DS:DX. В регистре DS находится СЕГМЕНТНЫЙ адрес процедуры обработки прерывания. Поскольку ты используешь (.model tiny) модель памяти COM, то при старте программы такого типа И ТАК сегментные регистры будут заполнены адресом твоего - единственного ! - сегмента:

DS=SS=CS=ES= сегментный адрес твоей программы.

Поэтому в твоем случае достаточно написать:

Код

MOV DX,OFFSET ALARM 
MOV AX,251CH 
INT 21H 
ret




--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
intophy
Дата 12.10.2022, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 11.10.2022

Репутация: нет
Всего: нет



com 20 E2 AD 90 20The 20Viagra 20 20Viagra 20Krem 20Nedir 20Ne 20Ie 20Yarar the viagra The Libor floors and OIDs are unchanged <a href=https://buylasixon.com/>lasix purpose</a> To date, it has not been possible to develop inhibitors of Ras signaling with existing drug development technologies
PM MAIL   Вверх
smoogue
Дата 29.12.2022, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.11.2022

Репутация: нет
Всего: нет



In one Australian study seventy- two women, aged 18 to 50 years were interviewed and they claimed to be dissatisfed with contraceptive choices including their side effects 3 <a href=http://bestcialis20mg.com/>tadalista vs cialis</a>
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1120 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.