bne
Branch if not equal
Branches to the specified address if not equal.
Sizes .b .s .w .l
Used in
- Compare and branchM68K assembly
- Loops and dbraM68K assembly
- Arrays, strings and (a0)+M68K assembly
- The screen, keyboard and mouse through trapsM68K assembly
- Interrupts and cyclesM68K assembly
- Length of a stringM68K assembly
- Reverse a string in placeM68K assembly
- Print a number in any base without helpM68K assembly
- The snake gameM68K assembly
- Flappy ASMM68K assembly
XNZVC –––––
- Changes no flag
- Reads Z
Forms
bne
Operands
label- A branch target, written as a label or address. The assembler calculates the relative displacement. More
The suffix selects the condition. See condition codes. The size sets the branch’s reach: about 128 bytes in either direction for .s (or .b), and 32 KB for .w. With no size, the assembler chooses .s for a known target when the short encoding can reach it. On the 68020, it chooses .l for a known target beyond .w reach. All other cases use .w, including forward references. On the 68020, .l reaches anywhere in memory. See long branches. On the 68000 and 68010, .l is treated as .w, as in EASy68K.
* --- Loop: count down from 10 ---
move.l #10, d0
move.l #0, d1
loop:
addq.l #1, d1
subq.l #1, d0
bne loop ; branch if d0 != 0
* --- Conditional skip ---
move.l #5, d2
move.l #5, d3
cmp.l d3, d2
beq are_equal ; branch if d2 == d3
move.l #0, d4
bra done
are_equal:
move.l #$FF, d4
done: