Ir ao conteúdo
  • Cadastre-se

CHeed

Membro Júnior
  • Posts

    7
  • Cadastrado em

  • Última visita

Reputação

7
  1. Comecei a passar o código pra assembly ele está mostrando o numero anterior mas o seguinte não e não consigo enxergar onde está o erro se alguém puder ajudar o código esta assim: .data msg1: .asciiz"\nDigite um numero entre 1 e 50000: " msg2: .asciiz"\nO valor que voce digitou esta incorreto digite novamente." msg3: .asciiz"\nNao ha numero primo antes desse valor. " msg4: .asciiz"\nO primo anterior foi : " msg5: .asciiz"\nO primo posterior foi : " .text main: #mostra(msg1) li $v0, 4 la $a0, msg1 syscall #ler(msg1) li $v0, 5 syscall add $t1, $0, $v0 #t1 é o numero digitado #Validação do numero digitado: blt $t1, 1, se1 bgt $t1, 50000, se1 beq $t1, 2, qfor2 j comeco se1: #mostra(msg2) li $v0, 4 la $a0, msg2 syscall j main qfor2: #mostra(msg3) li $v0, 4 la $a0, msg3 syscall j depois comeco: add $t0, $zero, 2 for1: #$t0 = i #$t2 = cont #$t3 = j #$t4 = resto add $t2, $zero, 0 add $t3, $zero, 1 for2: rem $t4, $t0, $t3 beq $t4, 0, contsoma possoma: add $t3, $t3, 1 ble $t3, $t0, for2 beq $t2, 2, antes dantes: add $t0, $t0, 1 blt $t0, $t1, for1 #mostrar o antes li $v0, 4 la $a0, msg4 syscall li $v0, 1 add $a0, $t5, $zero syscall j depois contsoma: add $t2, $t2, 1 j possoma antes: #$t5 = antes add $t5, $t0, $zero j dantes depois: #t0 = x #t2 = cont #t3 = i #t4 = resto #t1 = n #t5 = j #t6 = n - 1 #t7 = depois add $t0, $zero, 1 forx: add $t1, $t1, 1 sub $t6, $t1, 1 move $t3, $t6 fori: add $t2, $zero, 0 add $t5, $zero, 1 forj: rem $t4, $t3, $t5 beq $t4, 0, somacont2 possoma2: blt $t5, $t3, forj beq $t2, 2, ndepois posdepois: blt $t0, $t6, fori blt $t0, $t1, forx #mostrar primo depois li $v0, 4 la $a0, msg5 syscall li $v0, 1 move $a0, $t7 syscall j fim somacont2: add $t2, $t2, 1 j possoma2 ndepois: add $t7, $t3, $zero move $t0, $t1 j posdepois fim:
  2. @devair1010 é so colocar Pc Spim no google eu baixei pelo site de um dos meus professores aqui o link : http://www.leandrocolevati.com.br/downloadmateriais?idFile=0ByaHylR4Cic0SG11WG1PMHRWRlk&arquivo=SPIMWin7.zip
  3. @devair1010 valeu pelas dicas mano, agora falta só eu conseguir passar pra assembly mesmo kk ^^
  4. @devair1010 não entendi a parte do cont porque o código está rodando funcional aqui ele verifica quantos divisores tem se tiver 2 divisores ele joga em primo, estava tentando passar pra MIPS PcSpim.
  5. @devair1010 porém a logica está correta é so arrumar as variaveis?
  6. @devair1010 Consegui fazer terminar o código hoje sozinho, porém agora queria ajuda pra passar pra Assembly mesmo não consigo entender muito bem como funciona os laços em Assembly. meu código finalizado ficou assim: 'Fazer um algoritmo que receba um número (1 < número <= 50000) e demonstre o primeiro número primo após a ele e o primeiro número primo antes dele. Sub Primo() Dim i As Integer Dim n As Integer Dim j As Integer Dim antes As Integer Dim cont As Integer Dim depois As Integer n = InputBox("Digite um número entre 1 e 50000: ") If n = 2 Then MsgBox ("Não há número primo antes dele.") GoTo depois: End If If n < 1 Then MsgBox ("Digite um valor correto.") n = InputBox("Digite um número entre 1 e 50.000: ") Else If n > 50000 Then MsgBox ("Digite um valor correto.") n = InputBox("Digite um número entre 1 e 50.000: ") End If End If For i = 1 To n cont = 0 For j = 1 To i If i Mod j = 0 Then cont = (cont + 1) End If Next j If cont = 2 Then antes = i End If Next i MsgBox ("O primo antes do número digitado é: " & antes) depois: For x = 1 To n n = n + 1 For i = n - 1 To n cont = 0 For j = 1 To i If i Mod j = 0 Then cont = (cont + 1) End If Next If cont = 2 Then depois = i x = n End If Next Next MsgBox ("O número primo depois do número digitado é: " & depois) End Sub
  7. O algoritmo em questão é esse: Fazer um algoritmo que receba um número (1 < número <= 50000) e demonstre o primeiro número primo após a ele e o primeiro número primo antes dele. Tenho que fazer ele em Assembly, porém fiz um teste primeiro em macro porquê foi onde eu aprendi consegui mostrar o numero primo antes do número digitado entretanto, não faço ideia de como chegar no valor após ele se alguém puder ajudar. Isso foi o que consegui fazer: Sub Primo() Dim i As Integer Dim n As Integer Dim j As Integer Dim r As Integer Dim cont As Integer n = InputBox("Digite um número entre 1 e 50000: ") If n < 1 Then MsgBox ("Digite um valor correto.") n = InputBox("Digite um número entre 1 e 50.000: ") Else If n > 50000 Then MsgBox ("Digite um valor correto.") n = InputBox("Digite um número entre 1 e 50.000: ") End If End If For i = 1 To n cont = 0 For j = 1 To i If i Mod j = 0 Then cont = (cont + 1) End If Next If cont = 2 Then r = i End If Next MsgBox ("O primo antes do número digitado é: " & r) End Sub

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...