🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: problem z przerwaniem 1ch

#494
From: Bogdan (bogdro)
Date: Sat, 05 Aug 2006 08:25
54 lines
2656 bytes
KRUKERSradek napisał(a):
> Napisałem program który co jakiś czas ma wyświetlać wiadomość.Niewiem co
> jest zle bo wcale tego nie robi.

 Wyjaśniam poniżej.

> Prosze o odpowiedz (proszę w odpowiedzi wysłać poprawiony cały kod i
> wyjaśnienie, jeśli można)

 Żeby można było od razu zrobić Kopiuj+Wklej? Nie ma tak łatwo :).
Poza tym, pisząc samemu, człowiek się uczy.

> program pisany pod asemblera tasm.

[...]
>  MOV AX,@DATA
>  MOV DS,AX
>  CALL INSTALL_TIMER
> 
> MAIN:
>          CALL DELAY
>          JMP MAIN
> 
> 
> TIMER:
>          CLI
>          INC LICZNIK
>          CMP LICZNIK,10
>          JE  TIMER00
>          JMP TIMER_RETURN
> TIMER00:
>          MOV BYTE_TIMER,01
>          MOV LICZNIK,0000

 Cs:[licznik], cs:[byte_timer] (lub ustaw DS), reszta zdaje się być
dobrze.

 Czemu i po co tak? Pamiętaj, że procedura TIMER *nie* jest
uruchamiana jako część Twojego programu. Jest uruchamiana przez BIOS,
z niewiadomymi DS, ES, SS. Znany jest tylko CS. Jedno co wiadomo to
to, że DS na pewno już *nie* wskazuje na Twój segment danych. Wykonując:
	inc	licznik
	cmp	licznik, 10
oczywiście operujesz na zmiennej, której offset jest taki sam, jak
offset zmiennej "licznik", ale DS już nie jest dobrze ustawiony, więc
operujesz na bajtach w innym segmencie, zaś w procedurze DELAY
sprawdzasz bajty o tym samym offsecie, ale w swoim segmencie (które są
oczywiście nienaruszone).

-- 
Pozdrawiam, Bogdan                                  (Linux i FreeDOS)
Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro
Grupy dyskusyjne o asm:  pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
Prawdziwy, bezpieczny komunikator:                   www.JabberPL.org
Technical Details
Message-ID: <eb1kr4$9q2$1@nemesis.news.tpi.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
References: <eb0iua$3dn$1@nemesis.news.tpi.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.internetia.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail
From: "Bogdan (bogdro)" <bogdan@bogdan.pl>
Newsgroups: pl.comp.lang.asm
Subject: Re: problem z przerwaniem 1ch
Date: Sat, 05 Aug 2006 10:25:48 +0200
Organization: tp.internet - http://www.tpi.pl/
Lines: 54
Message-ID: <eb1kr4$9q2$1@nemesis.news.tpi.pl>
References: <eb0iua$3dn$1@nemesis.news.tpi.pl>
NNTP-Posting-Host: acrc176.neoplus.adsl.tpnet.pl
Mime-Version: 1.0
X-Trace: nemesis.news.tpi.pl 1154766500 10050 83.11.4.176 (5 Aug 2006 08:28:20 GMT)
X-Complaints-To: usenet@tpi.pl
NNTP-Posting-Date: Sat, 5 Aug 2006 08:28:20 +0000 (UTC)
User-Agent: Thunderbird 1.5.0.5 (X11/20060719)
In-Reply-To: <eb0iua$3dn$1@nemesis.news.tpi.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit