You are on page 1of 5

Tập lệnh ARM

ADD R0, R1, R2 ; R0 = R0 + R2


ADD R0, R1, #4 ; R0 = R0 + 4
ADD R0, R1, R1, LSL #4 ; R0 = R0 +(R1*16)

MOV r0, r1 ; copy r1 to r0, r1 không thay đổi


MOV r0, #64 ; copy 64 (0x40) to r0
MOVT r0,#0x1234 ; copy 16 bit (1234) vào 16 bit cao của r0 : trước R0 =
0xFFFFFFF8, sau R0 = 0x1234FFF8
MOV R0,#100 ; R0=100
MVN r0, r1 ; copy r1 to r0 (move “NOT”); mov r0,#-20 tương đương với mvn
r0,#0x13 vì NOT(0x00000013)= 0xFFFFFFEC = -20

LDR R0,[R1] ; R0 là giá trị được trỏ bởi R1


Ex:
LDR r2,=ARY ;r2 = địa chỉ cơ sở ARY = 0
LDR r3,=k ;r3 = địa chỉ của biến k
LDR r4,[r3] ;r4 = giá trị của k
LDR r5,[r2,r4] ;r5 = ARY[k] / address = r2+r3 = ARY+k
(ARY = 0 1 2 3 4 )

LDR r3,=Bob ;Load address of Bob into r3


LDR r2,[r3] ;Load value of variable Bob into r2
Bob DCD 0

LDR r1,[r2] ; address = (r2)


LDR r1,[r2,#4] ; address = (r2)+4
LDR r1,[r2,#-4] ; address = (r2)-4
LDR r1,[r2,r3] ; address = (r2)+(r3)
LDR r1,[r2,-r3] ; address = (r2)-(r3)
LDR r1,[r2,r3,LSL #2] ; address=(r2)+(r3 x 4)
LDR r0,[r1,#4]: Loads from location [r1+4]
LDR r0,[r1,#-4] ; Loads from location [r1-4]
LDR r0,[r1,r2] ; Loads from location [r1+r2]

LDR r0,[r1,-r2] ; Loads from location [r1-r2]

Dịch sang trái N bit để chia tỷ lệ theo hệ số 2N


LDR r0,[r1,r2,lsl #2] : Loads from location [r1+(4*r2)]
LDR r0,[r1,#4]! : Load từ vị trí [r1 + 4] vfao r0, sau đó đặt r1 = r1 + 4
LDR r0,[r1],#4 : Load r0 từ [r1], sau đó đặt r1 = r1 + 4
ldr r1,[r2,#4]! ; use address = (r2)+4 ; then r2<=(r2)+4 (pre-index)
ldr r1,[r2,r3]! ; use address = (r2)+(r3) ; then r2<=(r2)+(r3) (pre-index)
ldr r1,[r2],#4 ; use address = (r2) ; then r2<=(r2)+4 (post-index)
ldr r1,[r2],[r3] ; use address = (r2) ; then r2<=(r2)+(r3) (post-index)
Instruction Operation
ADD Rd, Rn, Rm  ; Rd = Rn + Rm ADD operation
ADD Rd, Rd, Rm  ; Rd = Rd + Rm
ADD Rd, #immed  ; Rd = Rd + #immed
ADD Rd, Rn, # immed  ; Rd = Rn + #immed
ADC Rd, Rn, Rm  ; Rd = Rn + Rm + carry ADD with carry
ADC Rd, Rd, Rm  ; Rd = Rd + Rm + carry
ADC Rd, #immed  ; Rd = Rd + #immed +
carry

ADDW Rd, Rn,#immed  ; Rd = Rn + #immed ADD register with 12-bit immediate


value
SUB Rd, Rn, Rm  ; Rd = Rn − Rm SUBTRACT
SUB Rd, #immed  ; Rd = Rd − #immed
SUB Rd, Rn,#immed  ; Rd = Rn − #immed
SBC Rd, Rm  ; Rd = Rd − Rm − borrow SUBTRACT with borrow (not carry)
SBC.W Rd, Rn, #immed ; Rd = Rn − #immed −
borrow
SBC.W Rd, Rn, Rm  ; Rd = Rn − Rm − borrow
RSB.W Rd, Rn, #immed ; Rd = #immed –Rn Reverse subtract
RSB.W Rd, Rn, Rm  ; Rd = Rm − Rn
MUL Rd, Rm  ; Rd = Rd * Rm Multiply
MUL.W Rd, Rn, Rm  ; Rd = Rn * Rm
UDIV Rd, Rn, Rm  ; Rd = Rn/Rm Unsigned and signed divide
SDIV Rd, Rn, Rm  ; Rd = Rn/Rm

You might also like