Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 21:12   #1
alexdrew
 
Регистрация: 10.03.2009
Сообщений: 8
По умолчанию Прерывания

Можно ли сделать в резидентной программе вектор следующим образом,
У меня здесь не по функционалу вопрос, а к тому, что можно ли в одном векторе в зависимости от значения AH делать либо проверку нажатия нужной клавиши(AH-09Н) либо запрет работы с файлом
Дело в том, что если я так пишу, то программа компилится, но не работает


Код:
new_21h   PROC
pushf
CMP AH,09H
JNE FILE

           PUSH AX 
           
          in        AL,        60h
          cmp       AL,        58h         
          jne       pass_09h               
          push      ES
          mov       AX,        40h         
          mov       ES,        AX          ;
          mov       AL,        ES:[58h]    ;
          pop       ES
          jmp        do_pop                
                                           
pass_09h: 
          POPF
           pop       AX
          jmp DWPTR CS:[old_21h]

do_pop:   
          
          
          in        AL,        61h
          or        AL,        80h    
          out       61h,       AL
          and       AL,        7Fh    
          out       61h,       AL
          mov       AL,        20h    
          out       20h,       AL
          
 
                   
          
          xor       CS:status, 40h        
          mov       AX,        0E07h       
          int       10h
                                       ;
          pop       AX



JMP not_fn40h
FILE:



CMP cs:STATUS,0
JE  not_fn40h
				
		cmp	ah, 3ch			;	
	jb not_fn40h				
		cmp	ah, 43h
	ja not_fn40h				;
	call CompareDir
		cmp	cs:the_same, 0
	je not_fn40h		;???? ?????
		mov	cs:the_same, 0
		mov	ax, cs			;
		mov	ds, ax			
		
		mov	ah, 09h			;
		lea	dx, err_message		
		int	21H
	jmp access_denied
	
not_fn40h:
		popf				
		jmp	cs:old_21h  	
						
 INT 21h
access_denied:					
		popf				
		push	bp			
		mov	bp, sp			
		or	word ptr [bp+6], 1	
					

		pop bp			
		mov	ax, 5			
						

        IRET


new_21h   ENDP
alexdrew вне форума Ответить с цитированием
Старый 16.05.2010, 00:38   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

не путайте аппаратные прерывания и сервисы ОС - нельзя
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик прерывания Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 16 04.12.2009 19:00
Прерывания на портах ForzaJuve Win Api 3 16.02.2009 18:40
Прерывания Kn793 Общие вопросы Delphi 3 10.01.2009 18:43
прерывания sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.04.2008 13:37
Операторы прерывания Иринкаа Общие вопросы Delphi 13 27.11.2007 21:52