Article View: pl.comp.lang.asm
Article #2190Re: Równie prosta zagadka
From: Andrzej Grażyński
Date: Fri, 09 Apr 2010 20:53
Date: Fri, 09 Apr 2010 20:53
39 lines
1922 bytes
1922 bytes
Bernard pisze: > On 2010-04-07 22:38, Andrzej Grażyński wrote: >> Dane jest pole o długości L bajtów. Odrócić kolejność bajtów w tym polu. >> >> Wskazówka: czy SWAPB może się tu do czegoś przydać? > > SWAPB może się przydać, ale więcej z tym kłopotu niż pożytku z powodu > konieczności obsługi przypadków, gdy rozmiar wektora jest poniżej 4 lub > nie jest wielokrotnością 4. Kod ze SWAPB będzie pewnie ciut szybszy i > wyraźnie dłuższy. > > Klasycznie robi się to np. tak: > > ; EDI - adres poczatku, ECX - l. bajtow > > lea esi, [edi + ecx - 1] > rlop: > mov al, [edi] > xchg al, [esi] > stosb > dec esi > cmp esi, edi > jb rlop > > Albo przed pętlą dokładamy shr ecx, 1, a pętlę zamykamy instrukcją loop, > usuwając cmp i jb LEA EDI,[ESI+ECX-1] SHR ECX,1 JZ @@Ready STD @@Loop: MOV AL,[EDI] MOVSB INC ESI ; MOV [ESI+1],AL MOV [ESI],AL ; ADD ESI,2 INC ESI ; ---- LOOP @@Loop @@Ready:
Technical Details
Message-ID:
<hpo44s$583$1@news.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.onet.pl!not-for-mailReferences:
<hpiqg4$te8$2@news.onet.pl> <hpmpsm$ga1$1@newsread1.aster.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.onet.pl!not-for-mail From: Andrzej Grażyński <grazynsk@petex.com.pl> Newsgroups: pl.comp.lang.asm Subject: Re: Równie prosta zagadka Date: Fri, 09 Apr 2010 22:53:32 +0200 Organization: http://onet.pl Lines: 44 Message-ID: <hpo44s$583$1@news.onet.pl> References: <hpiqg4$te8$2@news.onet.pl> <hpmpsm$ga1$1@newsread1.aster.pl> NNTP-Posting-Host: public-gprs135767.centertel.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1270846430 5379 79.162.125.152 (9 Apr 2010 20:53:50 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Fri, 9 Apr 2010 20:53:50 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (Windows/20100228) In-Reply-To: <hpmpsm$ga1$1@newsread1.aster.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit