12/0042223
Questo 1
Obs: foi colocado a estrutura completa do programa apenas no programa 1, com os demais apresentando
apenas o main loop.
Programa 1
;-------------------------------------------------------------------------------
;-------------------------------------------------------------------------------
; MSP430 Assembler Code Template for use with TI Code Composer Studio
;
;
;-------------------------------------------------------------------------------
.cdecls C,LIST,"msp430.h" ; Include device header file
;-------------------------------------------------------------------------------
.def RESET ; Export program entry-point to
; make it known to linker.
;-------------------------------------------------------------------------------
.text ; Assemble into program memory.
.retain ; Override ELF conditional linking
; and retain current section.
.retainrefs ; And retain any sections that have
; references to current section.
;-------------------------------------------------------------------------------
RESET mov.w #__STACK_END,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW|WDTHOLD,&WDTCTL ; Stop watchdog timer
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
;R5 = ponteiro
;R6 = registor que ter o menor elemento do vetor
;R7 = frequncia do menor elemento
;R8 = contador com o tamanho do vetor
.data
;Declarar vetor com 50 elementos [JOAOANTONIODESANTARITTAERONDINATAISLAURINDOPEREIRA]
;-------------------------------------------------------------------------------
; Stack Pointer definition
;-------------------------------------------------------------------------------
.global __STACK_END
.sect .stack
;-------------------------------------------------------------------------------
; Interrupt Vectors
;-------------------------------------------------------------------------------
.sect ".reset" ; MSP430 RESET Vector
.short RESET
Programa 2
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
.data
vetor: .byte 25,0,'J','O','A','O','A','N','T','O','N','I','O','D','E'
.byte 'S','A','N','T','A','R','I','T','T','A','E','R','O','N','D','I','N','A'
.byte 'T','A','I','S','L','A','U','R','I','N','D','O'
.byte 'P','E','R','E','I','R','A'
Programa 3
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
;R5 = ponteiro
;R6 = multiplos de 2
;R7 = multiplos de 4
;R8 = contador
Programa 4
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
;R4 = contador
;R5 = ponteiro
;R6 = Nmero da matrcula
;R7 = registro utilizado
Programa 5
;-------------------------------------------------------------------------------
; Main loop here
;-------------------------------------------------------------------------------
;R5 o ponteiro
;R6 = Resultado
mov #MEMO, R5 ;inicializa R5 para apontar memria
mov #0, R6 ;zera R6
call #ASC_W16 ;chama a subrotina
OK: jc OK ;resultado ok
NOK: jnc NOK
cont: nop
;mov #0h,#0h
Add R7,R6 ;adiciona os nibbles ao resultado
Questo 2
Ver cdigos acima.
Questo 3
Os vetores so alocados neste endereo pois este o incio do endereo disponvel ao usurio na memria
RAM, que vai de 0x2400 a 0x4400, em passos de 2kB. De 0X1C00 a 0x2400 tem-se o espao reservado para
comunicao serial.
Questo 4
Pode-se declarar um vetor que assumir os valores de 0 a F em ASCII, como se segue:
tab: .byte 0x30,0x31,0x32...0x38,0x39,0x40,...0x46
Logo, fazendo-se uma rotina nibble que retornar diretamente o valor ASCII correspondente, obtm-se o
resultado desejado:
nibble: mov.b tab(R7),R7
mov.b R7,0(R5)
ret
Questo 5
O programa 4 pode ser considerado mais eficiente pois o nmero de testes necessrios menor,
economizando em tempo e espao de processamento.