Zmienianie wektora przerwania sprzętowego przed załadowani

0

Witam. Jakiś czas temu zacząłem się bawić wektorami przerwań w assemblerze i natrafiłem na artykuł o TSRach. Bardzo mi się to spdobało, jednak jak wiele rzeczy po dłuższej zabawie znudziło mi się to. Jednak ostatnio pomyślałem, że może pobawiłbym się z ze zmienianiem wektorów bezpośrednie w tablicy przerwań. Przerobiłem prosty rogramik z tutoraiala o TSRach, który wyświetlał na ekranie aktualne sekundy wg czasu BIOSu, tak aby ustawiał wektory przerwań korzystając z tablicy przerwań a nie funkcji DOSa i kiedy skompilowałem kod w plik COM i uruchomiłem go pod DOSem to program działał bez zarzutów, natomiast kiedy nieco przerobiłem kod i wrzuciłem program do MBR ( jeśli tak mozna go nazwac ) dyskietki to kod nie działał.

ponizej zamieszczam kod

Start:
jmp Instaluj

staraproc dd 0

NaszaProc:
push ax
push bx
push di
push es
mov ax,0b800h
mov es,ax
xor di,di
xor al,al
out 70h,al
jmp $+2
in al,71h
mov bl,al
and bl,0fh
add bl,'0'
shr al,4
add al,'0'
mov ah,0ch
stosw
mov al,bl
stosw
pop es
pop di
pop bx
pop ax
jmp dword ptr cs:[staraproc]

Instaluj:
XOR AX, AX
MOV DS, AX
MOV SS, AX
MOV SP, 7BFCh
sti
MOV SI, 70h
LODSW
mov word ptr cs:[staraproc],AX
LODSW
mov word ptr cs:[staraproc +2],AX
XOR AX, AX
MOV ES, AX
MOV DI, 70h
mov ax,offset NaszaProc
STOSW
MOV AX, CS
STOSW

kk:
jmp kk

wszystkie offsety są ok. Po wygenerowaniu tgo na com poodejmowałem 100h od odpowiednich offsetów w hiew`ie wiec musi byc ok. A jeśli zamiast kodu wyświetlającego sekundy podstawie choćby taki co wyświetla jeden znak na ekranie to i tak nic się nie pokaze.

0

Ej, serio nie wiecie co tu jest źle czy po prostu uważacie, że jestem głupi i rozwiązanie jest zbyt proste, albo że ... hmmm, no żadnej odpowiedzi, a wydawało mi się, że proste pytanie, jak na was.

1 użytkowników online, w tym zalogowanych: 0, gości: 1