Pascal-wskaźniki-ekran znakowy


(Raven4444) #1

Mam takie 2 zadania do zrobienia, domyślam się że po ogarnięciu 1 dam radę 2 zrobić ale wymiękam na 1.

Zdefiniuj zmienną wskaźnikową wskazującą na element typu byte, przypisz jej wartość $B8000000 i wpisz w to miejsce wartość 65. Wcześniej użyj clrscr. Co możemy zaobserwować?

Napisz procedurę wstawiającą znak w dowolne miejsce ekranu znakowego. Wiedząc że adres początku ekranu to $B800:0000. Parametrami wejściowymi procedury były by X i Y oraz Znak.


(Frankfurterium) #2

Z czym dokładnie masz problem? Ze zdefiniowaniem wskaźnika? Przypisaniem wartości? Wpisaniem 65?


(Raven4444) #3

Zmianą adresu wskaźnika i przypisanie 65.


(Rolek0) #4
var p : ^byte;

begin

	p := pointer($B8000000);

	p^ := 65;

end.

Pod DOSem lub innym systemem działającym w real-mode x86, wyświetli literę A w lewym górnym rogu ekranu, 65 to numer ASCII litery A.

Polecam http://www.youtube.com/watch?v=bewTJaboGIw, http://www.youtube.com/watch?v=1I0ObS-RQvQ, http://www.youtube.com/watch?v=ICrBkVxkdVI, http://www.youtube.com/watch?v=mqCULVvaS1c, http://www.youtube.com/watch?v=YvA8tNm0FbA, http://www.youtube.com/watch?v=B7x-RWNGhgc, http://www.youtube.com/watch?v=_5pfrvlY_cA, http://www.youtube.com/watch?v=OuJMvfwblb0,

oraz [http://re.coldwind.pl/](http://re.coldwind.pl/) ;)

(Raven4444) #5

Kompiluje się ale przy uruchamianiu dostaję Raised exception class: external sigsegv at line p^ := 65; Używam Lazarusa/Free Pascala.


(Rolek0) #6

Na systemach działających w trybie chronionym jest to prawidłowe zachowanie :wink: