Article View: pl.comp.lang.asm
Article #644Re: Problem z przesunięciem ekranu
From: Matuzalem
Date: Thu, 14 Sep 2006 15:31
Date: Thu, 14 Sep 2006 15:31
174 lines
3806 bytes
3806 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:
<1158247875.473696.47560@e3g2000cwe.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newshub.sdsu.edu!border1.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!e3g2000cwe.googlegroups.com!not-for-mailReferences:
<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!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newshub.sdsu.edu!border1.nntp.dca.giganews.com!nntp.giganews.com!postnews.google.com!e3g2000cwe.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:15 -0700 Organization: http://groups.google.com Lines: 177 Message-ID: <1158247875.473696.47560@e3g2000cwe.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 1158247881 30228 127.0.0.1 (14 Sep 2006 15:31:21 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 14 Sep 2006 15:31:21 +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: e3g2000cwe.googlegroups.com; posting-host=212.244.115.33; posting-account=HFFdEQ0AAACI08bdAnMScVqwVEj2ucOg Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit