Article View: pl.comp.lang.asm
Article #2182Re: Jeszcze prostsza zagadka
From: Andrzej Grażyński
Date: Fri, 16 Apr 2010 22:16
Date: Fri, 16 Apr 2010 22:16
54 lines
2128 bytes
2128 bytes
Bogdan (bogdro) pisze: > W dniu 07.04.2010 22:36, Andrzej Grażyński pisze: >> Są instrukcje CPMS?, MOVS?, SCAS?, LODS? i STOS?, nie ma instrukji >> ZAMIENIAJĄCYCH ZAWARTOŚĆ: XCHGS? (ES:[DI] <-> DS:[SI]) ani SWAPS? >> (akumulator<-> ES:[DI}) >> >> >> No właśnie: dane są dwa pola, adresy w DS:[SI] i ES:[DI], długość w >> bajtach w ECX. Jak je efektywnie zamienić? Przewidzieć akcję w obu >> kierunkach, bo pola mogą się nakładać i efekt będzie różny. > > Chodziło o coś w tym stylu? > > mov dx, kierunek ; 1 = do przodu, -1 = do tyłu > > cmp dx, 1 > je petla > ; co prawda długość jest w ECX, ale skoro adresy są > ; 16-bitowe, to starsze bity długości sobie darujemy > add si, cx > dec si > add di, cx > dec di > petla: > mov al, [ds:si] > mov bl, [es:di] > ; znana sztuczka: > xor al, bl > xor bl, al > xor al, bl > ; AL zamienione z BL - zapisz z powrotem > mov [ds:si], al > mov [es:di], bl > add si, dx ; +- 1 > add di, dx > loop petla > A nie lepiej zamieniać w ten sposób: MOV AL,ES:[DI] MOVSB MOV [SI+BX],AL (w BX jest -1 dla kierunku w przód i 1 dla kierunku w tył) albo MOV BX,SI MOV AL,ES:[DI] MOVSB MOV [BX],AL
Technical Details
Message-ID:
<hqanki$ttt$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mailReferences:
<hpiqc2$te8$1@news.onet.pl> <hqa281$jg6$2@inews.gazeta.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.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail From: Andrzej Grażyński <grazynsk@petex.com.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Jeszcze prostsza zagadka Date: Sat, 17 Apr 2010 00:16:30 +0200 Organization: http://onet.pl Lines: 60 Message-ID: <hqanki$ttt$1@news.onet.pl> References: <hpiqc2$te8$1@news.onet.pl> <hqa281$jg6$2@inews.gazeta.pl> NNTP-Posting-Host: public-gprs80928.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1271456211 30653 91.94.189.156 (16 Apr 2010 22:16:51 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Fri, 16 Apr 2010 22:16:51 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) In-Reply-To: <hqa281$jg6$2@inews.gazeta.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit