Solução Problema do Produto Escalar no ARM3

De IFSC
Revisão de 14h31min de 14 de outubro de 2025 por imported>Fargoud (Criou página com 'Programa que implementa mov R0, #4 ; passo de memória mov R10, #0x800 ;endereço de A mov R11, #0x820 ;endereço de B mov R12, #0x840 ;en...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

Programa que implementa

       mov		R0, #4 ; passo de memória
       mov		R10, #0x800 ;endereço de A
       mov		R11, #0x820 ;endereço de B
       mov		R12, #0x840 ;endereço de C
       
       ;valores	do vetor A
       mov		R2, #30
       mov		R3, #27
       mov		R4, #21
       mov		R5, #17
       mov		R6, #10
       mov		R7, #3
       mov		R8, #-1
       mov		R9, #-2
       	
       ;grava	valores de A na memória
       mov		R1, R10
       str		R2, [R1],R0
       str		R3, [R1],R0
       str		R4, [R1],R0
       str		R5, [R1],R0
       str		R6, [R1],R0
       str		R7, [R1],R0
       str		R8, [R1],R0
       str		R9, [R1]
       	
       ;valores	do vetor B
       mov		R2, #-3
       mov		R3, #1
       mov		R4, #7
       mov		R5, #11
       mov		R6, #13
       mov		R7, #23
       mov		R8, #4
       mov		R9, #5
       	
       ;grava	valores de B na memória
       mov		R1, R11
       str		R2, [R1],R0
       str		R3, [R1],R0
       str		R4, [R1],R0
       str		R5, [R1],R0
       str		R6, [R1],R0
       str		R7, [R1],R0
       str		R8, [R1],R0
       str		R9, [R1]
       	
       ;rotina	para multiplicação dos valores
       mov		R1, R10
       mov		R2, R11
       mov		R3, #0
       mov		R4, #7
       mov		R8, #0 ;registrador de saída
       	
 somatorio	mov		R5, #0
       ldr		R6, [R1],R0
       ldr		R7, [R2],R0
       cmp		R7, #0
       bgt		multpos ;se 2o op >0 => mult positiva
       beq		final  ;se 2o op = 0 => não acumula
       	
       ;se		2o. op < 0 :
 multneg	sub		R5, R5, R6
       add		R7, R7, #1
       cmp		R7, #0
       bne		multneg
       b		final
       	
 multpos	add		R5, R5, R6
       sub		R7, R7, #1
       cmp		R7, #0
       bne		multpos
       	
 final
       str		R5, [R12],R0
       add		R8, R8, R5
       add		R3, R3, #1
       cmp		R3, R4
       ble		somatorio
       	
       str		R8, [R12]