Section 06 Part 03 – The BEQ & BNE Instructions

 

“A gentleman would be ashamed should his deeds not match his words.” ~Confucius

 

 

 

Introduction

 

These two are conditional branches that will branch depending on the Z flag.  It should be noted that these branch instructions have two sizes; .s for short and .w for word.  For details see Section 05 Part 03 (The BRA Instruction).

 

 

 

The BEQ Instruction

 

BEQ – Branch on EQual

 

If the Z flag of the CCR is set, the destination operand will be added to the PC, and the 68k will continue reading at the new offset held in PC.  If the Z flag is clear, the instruction is ignored.

 

 

 

Examples

 

You’ve seen this one used various times in a few examples, it is quite simple:

 

          cmpi.w    #$0020,d0

          beq.s     FlagZIsSet

          move.w    #$0000,d0

 

FlagZIsSet:

 

 

The CMP instruction runs a comparison of 0020 and the word inside d0:

 

 

The BEQ instruction will only branch if the Z flag is set.  If it is cleared, it will ignore the branch and continue.

 

 

 

The BNE Instruction

 

BNE – Branch on Not Equal

 

If the Z flag of the CCR is clear, the destination operand will be added to the PC, and the 68k will continue reading at the new offset held in PC.  If the Z flag is set, the instruction is ignored.

 

 

 

Examples

 

This is the opposite of BEQ:

 

          cmpi.w    #$0020,d0

          bne.s     FlagZIsClear

          move.w    #$0000,d0

 

FlagZIsClear:

 

 

The CMP instruction runs a comparison of 0020 and the word inside d0:

 

 

The BNE instruction will only branch if the Z flag is cleared.  If it is set, it will ignore the branch and continue.

 

 

 

Previous Part

Main Page

Next Part