The branch instruction (B) in ARM lets the processor jump to a different part of the program. This helps control the flow of instructions, like making decisions or repeating actions.
When you want to skip some instructions and jump to another part of the program.
To create loops by jumping back to an earlier instruction.
To jump to a function or subroutine to perform a task.
To implement conditional actions by combining with condition codes.
To exit from a section of code and continue elsewhere.
Core Concept
ARM Architecture
B label
The 'label' is the address or name of the instruction to jump to.
The branch instruction changes the program counter to the label's address.
Key Points
This jumps to the instruction labeled 'loop_start'.
ARM Architecture
B loop_start
This jumps to the instruction labeled 'end', often used to finish a program.
ARM Architecture
B end
Detailed Explanation
This program counts from 0 to 5 using a loop. The branch instruction 'BNE loop' jumps back to 'loop' if R0 is not equal to 5, repeating the addition until the count reaches 5.
ARM Architecture
start:
MOV R0, #0 ; Set R0 to 0
loop:
ADD R0, R0, #1 ; Increase R0 by 1
CMP R0, #5 ; Compare R0 with 5
BNE loop ; If not equal, jump back to loop
end:
MOV R1, R0 ; Move final value to R1
OutputSuccess
Important Notes
The branch instruction changes the flow immediately, so instructions after it are skipped unless jumped back to.
Branch instructions can be combined with conditions like BEQ (branch if equal) or BNE (branch if not equal) for decision making.
Summary
The branch instruction (B) lets the program jump to a different place.
It is useful for loops, decisions, and calling functions.
The label tells where to jump, changing the program flow.
Practice
(1/5)
1. What does the ARM B instruction do in a program?
easy
A. It adds two numbers and stores the result.
B. It jumps to a specified label to change the flow of execution.
C. It loads data from memory into a register.
D. It compares two values and sets flags.
Solution
Step 1: Understand the purpose of the B instruction
The B instruction is used to jump to a different part of the program, identified by a label.
Step 2: Compare with other instructions
Other instructions like add, load, or compare do not change program flow by jumping.
Final Answer:
It jumps to a specified label to change the flow of execution. -> Option B
Quick Check:
Branch (B) = Jump to label [OK]
Hint: B means Branch: jump to a label in code [OK]
Common Mistakes:
Confusing B with arithmetic instructions
Thinking B loads or stores data
Assuming B compares values
2. Which of the following is the correct syntax for a branch instruction in ARM assembly?
easy
A. B label
B. branch to label
C. jmp label
D. goto label
Solution
Step 1: Recall ARM branch syntax
ARM uses the instruction B followed by the label name to branch.
Step 2: Eliminate incorrect syntax
Instructions like 'branch to', 'jmp', or 'goto' are not valid ARM syntax.
Final Answer:
B label -> Option A
Quick Check:
Correct syntax = B label [OK]
Hint: Branch uses 'B' followed by label name [OK]
Common Mistakes:
Using non-ARM keywords like 'jmp' or 'goto'
Writing full words instead of 'B'
Omitting the label after B
3. Given the following ARM assembly code snippet, what will be the value in register r0 after execution?
B skip
MOV r0, #1
skip:
MOV r0, #5
medium
A. 5
B. 1
C. 0
D. Undefined
Solution
Step 1: Analyze the branch instruction
The instruction B skip jumps over the MOV r0, #1 line directly to the label skip.
Step 2: Determine which MOV executes
Since the jump skips the first MOV, only MOV r0, #5 runs, setting r0 to 5.
Final Answer:
5 -> Option A
Quick Check:
Branch skips first MOV, r0 = 5 [OK]
Hint: Branch skips code, so last MOV sets r0 [OK]
Common Mistakes:
Ignoring the branch and thinking both MOV run
Assuming r0 stays 0 by default
Confusing label position
4. Identify the error in this ARM assembly code snippet:
B 100
MOV r0, #10
100:
MOV r1, #20
medium
A. MOV instructions cannot use immediate values.
B. The branch instruction must be 'BR' instead of 'B'.
C. There is no error; the code is correct.
D. Label '100' is invalid because it starts with a number.
Solution
Step 1: Check label naming rules
Labels in ARM assembly cannot start with a digit; '100' is invalid.
Step 2: Verify branch and MOV syntax
The branch instruction 'B' is correct, and MOV can use immediate values like #10.
Final Answer:
Label '100' is invalid because it starts with a number. -> Option D
Quick Check:
Labels cannot start with digits [OK]
Hint: Labels must start with a letter, not a number [OK]
Common Mistakes:
Thinking 'B' is wrong branch syntax
Believing MOV can't use immediate values
Assuming numeric labels are allowed
5. You want to create a loop in ARM assembly that repeats 3 times using the branch instruction B. Which approach correctly uses B to implement this loop?
hard
A. Use B with labels named as numbers only.
B. Use multiple unconditional branches without a counter.
C. Use a counter register, decrement it, and branch back if not zero.
D. Use B to jump forward only, no looping possible.
Solution
Step 1: Understand loop control with branch
Loops require a way to repeat code, usually by checking a counter and branching back if needed.
Step 2: Evaluate options for looping
Using a counter register and branching back when not zero is the standard method. Branching forward only or using invalid labels won't create a loop.
Final Answer:
Use a counter register, decrement it, and branch back if not zero. -> Option C
Quick Check:
Loop = counter + branch back [OK]
Hint: Loop needs counter and branch back to label [OK]
Common Mistakes:
Trying to loop without a counter
Using only forward branches
Using invalid label names for loops
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.