From 0948e83a85e1a5eed3383b8386ecd0890056010a Mon Sep 17 00:00:00 2001 From: Rangi Date: Tue, 2 Nov 2021 23:22:31 -0400 Subject: dec a then AddNTimes --- Optimizing-assembly-code.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Optimizing-assembly-code.md b/Optimizing-assembly-code.md index 2ff7153..fd5b7b5 100644 --- a/Optimizing-assembly-code.md +++ b/Optimizing-assembly-code.md @@ -67,6 +67,7 @@ WikiTI's advice fully applies here: - [Enable interrupts and return](#enable-interrupts-and-return) - [Jump and lookup tables](#jump-and-lookup-tables) - [Chain comparisons](#chain-comparisons) + - [Off-by-one `AddNTimes`](#off-by-one-addntimes) ## 8-bit registers @@ -2069,3 +2070,23 @@ JumpTable:: pop de jp hl ``` + + +### Off-by-one `AddNTimes` + +Don't do this: + +```asm + ld hl, Foo + ld bc, BAR + dec a + call AddNTimes +``` + +Instead, as long as you don't need to add 255 times when a is 0, then do this: + +```asm + ld hl, Foo - BAR + ld bc, BAR + call AddNTimes +``` -- cgit v1.2.3