[ASM] Co się stanie gdy odczytamy kod którego nie ma

0

Witam!
Co się stanie gdy bootloader (taki prosty) odczyta kod którego nie ma?

org 7C00h

start:
        jmp short kodbootloadera
        nop
        db "        "  ; nazwa OS i wersja OEM (8B)
        dw 512         ; bajtĂłw/sektor (2B)
        db 1           ; sektory/jednostkÄ alokacji (1B)
        dw 1           ; zarezerwowane sektory (2B)
        db 2           ; liczba tablic alokacji (1B)
        dw 224         ; liczba pozycji w katalogu gĹĂłwnym (2B)
        ; 224 to typowa wartoĹÄ
        dw 2880        ; liczba sektorĂłw (2B)
        db 0f0h        ; Media Descriptor Byte (1B)
        dw 9           ; sektory/FAT (2B)
        dw 18          ; sektory/ĹcieĹźkÄ (2B)
        dw 2           ; liczba gĹowic (2B)
        dd 0           ; liczba ukrytych sektorĂłw (4B)
        dd 0           ; liczba sektorĂłw (czÄĹÄ 2),
        ; jeĹli wczeĹniej byĹo 0 (4B)
        db 0           ; numer dysku (1B)
        db 0           ; zarezerwowane (1B)
        db 0           ; rozszerzona sygnatura bloku ĹadujÄcego
        dd 0bbbbddddh  ; numer seryjny dysku (4B)
        db "          "; etykieta (11B)
        db "FAT 12 "   ; typ FAT (8B), zwykle "FAT 12 "
kodbootloadera:
        mov     ah, 2
        mov     al, 10
        mov     ch, 0
        mov     cl, 2
        mov     dh, 0
        mov     bx, 0800h
        mov     es, bx
        xor     bx, bx
        int     13h

        jmp     0800h:0000h

times 510 - ($ - start) db 0
dw 0AA55h

Ten podany wyżej kod to mój bootloader który korzysta z przerwania BIOSu które łąduje kod z dyskietki i wpisuje go do RAMu po czym skacze do miejsca w RAMie gdzie owy kod się znajduje. Ale jeśli nie będzie tam kodu? Czy PC się zresetuje czy będzie bezczynnie oczekiwał?

0

wykona to co znajduje sie w tym obszarze pamieci, tak naprawdę nie wiesz co tam jest, w końcu kod to ciąg bajtów, równie dobrze może sie tam trafić przypadkowa sekwencja bajtów która jako kod nad pisze dysk ( strasznie mało prawdopodobne ) :D

0

Wykona błąd potrójny (triple-fault) i się zresetuje.

Jarek Pelczar napisał(a)

Procesor, gdy 3 razy pod rząd wykona błędną operację, to sam się resetuje, np. gdy żadąna strona nie istnieje a my wykonamy na niej operacją, procesor zanotuje pierwszy błąd i skoczy do procedury obsługi błędu strony. Procedura obsługi błędu strony może nie istnieć (2 błąd). Procesor skoczy do jakiegoś przypadkowego adresu i wykona błędna instrukcję (3 błąd). Wtedy nastąpi reset procesora.

http://binboy.sphere.pl/index.php?show=43

0
Qyon napisał(a)

[...]

Jego bootloader jest w rmode, tam nie ma stron :) Ale to nie zmienia faktu, ze najprawdopodobniej sie zrestartuje.

Jak chcesz sie zabezpieczyc to 1) zrob jakis znacznik w kodzie ktory wrzucasz do pamieci, 2) naucz sie porzadnie programowac i obsluz bledy typu 'blad odczytu'.

0
Wolverine napisał(a)
Qyon napisał(a)

[...]

Jego bootloader jest w rmode, tam nie ma stron
Podejrzewałem ;) Nie mniej jednak wydaje mi się, że zasada będzie identyczna...

0

Dzięki za odpowiedzi

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