summaryrefslogtreecommitdiff
path: root/Optimizing-assembly-code.md
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-03-26 09:24:32 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-03-26 09:24:32 -0400
commit90f1c47345084f3ad3ab8d6c89ded30ae7a686d0 (patch)
tree277c522f5440735a81c55714a77add29739499b6 /Optimizing-assembly-code.md
parentd6e8ae81134931035ed28edc7f745ec2fa107670 (diff)
inc a
Diffstat (limited to 'Optimizing-assembly-code.md')
-rw-r--r--Optimizing-assembly-code.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/Optimizing-assembly-code.md b/Optimizing-assembly-code.md
index 2c4b827..867cb07 100644
--- a/Optimizing-assembly-code.md
+++ b/Optimizing-assembly-code.md
@@ -201,6 +201,23 @@ If `FOO` equals `BAR - 2`, then do:
sbc -BAR ; -1 becomes BAR - 2 aka FOO, 0 becomes BAR
```
+If `FOO` is 1 and `BAR` is 0 (i.e. set `a` to 1 if carry or 0 if not carry), then do:
+
+```asm
+ ; 3 bytes, 3 cycles
+ ccf ; invert carry flag
+ sbc a ; if originally carry, then 0, else $ff aka -1
+ inc a ; 0 becomes 1, -1 becomes 0
+```
+
+If `FOO` is 0 and `BAR` is 0 (i.e. set `a` to 0 if carry or 1 if not carry), then do:
+
+```asm
+ ; 2 bytes, 2 cycles
+ sbc a ; if carry, then $ff aka -1, else 0
+ inc a ; -1 becomes 0, 0 becomes 1
+```
+
### Shift `a` right by 3 bits