Você está na página 1de 7

Universidade Federal de Itajubá Campus Itajubá

Roteiro de laboratório
Laboratório de microcontroladores
ELTD13

Prof. Dr. Gustavo Della Colletta

Versão 2021.1
Roteiro 02
Arquitetura ARM e ambiente
de desenvolvimento Keil

Giovane Carvalho Silvério


giovanecs@unifei.edu.br
2020000790
Roteiro 2
Arquitetura ARM e ambiente de
desenvolvimento Keil
Atividade 1
EXPORT __main
AREA exemplo, CODE , READONLY
__main
; Posicao 0x20000092
LDR R6, =0x20000092 ; R6 = 0x20000092
; R1 = 0x00000000
; 0x20000092 = 00
; 0x20000093 = 00
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
MOV R1, #0x99 ; R1 = 0x00000099
; R6 = 0x20000092
; 0x20000092 = 00
; 0x20000093 = 00
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
STRB R1, [R6] ; Salva R1 na posicao
; apontada por R6
; R1 = 0x00000099
; R6 = 0x20000092
; 0x20000092 = 99
; 0x20000093 = 00
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
; Posicao 0x20000093
ADD R6, R6, #1 ; R6 = R6 + 1 = 0x20000093
; R1 = 0x00000099
; 0x20000092 = 99
; 0x20000093 = 00
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
1
MOV R1, #0x85 ; R1 = 0x85
; R6 = 0x20000093
; 0x20000092 = 99
; 0x20000093 = 00
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
STRB R1, [R6] ; Salva R1 na posicao
; apontada por R6
; R1 = 0x00000085
; R6 = 0x20000093
; 0x20000092 = 99 85
; 0x20000093 = 85
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
; Posicao 0x20000094
ADD R6, R6, #1 ; R6 = R6 + 1 = 0x20000094
; R1 = 0x00000085
; 0x20000092 = 99 85
; 0x20000093 = 85
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
MOV R1, #0x3F ; R1 = 0x0000003F
; R6 = 0x20000094
; 0x20000092 = 99 85
; 0x20000093 = 85
; 0x20000094 = 00
; 0x20000095 = 00
; 0x20000096 = 00
STRB R1, [R6] ; Salva R1 na posicao
; apontada por R6
; R1 = 0x0000003F
; R6 = 0x20000094
; 0x20000092 = 99 85 3F
; 0x20000093 = 85 3F
; 0x20000094 = 3F
; 0x20000095 = 00
; 0x20000096 = 00

2
; Posicao 0x20000095
ADD R6, R6, #1 ; R6 = R6 + 1 = 0x20000095
; R1 = 0x0000003F
; 0x20000092 = 99 85 3F
; 0x20000093 = 85 3F
; 0x20000094 = 3F
; 0x20000095 = 00
; 0x20000096 = 00
MOV R1, #0x63 ; R1 = 0x00000063
; R6 = 0x20000095
; 0x20000092 = 99 85 3F
; 0x20000093 = 85 3F
; 0x20000094 = 3F
; 0x20000095 = 00
; 0x20000096 = 00
STRB R1, [R6] ; Salva R1 na posicao
; apontada por R6
; R1 = 0x00000063
; R6 = 0x20000095
; 0x20000092 = 99 85 3F 63
; 0x20000093 = 85 3F 63
; 0x20000094 = 3F 63
; 0x20000095 = 63
; 0x20000096 = 00
; Posicao 0x20000096
ADD R6, R6, #1 ; R6 = R6 + 1 = 0x20000096
; R1 = 0x00000063
; 0x20000092 = 99 85 3F 63
; 0x20000093 = 85 3F 63
; 0x20000094 = 3F 63
; 0x20000095 = 63
; 0x20000096 = 00
MOV R1, #0x12 ; R1 = 0x00000012
; R6 = 0x20000096
; 0x20000092 = 99 85 3F 63
; 0x20000093 = 85 3F 63
; 0x20000094 = 3F 63
; 0x20000095 = 63
; 0x20000096 = 00

3
STRB R1, [R6] ; Salva R1 na posicao
; apontada por R6
; R1 = 0x00000012
; R6 = 0x20000096
; 0x20000092 = 99 85 3F 63 12
; 0x20000093 = 85 3F 63 12
; 0x20000094 = 3F 63 12
; 0x20000095 = 63 12
; 0x20000096 = 12
END

Atividade 2
EXPORT __main
AREA exemplo, CODE , READONLY
__main

MOV R2 ,#4 ; R2 = 0x00000004


; R3 = 0x00000000
; R4 = 0x00000000
;C=0
;Z=0
MOV R3 ,#2 ; R3 = 0x00000002
; R2 = 0x00000004
; R4 = 0x0000000
;C=0
;Z=0
MOV R4 ,#4 ; R4 = 0x00000004
; R2 = 0x00000004
; R3 = 0x00000002
;C=0
;Z=0
SUBS R5 , R2 , R3 ; R5 = R2 - R3 = 0x00000002
; R2 = 0x00000004
; R3 = 0x00000002
; R4 = 0x00000004
;C=1
;Z=0
SUBS R5 , R2 , R4 ; R5 = R2 - R4 = 0x00000000
; R2 = 0x00000004
; R3 = 0x00000002
; R4 = 0x00000004
;C=1
;Z=1
END

4
Tarefas
1. O processador ARM possui 32-bits.
2. Os registros de uso geral possuem 32-bits.
3. Qual é o maior valor que pode ser armazenado em um registro de uso geral?
Dê a resposta em representação hexadecimal.
R.: 0xFFFFFFFF.
4. Verdadeiro ou falso? Os registros dos periféricos internos estão mapeados no
espaço de memória.
R.: Verdadeiro.
5. Qual é o maior número de bytes que um dispositivo ARM pode acessar?
R.: 4.
6. Verdadeiro ou falso? Não se pode carregar um valor diretamente na memória
SRAM.
R.: Verdadeiro.
7. Todo dispositivo Cortex-M é direcionado para o endereço 0x00000004 após o reset.

Você também pode gostar