The 80x86 IBM PC and Compatible Computers- P3: Praised by experts for its clarity and topical breadth, this visually appealing, one-stop source on PCs uses an easy-to-understand, step-by-step approach to teaching the fundamentals of 80x86 assembly language programming and PC architecture. Offering users a fun, hands-on learning experience, it uses the Debug utility to show what action the instruction performs, then provides a sample program to show its application. | IP of the instruction after the jump. To understand this look at the unassembled code of Program 2-1 for the instruction JNZ AGAIN repeated below. 1067 0000 B86610 MOV AX 1066 1067 0003 8ED8 MOV DS AX 1067 0005 B90500 MOV CX 0005 1067 0008 BBOOOO MOV 1067 000D 0207 ADD AL BX 1067 000F 43 INC BX 1067 0010 49 DEC CX 1067 0011 75FA JNZ 000D 1067 0013 A20500 MOV 0005 AL 1067 0016 B44C MOV 1067 0018 CD21 INT 21 The instruction JNZ AGAIN was assembled as JNZ 000D and 000D is the address of the instruction with the label AGAIN. The instruction JNZ 000D has the opcode 75 and the target address FA which is located at offset addresses 0011 and 0012. This is followed by MOV SUM AL which is located beginning at offset address 0013. The IP value of MOV 0013 is added to FA to calculate the address of label AGAIN 0013 FA 000D and the carry is dropped. In reality FA is the 2 s complement of-6 meaning that the address of the target is -6 bytes from the IP of the next instruction. Similarly the target address for a forward jump is calculated by adding the IP of the following instruction to the operand. In that case the displacement value is positive as shown next. Below is a portion of a list file showing the opcodes for several conditional jumps. 0005 8A 47 02 AGAIN MOV AL BX 2 0008 3C61 CMP AL 61H 000A 72 06 JB NEXT OOOC 3C 7A CMP 0O0E 77 02 JA NEXT 0010 24 DF AND 0012 88 04 NEXT MOV SI AL In the program above JB NEXT has the opcode 72 and the target address 06 and is located at IP 000A and 000B. The jump will be 6 bytes from the next instruction which is IP 00OC. Adding gives us 000CH 0006H 0012H which is the exact address of the NEXT label. Look also at JA NEXT which has 77 and 02 for the opcode and displacement respectively. The IP of the following instruction 0010 is added to 02 to get 0012 the address of the target location. It must be emphasized that regardless of whether the jump is forward or backward for conditional jumps the address of the .