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 3: Linha 3:
Para rodar no VISUALARM:
Para rodar no VISUALARM:


  ;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
  ;PROGRAMA CALCULADORA DE 5 OPERAÇÕES
  ; R4 = 1 -> R3 = R2 + R1
  ; R4 = 1 -> R3 = R2 + R1
  ; R4 = 2 -> R3 = R2 - R1
  ; R4 = 2 -> R3 = R2 - R1
Linha 80: Linha 80:
Para rodar no ARMSIM:
Para rodar no ARMSIM:


  ;PROGRAMA CALCULADORA DE 4 OPERAÇÕES
  ;PROGRAMA CALCULADORA DE 5 OPERAÇÕES
  ; R4 = 1 -> R3 = R2 + R1
  ; R4 = 1 -> R3 = R2 + R1
  ; R4 = 2 -> R3 = R2 - R1
  ; R4 = 2 -> R3 = R2 - R1

Edição atual tal como às 15h42min de 7 de outubro de 2025

<= Voltar

Para rodar no VISUALARM:

;PROGRAMA CALCULADORA DE 5 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 5 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: