home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!decwrl!access.usask.ca!ccu.umanitoba.ca!ciit85.ciit.nrc.ca!brandonu.ca!dueck
- Newsgroups: comp.os.msdos.programmer
- Subject: Re: Efficient byte/word mirroring request
- Message-ID: <1992Aug31.160328.2192@brandonu.ca>
- From: dueck@brandonu.ca
- Date: 31 Aug 92 16:03:28 CST
- References: <1992Aug28.083405.164422@dstos3.dsto.gov.au>
- Organization: Brandon University, Brandon, Manitoba, Canada
- Lines: 36
-
- In article <1992Aug28.083405.164422@dstos3.dsto.gov.au>, egg@dstos3.dsto.gov.au writes:
- > Does anyone know how to quickly and efficiently mirror a byte.
- > ie
- > 11001010 to 01010011
- >
- > the only way I know is this
- >
- > mov al,byte_to_shift
- > mov cx,8
- > ShiftLoop:
- > rcr al
- > rcl ah
- > loop ShiftLoop
- > mov shifted_byte,ah
- >
- > There must be an easier (and smarter) way to speed this up using logical
- > op's perhaps ?
- > Any Help appreciated.
- >
- If its speed you are after, generate a table with 256 one-byte entries
- and use table lookup.
-
- table:
- dw 0, 1, 2 ; first three entries
- ...
- dw 40h, 80h, 0ffh ; last three entries
-
-
- To do the lookup:
-
- mov bl, byte_to_shift
- xor bh,hx
- mov al, table[bx]
-
- Gery Dueck
- dueck@brandonu.ca
-