Instruction Set¶
Essential varm instructions for learning assembly programming.
Data Movement¶
mov rd, src: Copy value
mov r0, #42 ; Immediate
mov r1, r0 ; Register copy
mvn rd, src: Bitwise NOT
Arithmetic¶
add rd, rn, rm: Addition
add r2, r0, r1 ; r2 = r0 + r1
sub rd, rn, rm: Subtraction
mul rd, rn, rm: Multiplication
rsb rd, rn, imm: Reverse subtract (imm - rn)
adc: Add with carry
sbc: Subtract with carry
Logical¶
and rd, rn, rm: Bitwise AND
orr rd, rn, rm: Bitwise OR
eor rd, rn, rm: Bitwise XOR
bic rd, rn, rm: Bit clear
Comparison¶
cmp rn, operand: Compare (sets N, Z, C, V flags)
cmn rn, operand: Compare negative
tst rn, operand: Test bits (N, Z flags)
teq rn, operand: Test equivalence (N, Z flags)
Memory¶
ldr rd, =label: Load label address
ldr rd, [rn]: Load word from memory
str rd, [rn]: Store word to memory
ldrb, strb: Byte variants
Branching¶
b label: Branch
bl label: Branch with link (save return address)
bx rn: Branch to address in register
Condition Codes¶
Execute instruction only if condition is true:
EQ |
Equal (Z=1) |
NE |
Not Equal (Z=0) |
GT |
Greater Than |
LT |
Less Than |
GE |
Greater/Equal |
LE |
Less/Equal |
CS |
Carry Set |
CC |
Carry Clear |
cmp r0, r1
bgt greater ; Branch if r0 > r1
System¶
swi: Syscall (syscall number in r7)
halt: Stop execution
See Instruction Set for complete reference.