🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Problem z przesunięciem ekranu

#643
From: Matuzalem
Date: Thu, 14 Sep 2006 15:31
174 lines
3781 bytes
Matuzalem napisał(a):
> W wolnej chwili napisałem to co chcesz zrobić.
>
> ; =============================
> title numberblock
>
> .model small
> .stack 100h
> .386
>
> _TEXT segment
> start:
>
> 	; tryb wideo
> 	mov ah, 0
> 	mov al, 3
> 	int 10h
>
> 	; stronica
> 	mov ah, 5
> 	mov al, 0
> 	int 10h
>
> 	loop1:
>
> 		mov ah, 1
> 		int 10h
>
> 		cmp al, 1bh ; esc
> 		je short exit
>
> 		call WriteChar
> 		call Scroll
>
> 	jmp short loop1
>
> exit:
>
> 	mov ax, 4c00h
> 	int 21h
>
> WriteChar proc
>
> 	mov ah, 1
> 	mov cx, 0607h
> 	int 10h
>
> 	mov ah, 10h
> 	int 16h
>
> 	; wypisujemy tylko cyfry od 0 do 9
> 	cmp al, '0'
> 	jb short loop1
> 	cmp al, '9'
> 	ja short loop1
>
> 	mov ah, 9
> 	; al jest już wypełnione
> 	xor bh, bh
> 	mov bl, 0000111b ; (000) - czarne tło, (0111) - białe litery
> 	mov cx, 1
> 	int 10h
>
> 	ret
> WriteChar endp
>
> ; -----------------------
> Scroll proc
>
> 	; pobranie wskaźnika
> 	mov ah, 3
> 	xor bh, bh
> 	int 10h
>
> 	; ustawienie wskaźnika
> 	mov ah, 2
>
> 	cmp dl, (4fh - 60) ; ilość znaków w wierszu
> 	ja short ch1
>
> 	inc dl
> 	xor bx, bx
> 	int 10h
> 	ret
>
> 	ch1:
> 	inc dh
> 	cmp dh, 18h
> 	ja short ch2
>
> 	xor dl, dl
> 	xor bx, bx
> 	int 10h
> 	ret
>
> 	ch2:
>
> 	mov dh, 18h
> 	xor dl, dl
> 	xor bx, bx
> 	int 10h
>
> 	; przewinięcie okna
> 	mov ah, 6
> 	mov al, 1
> 	xor cx, cx
> 	mov dh, 18h
> 	mov dl, 4fh
> 	mov bh, 7
> 	int 10h
>
> 	ret
> Scroll endp
>
> _TeXT ends
> end start
> ; =============================
>
> Tobie zostawiam optymalizacje i poprawki (poprawki w sęsie
> przejżystości i złożoności kodu, bo działa bez problemów,
> przynajmniej mnie się nie udało ich znaleść :)  )

A to troche bardziej zoptymalizowana wersja procedury 'Scrool' :)  :

; -------------------------------------------------------
Scroll proc

	; pobranie wskaźnika
	mov ah, 3
	xor bx, bx
	int 10h

	; ustawienie wskaźnika
	mov ah, 2

	cmp dl, (4fh - 60) ; ilość znaków w wierszu
	ja short ch1

	inc dl
	int 10h
	ret

	ch1:
	inc dh
	xor dl, dl

	cmp dh, 18h
	ja short ch2

	int 10h
	ret

	ch2:

	mov dh, 18h
	int 10h

	; przewinięcie okna
	mov ah, 6
	mov al, 1
	xor cx, cx
	mov dh, 18h
	mov dl, 4fh
	mov bh, 7
	int 10h

	ret
Scroll endp
; -------------------------------------------------------

Miłej zabawy ;]

Pozdrawiam
Technical Details
Message-ID: <1158247864.517545.281410@m73g2000cwd.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!m73g2000cwd.googlegroups.com!not-for-mail
References: <ee8g03$ia2$1@nemesis.news.tpi.pl> <eeb7nb$1r0$1@nemesis.news.tpi.pl> <1158244982.390461.281100@m73g2000cwd.googlegroups.com>

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!m73g2000cwd.googlegroups.com!not-for-mail
From: "Matuzalem" <codemaster_@op.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: Problem z przesunięciem ekranu
Date: 14 Sep 2006 08:31:04 -0700
Organization: http://groups.google.com
Lines: 177
Message-ID: <1158247864.517545.281410@m73g2000cwd.googlegroups.com>
References: <ee8g03$ia2$1@nemesis.news.tpi.pl>   <eeb7nb$1r0$1@nemesis.news.tpi.pl>   <1158244982.390461.281100@m73g2000cwd.googlegroups.com>
NNTP-Posting-Host: 212.244.115.33
Mime-Version: 1.0
X-Trace: posting.google.com 1158247870 8754 127.0.0.1 (14 Sep 2006 15:31:10 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 14 Sep 2006 15:31:10 +0000 (UTC)
In-Reply-To: <1158244982.390461.281100@m73g2000cwd.googlegroups.com>
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: m73g2000cwd.googlegroups.com; posting-host=212.244.115.33;   posting-account=HFFdEQ0AAACI08bdAnMScVqwVEj2ucOg
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit