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

 WASM Phorum —› WASM.ASSEMBLER —› Вызов прерывания...

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


Дата: Апр 30, 2004 12:09:27 · Поправил: Безпощадный даос

Ув. коллеги! Если я вызываю командий int какое-то прерывание - это однозначно прерывание ДОС? Дело вот в чём...
Код (часть):
loc_get_ata_drive_IDs:
call proc_clear_screen
mov si, offset ID_Table_Header
call proc_printmsg
mov word ptr [Port], 1F0h
mov byte ptr [Drive], 0
mov word ptr [ID_T_Port], "F1"  ; 1F0h
mov byte ptr [ID_T_Drive], "0"
call proc_ata_identify_drive
сmp byte ptr [Command], ATAPI_IDENTIFY_DRIVE
je short loc_terminate
mov byte ptr [Command], ATAPI_IDENTIFY_DRIVE
mov si, offset Msg_PressAnyKey
call proc_printmsg
xor ah, ah
int 16h <---!!!!!!!!!!!!!!!!
jmp short loc_get_ata_drive_IDs
loc_terminate:
int 20h
proc_start      endp

Команда int 16h - создание файла, но при этом я не вижу ни одного намёка на то, с каким именем созджавать фаил... Те процедуры, которые вызываются (proc_cler_screen, proc_printmsg, proc_ata_identify_drive) тоже не имеют намёка на создание файла... Может быть int 16h ещё что-то делает?


Дата: Апр 30, 2004 12:36:47

Nos
Если я вызываю командий int какое-то прерывание - это однозначно прерывание ДОС?
Ай-яй-яй, как все запущено... Придется много читать. Если ты вызываешь прерывание командой int, управление передается по адресу, указанному в таблице прерываний. И даже это не однозначно.
Обработчик 16 прерывания в ДОС имеет множество подфункций, - справочник в руки и вперед!
P.S. Используй тег code


Дата: Апр 30, 2004 12:58:35

Читать придётся много - согласен! С тем что инт16 имеет много подфункций, я тоже могу согласиться, НО подфункция указывается в АН, правильно? В приведённом коде единственное что делают с АН - исключающее или... и что?
А на тему справочника - может ссылочку дадите на какой-нить модный (руссифицированный techyelp у меня есть)?


Дата: Апр 30, 2004 14:51:04

Исключающее ИЛИ регистра с самим собой - так многие программисты обнуляют регистр, так что "XOR AH, AH" это то же что и "MOV AH,0".
XOR AH, AH
INT 16H

Такой код будет забирать нажатый символ из буфера клавиатуры, а если никто не нажал клавишу - значит будет ожидание нажатия.


Дата: Апр 30, 2004 17:45:04 · Поправил: hGoblin

На тему справочника - вот:
Interrupt List viewer by Ralf Brown. Там и вьюер, и список прерываний, довольно внушительный.


Дата: Апр 30, 2004 23:34:35

hGoblin
хелп крутой, но надо друзей по енглишь рулящих звать,а это опять пьянка!


Дата: Май 1, 2004 07:58:15

Nos
Нет. Прерывание 16h отвечает только за клавиатуру. Причем только функции 0 - 2 поддерживаются любой версией БИОС. Остальные функции требуют расширения.


Дата: Май 3, 2004 18:26:00

Nos
дааа, ну тыт тут и нарулил


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