|
|
|
Eternal |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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 Строчки с знаками "!" неправильны, внимание вопрос - как правильно работать с сегментами чтоб ошибки не возникало? Благодарю за внимание |
|||
|
||||
Chingachguk |
|
|||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Ты ссылаешься на имена сегментов, которые у тебя не объявлены. Обычно сегменты используют в программах типа EXE (сегменты кода, данных и т.п.). Судя по твоей директиве ".model tiny" ты хочешь от компиллятора совсем другой модели программы - COM (один сегмент для всего).
Почитай про разные модели памяти где-нибудь, например у Зубкова С.В. (есть в сети). Но вообще-то твоя задача (обработчик прерывания и еще что-то несложное) вроде бы не требует сегментов (хотя можно и использовать их). В той части кода, где у тебя "ошибки", требуется указать DOS (int 21h) ПОЛНЫЙ адрес обработчика прерывания 1Ch (user-таймер). Адрес должен быть указан в регистрах DS:DX. В регистре DS находится СЕГМЕНТНЫЙ адрес процедуры обработки прерывания. Поскольку ты используешь (.model tiny) модель памяти COM, то при старте программы такого типа И ТАК сегментные регистры будут заполнены адресом твоего - единственного ! - сегмента: DS=SS=CS=ES= сегментный адрес твоей программы. Поэтому в твоем случае достаточно написать:
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
intophy |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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
|
|||
|
||||
smoogue |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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>
|
|||
|
||||
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |