Article View: pl.comp.lang.asm
Article #654Re: Problem z przesunięciem ekranu
From: Bernard
Date: Wed, 20 Sep 2006 10:33
Date: Wed, 20 Sep 2006 10:33
100 lines
3334 bytes
3334 bytes
Johnny wrote: > No więc poddaję się. Próbuję przewalczyć "błąd przedostatniej i > ostatniej kolumny" ale bez pozytywnych rezultatów. Poniżej zamieszczam > uproszczoną wersję bez przesuwania ekranu. Nie korzystam już z funkcji > 10h przerwania 16h lecz 8h - 21h ale to niewiele zmieniło. > > Czy ktoś potrafi wskazać gdzie leży błąd lub przerobić to na działającą > wersję z wykorzystaniem tych samych funkcji? > Kolega Matuzalem bardzo się starał i za to mu dziękuję. Jednak teorii > podanej w jego odpowiedziach nie udało mi się przełożyć na praktykę. > title ekran > .model small > .stack 100h > .386 > .code > ;--------------------------------------------- > ; main > ;--------------------------------------------- > main proc > mov ax,@data ; inicjalizacja ds > mov ds,ax > > xor ah,ah ; minimalny tryb wideo 40 kolumn? O to Ci chodziło? > mov al,1h > int 10h > > mov ah,0fh ; odczyt liczby kolumn > int 10h > dec ah ; l kolumn - 1 bo indeks zaczyna się od zera > mov lcol,ah > > mov cx,040ah ; licznik Będziemy powtarzali pętlę 1034 razy? > odczyt: > mov ah,8h > int 21h Ciekawe czy wartość CX przeżyje to wywołanie... > cmp al,1bh ; czy ESC > je exit > > mov ah,0ah ; zapis znaku > xor bh,bh > push cx > mov cx,1h > int 10h > pop cx > > call przesun > > loop odczyt > > exit: > mov ax,4C00h ; zakończenie procedury > int 21h > main endp > > > ;--------------------------------------------- > ; przesun > ;--------------------------------------------- > przesun proc > pusha ; wszystko na stos > > mov ah,3h ; odczytaj położenie wskaźnika > xor bh,bh > int 10h > > mov ah,2h ; przesuń wskaźnik > xor bh,bh > cmp dl,lcol > je nwiersz > inc dl > jmp exec > > nwiersz: > mov dl,0h > inc dh I przesuwamy do nieistniejącego wiersza ekranu... > exec: > int 10h > > popa > ret > > przesun endp > > .data > lcol db ? > end main > >
Technical Details
Message-ID:
<eer5cm$tiu$1@achot.icm.edu.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mailReferences:
<ee8g03$ia2$1@nemesis.news.tpi.pl> <eeb7nb$1r0$1@nemesis.news.tpi.pl> <1158244982.390461.281100@m73g2000cwd.googlegroups.com> <1158247875.473696.47560@e3g2000cwe.googlegroups.com> <eedgj5$hl8$1@atlantis.news.tpi.pl> <1158314745.102416.285490@p79g2000cwp.googlegroups.com> <1158315621.847716.34500@p79g2000cwp.googlegroups.com> <eee9ll$38u$1@atlantis.news.tpi.pl> <1158328549.838592.247550@m73g2000cwd.googlegroups.com> <eelk74$rmc$1@atlantis.news.tpi.pl> <1158601023.863820.102920@k70g2000cwa.googlegroups.com> <eequ8i$goo$1@atlantis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news2.icm.edu.pl!not-for-mail From: Bernard <bernard@earth.net> Newsgroups: pl.comp.lang.asm Subject: Re: Problem z przesunięciem ekranu Date: Wed, 20 Sep 2006 12:33:11 +0200 Organization: http://news.icm.edu.pl/ Lines: 100 Message-ID: <eer5cm$tiu$1@achot.icm.edu.pl> References: <ee8g03$ia2$1@nemesis.news.tpi.pl> <eeb7nb$1r0$1@nemesis.news.tpi.pl> <1158244982.390461.281100@m73g2000cwd.googlegroups.com> <1158247875.473696.47560@e3g2000cwe.googlegroups.com> <eedgj5$hl8$1@atlantis.news.tpi.pl> <1158314745.102416.285490@p79g2000cwp.googlegroups.com> <1158315621.847716.34500@p79g2000cwp.googlegroups.com> <eee9ll$38u$1@atlantis.news.tpi.pl> <1158328549.838592.247550@m73g2000cwd.googlegroups.com> <eelk74$rmc$1@atlantis.news.tpi.pl> <1158601023.863820.102920@k70g2000cwa.googlegroups.com> <eequ8i$goo$1@atlantis.news.tpi.pl> NNTP-Posting-Host: p310-gbm.ii.pw.edu.pl Mime-Version: 1.0 X-Trace: achot.icm.edu.pl 1158748374 30302 194.29.168.171 (20 Sep 2006 10:32:54 GMT) X-Complaints-To: abuse@icm.edu.pl NNTP-Posting-Date: Wed, 20 Sep 2006 10:32:54 +0000 (UTC) In-Reply-To: <eequ8i$goo$1@atlantis.news.tpi.pl> User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit