**Question**

What is the difference in the way that the BCD ADD WITHOUT CARRY instruction and BCD ADD WITH CARRY instructions are used?

**Answer**

**The Carry Flag (CY)**

Most Programmable Controllers support double-length math instructions, but for example, what should be done if the result of a BCD double-length addition operation exceeds the upper-limit of double-length data, which is 9999 9999?

BCD Double-length Data Range

0 to 9999 9999

**Now for the Carry Flag (CY)!**

Figure1

How the Carry Flag (CY) Works

The result of the addition operation shown in Figure1 cannot be expressed with only 8 digits, so an overflow (i.e., a "carry") occurs. In this case the Carry Flag (CY) will turn ON.

Figure2

Here, the Carry Flag can be used to pass the carry to the calculation for the upper digits, enabling calculations for more than 8 digits.

**Difference between BCD ADD WITHOUT CARRY and BCD ADD WITH CARRY**

The information from Figure1 and Figure2 is summarized here.

Figure3

Calculation A:

Use the ADD WITHOUT CARRY instruction for rightmost digit calculations in which there is no carry from the lower digit.

Calculation B:

Use the ADD WITH CARRY instruction for upper digit calculations in which a carry from the lower digit must be considered.

The ADD WITH CARRY instruction, as shown in Figure3, is an addition instruction that includes the Carry Flag in the addition operation.

**Program and Operation**

1. Ladder Program

2. Operation

Figure4

**Summary**

*1.*Difference between ADD WITHOUT CARRY and ADD WITH CARRY

ADD WITHOUT CARRY instruction:

Used for rightmost digit calculations in which there is no carry signal from a lower digit.

ADD WITH CARRY instruction:

Used for upper digit calculations in which a carry signal from the lower digit must be considered.

*2.*About the Number of Digits in Addition Results

The ladder program above is capable of handling an addition result of 12 digits in length. However, if the result will exceed 12 digits, make the upper digit calculation instruction a Double Add Instruction, or connecting multiple operations with ADD WITH CARRY Instructions.

*3.*Addition Operations with Smaller Models

The CPM2A Programmable Controllers and other smaller Programmable Controllers only have the ADD WITH CARRY Instruction, so when doing calculations with lower digits, be sure to use the CLEAR CARRY (CLC) instruction to turn OFF the Carry Flag (CY) before executing Addition Instructions. If the Carry Flag (CY) is not property reset, in other steps where the Carry Flag (CY) is turned ON, arithmetic mistakes such as 1 + 1 = 3 will occur.

*4.*The logic works the same for Binary Addition instructions and other Math Instructions.

This document explained the carry procedure as related to the BCD Addition instruction, but the same logic applies to the Binary Addition instructions as well.

When dealing with subtraction operations, the Carry Flag (CY) and carry operation simply changes to a borrow operation and the calculation can be done in the same way.

- What is the difference between the different operating modes of the Programmable Controller's CPU Unit (i.e., PROGRAM mode, RUN mode, and MONITOR mode)?
- Is there an instruction that can be used in a subroutine to turn OFF an output bit that was turned ON in the main program?
- Will interrupt tasks and interrupt subroutines work properly during overhead processing, I/O refreshing, and peripheral servicing if C200HS-INT01 Interrupt Input Units are used in CS1 or CS200HX/HG/HE Programmable Controllers?