Efficient nybble-swap on 6502 by Garth Wilson
[Up to Source Code Repository]
David Galloway made this suggestion on the facebook 6502 Programming group, for swapping nybbles. $36 becomes $63, $A1 becomes $1A, etc.. It takes only 8 bytes and 12 clock cycles, and no variables, no stack usage, no look-up table, no X or Y usage. It uses only the accumulator and status register.
ASL A ADC #$80 ROL A ASL A ADC #$80 ROL AStraight-lining it takes only five bytes more than a subroutine call and cuts the execution time in half. It could of course be put in a macro. How that is done exactly will depend on your assembler, but might go something like:
SWN: MACRO ASL A ADC #$80 ROL A ASL A ADC #$80 ROL A ENDM ;-------------and would be called simply with SWN as if it were an assembly-language mnemonic. You probably won't use it many times in a program anyway for the straight-lining to take up appreciable memory, but you might want it pretty fast when you do.
Last page update: Oct 27, 2017.