Arithmetic and logic instructions use the ALU (Arithmetic/Logic Unit). But incrementing/decrementing the memory pointers doesn't use the ALU. Instead, it uses a special adder that calculates memory addresses. A "Constant ROM" holds the values (-6 to +2) that need to be added.
For more about the implementation of the 8086's string instructions, including a detailed walkthrough of the microcode, see my blog post:
https://www.righto.com/2023/04/8086-microcode-string-operations.html