Exemplo de solução para potenciação: mudanças entre as edições

De IFSC
Ir para navegação Ir para pesquisar
imported>Fargoud
Sem resumo de edição
imported>Fargoud
Sem resumo de edição
Linha 1: Linha 1:
[[AULA 5 - Microprocessadores - Graduação | <= Voltar ]]  
[[AULA 5 - Microprocessadores - Graduação | <= Voltar ]]  
Para rodar no VISUALARM:
;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
; R4 = 1 -> R3 = R2 + R1
; R4 = 2 -> R3 = R2 - R1
; R4 = 3 -> R3 = R2 X R1
; R4 = 4 -> R3 = R2 / R1
;              R4 = 5 -> R3 = R2^R1
mov r4,#5 ; OPERAÇÃO
mov r2,#5 ; OPERANDO 1
mov r1,#4 ; OPERANDO 2
; Zera variáveis auxiliares
mov r3,#0
mov            r5,#0
mov            r6,#0
mov            r7,#0
; Identifica qual a operação escolhida
cmp r4,#1
blt fim
beq soma
;******
cmp r4,#2
beq subt  ; se r4=2 pula para subtração
;******
cmp r4,#3
beq mult
;******
cmp r4,#4
beq divisao
;******
cmp r4,#5
bgt fim
beq exp
;******
;******; ALGORITMO DE SOMA:
soma add r3,r2,r1
        b fim
;******; ALGORITMO DE SUBTRAÇÃO:
subt sub r3,r2,r1
        b fim
;******; ALGORITMO DE MULTIPLICAÇÃO:
mult  add r3, r3, r2
        sub r1, r1, #1
        cmp r1, #1
        bge mult
        cmp              r4,#5 
        beq              auxexp2    ;continua, se for exponenc. e salva o resul. parcial em R7
      b fim
;******; ALGORITMO DE DIVISÃO:
divisao    mov r4,r2
div2     subge r4,r4, r1
            add r3, r3,#1
            cmp r4,r1
            bge div2
            b fim
;*******; ALGORITMO DA EXPONENCIAÇÃO:
auxexp2  mov        r7,r3
          sub        r6,r6,#1
          cmp        r6,#0
          bgt        auxexp1
          mov        r3,#1
          b          fim
exp      mov        r5,r2
          mov        r7,r2
          sub        r6,r1,#1
          cmp        r6,#0
          bgt        auxexp1
          mov        r3,#1
          b          fim
auxexp1  mov        r1,r7  ;para fazer R2 x R2 e não R2 X R1
          mov        r3,#0
          mov        r7,#0
          b          mult
   
fim
Para rodar no ARMSIM:


  ;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
  ;PROGRAMA CALCULADORA DE 4 OPERAÇÕES

Edição das 15h38min de 7 de outubro de 2025

<= Voltar

Para rodar no VISUALARM:

;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
;		R4 = 1 -> R3 = R2 + R1
;		R4 = 2 -> R3 = R2 - R1
;		R4 = 3 -> R3 = R2 X R1
;		R4 = 4 -> R3 = R2 / R1
;               R4 = 5 -> R3 = R2^R1
mov		r4,#5 ; OPERAÇÃO
mov		r2,#5 ; OPERANDO 1
mov		r1,#4 ; OPERANDO 2
; Zera variáveis auxiliares
mov		r3,#0
mov            r5,#0
mov            r6,#0
mov            r7,#0
; Identifica qual a operação escolhida
cmp		r4,#1
blt		fim
beq		soma
;******
cmp		r4,#2
beq		subt  ; se r4=2 pula para subtração
;******
cmp		r4,#3
beq		mult
;******
cmp		r4,#4
beq		divisao
;******
cmp		r4,#5
bgt		fim
beq		exp
;******
;******; ALGORITMO DE SOMA:
soma	add		r3,r2,r1
       b	fim
;******; ALGORITMO DE SUBTRAÇÃO:
subt	sub		r3,r2,r1
       b	fim
;******; ALGORITMO DE MULTIPLICAÇÃO:
mult  add		r3, r3, r2
       sub		r1, r1, #1
       cmp		r1, #1
       bge		mult
       cmp              r4,#5  
       beq              auxexp2     ;continua, se for exponenc. e salva o resul. parcial em R7
      b		fim
;******; ALGORITMO DE DIVISÃO:
divisao    mov		r4,r2
div2	    subge	r4,r4, r1
           add		r3, r3,#1
           cmp		r4,r1
           bge		div2
           b		fim
;*******; ALGORITMO DA EXPONENCIAÇÃO:
auxexp2  mov         r7,r3
          sub         r6,r6,#1
          cmp         r6,#0 
          bgt         auxexp1
          mov         r3,#1
          b           fim
exp      mov         r5,r2
          mov         r7,r2
          sub         r6,r1,#1
          cmp         r6,#0
          bgt         auxexp1
          mov         r3,#1
          b           fim
auxexp1  mov         r1,r7  ;para fazer R2 x R2 e não R2 X R1
          mov         r3,#0
          mov         r7,#0
          b           mult
   
fim


Para rodar no ARMSIM:

;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
;		R4 = 1 -> R3 = R2 + R1
;		R4 = 2 -> R3 = R2 - R1
;		R4 = 3 -> R3 = R2 X R1
;		R4 = 4 -> R3 = R2 / R1
;               R4 = 5 -> R3 = R2^R1
mov		r4,#5 ; OPERAÇÃO
mov		r2,#5 ; OPERANDO 1
mov		r1,#4 ; OPERANDO 2
; Zera variáveis auxiliares
mov		r3,#0
mov            r5,#0
mov            r6,#0
mov            r7,#0
; Identifica qual a operação escolhida
cmp		r4,#1
blt		fim
beq		soma
;******
cmp		r4,#2
beq		subt  ; se r4=2 pula para subtração
;******
cmp		r4,#3
beq		mult
;******
cmp		r4,#4
beq		divisao
;******
cmp		r4,#5
bgt		fim
beq		exp
;******
;******; ALGORITMO DE SOMA:
soma:	add		r3,r2,r1
       b	fim
;******; ALGORITMO DE SUBTRAÇÃO:
subt:	sub		r3,r2,r1
       b	fim
;******; ALGORITMO DE MULTIPLICAÇÃO:
mult:  add		r3, r3, r2
       sub		r1, r1, #1
       cmp		r1, #1
       bge		mult
       cmp              r4,#5  
       beq              auxexp2     ;continua, se for exponenc. e salva o resul. parcial em R7
      b		fim
;******; ALGORITMO DE DIVISÃO:
divisao:    mov		r4,r2
div2:	    subge	r4,r4, r1
           add		r3, r3,#1
           cmp		r4,r1
           bge		div2
           b		fim
;*******; ALGORITMO DA EXPONENCIAÇÃO:
auxexp2:  mov         r7,r3
          sub         r6,r6,#1
          cmp         r6,#0 
          bgt         auxexp1
          mov         r3,#1
          b           fim
exp:      mov         r5,r2
          mov         r7,r2
          sub         r6,r1,#1
          cmp         r6,#0
          bgt         auxexp1
          mov         r3,#1
          b           fim
auxexp1:  mov         r1,r7  ;para fazer R2 x R2 e não R2 X R1
          mov         r3,#0
          mov         r7,#0
          b           mult
   
fim: