Exemplo de solução para potenciação
Ir para navegação
Ir para pesquisar
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: