LDR R0, [PC, #0x088] ;загружает в регистр R0 содержимое ячейки памяти по адресу (PC+0x088)
LDR R1, [R0, #0] ;загружает в регистр R1 содержимое ячейки памяти по адресу R0
STR R1, [R0, #0] ;сохраняет регистр R1 по адресу в R0
LDR pc, =label ;загружает в PC адрес метки кода label
ldr r2,=(BG2_ENABLE|MODE_3) ;загрузить в r2 результат от логической операции OR двух констант
label: LDR PC, [PC, #-&F20] ;загружает в PC содержимое ячейки по адресу PC-0x00000F20 (обычно используется как вход в прерывание)
DCD Label001 ;Define Constant Data, определяет в памяти константу Label001
SUB lr, lr, #4 ;вычесть 4 из LR и результат поместить в LR
STMFD sp!, {lr} ;сначала сделать декремент SP на 4, потом сохранить регистр LR (он указан в списке {LR}) по адресу в SP, измененный адрес сохранить в SP
MRS lr, SPSR ;записать в LR значение регистра SPSR
STMFD sp!, {r0, lr} ;сохранить в стеке R0 и LR. По окончанию операции SP уменьшится на 8, в памяти будет сначала лежать R0, а потом LR
LDR lr, =AT91C_BASE_AIC ;записать в LR константу 0xFFFFF000 (AT91C_BASE_AIC)
LDR r0, [r14, #AIC_IVR] ;записать в R0 содержимое ячейки памяти по адресу R14+256, т. к. #AIC_IVR==256
STR lr, [r14, #AIC_IVR] ;записать значение LR по адресу R14+256, т. к. #AIC_IVR==256
MSR CPSR_c, #ARM_MODE_SVC ;???
STMFD sp!, {r1-r3, r12, lr} ;сохранить в стеке R1, R2, R3, R12, LR. Содержимое стека при этом уменьшится на 5*4 = 20
LDMIA sp!, {r1-r3, r12, lr} ;вернуть из стека содержимое регистров. Содержимое стека при этом увеличится на 5*4 = 20
LDMIA sp!, {pc}^ ;вернуть из стека содержимое PC. ^ означает установить S и вернуть пользовательский банк.
b label1 ;перейти (branch) по метке label1
CMP r0, r4 ; сравнить регистры r0 и r4 (устанавливаются соответствующие флаги в регистре CPSR)
BEQ label34 ; переход по метке label34, если r0 == r4
ldr r2,[r1]+4! ; Загрузить в регистр r2 содержимое того, на что указывает r1, а затем, после того как всё сделано, добавить 4 к r1.
ldr r2,[r1+4]! ; сначала добавить к r1 число 4, а потом загрузить в r2 содержимое ячейки по адресу r1
str r2,[r0]+4! ; сохранить содержимое r2 по адресу в r0, а потом к r0 добавить 4
|