Article View: pl.comp.lang.asm
Article #632Re: Problem z przesunięciem ekranu
From: Matuzalem
Date: Wed, 13 Sep 2006 13:43
Date: Wed, 13 Sep 2006 13:43
80 lines
4092 bytes
4092 bytes
Johnny napisał(a):
> Matuzalem napisał(a):
> > mov ah, 2 ; ustawienie położenia wskaźnika
> > mov dh, 10 ; wiersz
> > mov dl, 20 ; kolumna
> > mov bh, 0 ; stronica
> > int 10h ; wywołanie BIOS
>
> Dlaczego mam ustawiać tu wskaźnik skoro tego nie chcę?
Bo miałeś problem z jego ustawieniem, podałem to jako przykład :]
Bernard napisał(a):
> Masz problem z czytaniem dokumentacji. Wywołujesz funkcje nie podając
> wartości parametrów, które w tej sytuacji są dość losowe, bo nie
> wiadomo, co siedziało w rejestrze przed wywołaniem. Zwróć uwagę na
> podanie WSZYSTKICH argumentów, w tym rejestró2 bl i bh dla funkcji
> pisania znaków
a Ty na to:
Johnny napisał(a):
> Sądziłem, że taka jest praktyka by nie podawać argumentów, których
> wartość znajduje się w rejestrach, stąd nagminne opuszczanie ustawień
> stronicy itp.
Bernard ma racje, w przykładowych kodach które Ci podałem,
pozjadałeś dość istotne dane których nie iniciowałeś, choćby
stronice np.:
mov ah,3h
int 10h
W dokumentcji jest wspomniane o bh, a u Ciebie, gdzie ono jest ?
(http://www.bookcase.com/library/dos/ints/int10.html#03)
Co jeśli w bh znajdzie się coś "nie oczekiwanego"? mogą powstać
komplikacje, pomyśl o tym jak o "ostateczności", czemu?
W tym w/w przykładzie to jeszcze pewnie nic strasznego by się nie
stało (nie sprawdzałem, może z ciekawości to zrobie :P ) ale co by
było gdyby to były funkcje obsługujące np. dysk i zapomniałbyś
zainicjować jakąś zmienną i zostawił ją taką jaka jest?
mógłyś pożegnać się z danymi w najgorszym wypadku z dyskiem (to
już nie są żarty :P )
asm, to nie HLL, gdzie domyślne argumenty "same się" uzupełnią jak
np tu:
int Fun(int arg = 0);
int main()
{
Fun();
return 0;
}
Gdybyś skompilował to i zdeasemblował, zobaczyłbyś coś takiego
(mniej więcej i pod warunkiem, że kompilator nie zastosuje konwencji
wywołań przez rejestr [Register]):
push 0 ; widzisz, nawet jeśi w C/C++ jest
; domyślny zero to i tak musi zostać
odłożony na stos
call 00401012 ; jakiś tam adres
Pojęcie "domyślny argument" w języku asm jest abstrakcyjne, nie ma
czegoś takiego (przynajmniej w tym konekście).
asm to język niskiego poziomu (wręcz kod maszynowy) to bardzo prosty
i logiczny język, dla tego nie należy interpretować go tak jak HLL.
Johnny napisał(a):
> Dzięki za przykład z oczyszczaniem całego ekranu ale go znam. Mój
> problem dotyczy dokładnie tego co opisałem w pierwszym e-mailu oraz w
> odpowiedzi do Bogdana.
Może napisz słownie co chcesz osiągnąć...
Pozdrawiam
Technical Details
Message-ID:
<1158155027.343301.36140@i3g2000cwc.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!newsfeed.gamma.ru!Gamma.RU!postnews.google.com!i3g2000cwc.googlegroups.com!not-for-mailReferences:
<ee8g03$ia2$1@nemesis.news.tpi.pl> <1158144422.515053.10400@d34g2000cwd.googlegroups.com> <ee8tms$skg$2@atlantis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!newsfeed.pionier.net.pl!newsfeed.gamma.ru!Gamma.RU!postnews.google.com!i3g2000cwc.googlegroups.com!not-for-mail From: "Matuzalem" <codemaster_@op.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Problem z przesunięciem ekranu Date: 13 Sep 2006 06:43:47 -0700 Organization: http://groups.google.com Lines: 85 Message-ID: <1158155027.343301.36140@i3g2000cwc.googlegroups.com> References: <ee8g03$ia2$1@nemesis.news.tpi.pl> <1158144422.515053.10400@d34g2000cwd.googlegroups.com> <ee8tms$skg$2@atlantis.news.tpi.pl> NNTP-Posting-Host: 212.244.115.33 Mime-Version: 1.0 X-Trace: posting.google.com 1158155032 10233 127.0.0.1 (13 Sep 2006 13:43:52 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 13 Sep 2006 13:43:52 +0000 (UTC) In-Reply-To: <ee8tms$skg$2@atlantis.news.tpi.pl> User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: i3g2000cwc.googlegroups.com; posting-host=212.244.115.33; posting-account=HFFdEQ0AAACI08bdAnMScVqwVEj2ucOg Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit