Guide to Assembly Language Programming in Linux

We start this chapter with a detailed discussion of the six status flags-zero, carry, overflow, sign, parity, and auxiliary flags. We have already used these flags in our assembly language programs. The discussion here helps us understand how the processor executes some of the conditional jump instructions. The next section deals with multiplication and division instructions. The IA-32 instruction set includes multiplication and division instructions for both signed and unsigned integers. We then present several examples to illustrate the use of the instructions discussed in this chapter. The chapter concludes with a summary.
We have discussed the flags register in Chapter 4. Six flags in this register are used to monitor the outcome of the arithmetic, logical, and related operations. By now you are familiar with the purpose of some of these flags. The six flags are the zero flag (ZF), carry flag (CF), overflow flag (OF), sign flag (SF), auxiliary flag (AF), and parity flag (PF). For obvious reasons, these six flags are called the status flags.
When an arithmetic operation is performed, some of the flags are updated (set or cleared) to indicate certain properties of the result of that operation. For example, if the result of an arithmetic operation is zero, the zero flag is set (i.e., ZF = 1). Once the flags are updated, we can use the conditional branch instructions to alter flow control. We have discussed several types of conditional jump instructions, including jump on less than or equal, greater than, and...