🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #654

Re: Problem z przesunięciem ekranu

#654
From: Bernard
Date: Wed, 20 Sep 2006 10:33
100 lines
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-mail
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>

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