Difference between revisions of "Z80 Routines:Optimized:addAtoHL"
From WikiTI
m (grammar) |
|||
Line 28: | Line 28: | ||
Thanks to CoBB. | Thanks to CoBB. | ||
+ | |||
+ | another alternate way which uses branching and saves 1 T-state on one path (when carrying to h) : | ||
+ | <nowiki> | ||
+ | addAtoHL: | ||
+ | add a,l | ||
+ | ld l,a | ||
+ | jr nc, $+3 | ||
+ | inc h | ||
+ | ;5 bytes, 19/20 clock cycles | ||
+ | </nowiki> |
Revision as of 02:55, 8 November 2009
This is an optimized addAtoHL. It is a little faster and doesn't need another 16-bit register.
Also it can be changed to add A to any 16-bit register. The only down side is one extra byte.
Use it as a subroutine (don't forget the ret) or macro.
Normal way:
ld d,$00 ld e,a add hl,de ;4 bytes and 22 clock cycles
addAtoHL: add a,l ld l,a adc a,h ;^ these two lines sub l ;v increase h if there is carry ld h,a ;5 bytes and 20 clock cycles ;but no other 16-bit register messed up
Thanks to CoBB.
another alternate way which uses branching and saves 1 T-state on one path (when carrying to h) :
addAtoHL: add a,l ld l,a jr nc, $+3 inc h ;5 bytes, 19/20 clock cycles