🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Jeszcze prostsza zagadka

#2182
From: Andrzej Grażyński
Date: Fri, 16 Apr 2010 22:16
54 lines
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-mail
References: <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