Ir ao conteúdo

Posts recomendados

Postado

Alguém pode me ajudar, estou precizando desenvoler um programa no Wneander para realizar uma operação de divisão.

[130] = [128] / [129]

[131] = resto

Seria o descrito acima.

desde já agradesço pela ajuda.

  • 2 meses depois...
Postado

Já Desenvolvi a lógica e fui o unico na minha turma que conseguiu fazer o programa e tirei nota MAXIMA.

Turma de Arquitetura de microprocessadores ( UNIABEU ) do Professor PESTANA.

  • 9 anos depois...
Postado

o codigo foi montado pelo simulador NeanderWin, ele possui alguns mecanismos a mais que o WNeander, porém a aplicaçao do codio eh a mesma, pois possui as mesmas instruçoes.

======================================================================================

 

 

org 0            ;------------------------------------------------ PARTE 1-----------------------------------------------------
    LDA a        ;se o numero for positivo sinal(s1 ou s2)=0 do contrario sinal= -1
    JN n1        ;antes de st todo o trexo de codigo salva os sinais nas respectivas variaveis s1 e s2
    LDA zero
    STA s1       ;sinal=0
   sb:
    LDA b
    JN n2
    LDA zero
    STA s2
    JMP st
   n1:
    LDA mum
    STA s1       ;sinal=-1
    JMP sb
   n2:
    LDA mum
    STA s2       ;--------------------------------------------------------------------------------------------------------------
   st:           ;                                                 PARTE 2
    LDA s1       ;esta parte verifica o sinal resultante da divisao
    NOT
    ADD um
    ADD s2
    JZ posi      ;se a soma dos sinais for diferente de zero ou seja -1 ou 1 significa que o numero sera negativo
    LDA zero     ;numero resultante sera negativo
    STA si
    JMP dps
   posi:
    LDA um       ;numero resultante sera positivo                  
    STA si       ;---------------------------------------------------------------------------------------------------------------
   dps:          ;                                                 PARTE 3
    LDA b
    JN neg1
   a1:
    LDA a        ;esta parte serve pra colocar os numeros no formato absoluto
    JN neg2
    JMP cal
   neg1:
    NOT
    ADD um
    STA b
    JMP a1
   neg2:
    NOT
    ADD um
    STA a        ;---------------------------------------------------------------------------------------------------------------
   cal:          ;                                                 PARTE 4
    LDA b
    NOT
    ADD um
    STA b        ;b=-b pra que facilite nos calculos pois precisamos de subtraçoes sucessivas para que a divisao seja possivel
   cont:
    LDA a
    ADD b        
    STA temp     ;temp existe pois após fazermos a-b precisamos verificar se a resposta eh valida e caso seja vdd precisamos fazer res++ para posteriormente reutilizar temp afim de atualizar a variavel a
    JN fm
    LDA res
    ADD um
    STA res
    LDA temp     ;reutilizaçao de temp
    STA a        ;atualizaçao da variavel a
    JMP cont
   fm:           ;------------------------------------------------ PARTE 5--------------------------------------------------------
    LDA si       ;terminada a divisao a partir daqui sera verificado se a resposta sera positiva ou negativa
    JZ inv       ;se si=0 significa que a resposta eh negativa assim precisamos inverter seu sinal
    LDA a
    STA resto    ;resto = ultimo valor da variavel a
    JMP fim      ;se si=1 eh porque a resposta eh positiva então pode-se finalizar o codigo
   inv:
    LDA a
    NOT
    ADD um
    STA resto    ;caso si=0 significa que a resposta e o resto precisam ter seus sinais alterados
    LDA res
    NOT
    ADD um
    STA res      ;mmudança de sinal de resposta
   fim:
    HLT          ;----------------------------------------------------------------------------------------------------------------
org 90h         ;                                                                           DEFINIÇAO DAS VARIAVEIS
    a:              db 0Eh       ;numero a ser dividido (PODE SER NEGATIVO OU POSITIVO)
    b:              db 0FDh    ;numero que dividira (PODE SER NEGATIVO OU POSITIVO)
    resto:        db 0
    res:           db 0           ;resposta
    um:           db 1
    temp:        db 0           ;variavel temporaria
    s1:            db 0           ;indicador de sinal de a
    s2:            db 0           ;indicador de sinal de b
    si:             db 0           ;indicador de sinal resultante
    zero:         db 0
    mum:       db 0FFh    ;constante -1

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!