Problem z inicjalizacją 13h

0

Witam,
mam problem z inicjalizacją trybu 13h VGA… Program kompiluje się poprawnie:

main() {
  _asm {
    mov ah, 00h
    mov al, 13h
    int 10h
  }
}

Jednak podczas uruchamiana zwraca błąd:
[code]
Instrukcja spod "0x0040106c" odwołuje się do pamięci pod adresem "0xfffffff". Pamięć nie może być "read".
[/code]
Podobny kod kompilowałem również w Delphi i taki sam efekt...
Program wysłałem kilku znajomym - również mieli błędy.
Nadmienie jeszcze, że inne "gotowe" aplikacje używające 13h działają bez zarzutu...

0

Tryb 13h jest trybem dosa... To raz ;>
Dwa: windows nie pozwala kozystac z przerwan dosa

Gotowe aplikacje nie sa aplikacjami windowsa, tylko dosa
i sa odpalane w trybie emulacji (NTki) ew prawie-emulacji (v86?) (9x)...

rozwiazanie:
kompiluj kompilatorem dosowym.. turbo pascal... turbo c.. borland c stary... debug dosowy (assemblerr)...
ofc co za tym idzie: tryb 13h i okienka windowe w jednej aplikacji za bardzo nie wyjda, poza tym program bedzie 16sto bitowy i bedzie mial wszelkie ograniczenia z tym zwiazane

0

Instrukcja spod "0x0040106c" odwołuje się do pamięci pod adresem "0xfffffff". Pamięć nie może być "read".

To jakiś wałek Windows z serii NT :|
Patrz tu:
http://4programmers.net/Forum/viewtopic.php?id=52395

0

Tryb 13h jest trybem dosa... To raz ;>

Jest odpalane w trybie rzeczywistym. Nie koniecznie MS DOS.

Dwa: windows nie pozwala kozystac z przerwan dosa

Tez nie calkiem prawda. Akurat przerwania dosowe emuluje bardzo dobrze. 10h jest przerwaniem biosu, wiec nie ma tu znaczenia, czy jest DOS czy nie, ale czy jest to tryb rzeczywisty czy nie.

poza tym program bedzie 16sto bitowy i bedzie mial wszelkie ograniczenia z tym zwiazane

Z tym tez sie nie zgodze. Zrobilem hybryde. Wewnatrz 32-bitowy kod odpalany jako program dosowy (MZ). Kochany FASM :P
//w TASM robię to samo :P - m.M

Co do reszty to sie zgadzam. Latwiej jest wziac kompilator dosowy.

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