Ir ao conteúdo
  • Cadastre-se

Assembly calculadora com o Neander


Posts recomendados

@Jonathas Braun    não precisa escrever , não , esse label é para ajudar na hora que você estiver fazendo o código , assim você estabelece um label qualquer e quando for inserir os dados no neander  , no lugar desse Label você pula para o próximo endereço ., e vai assim até o final fazendo a conversão dos código Mnemômicos pelos respectivos números deles , como está escrito no neander , e aí você volta lá no endereço que você deixou sem colocar nada e então coloca o endereço de onde estará o Label criado , e que tem aquele bloco de instruções , então você olha lá na aba programa do neander e vê qual o endereço desse bloco de instruções e volta lá em cima e coloca esse endereço lá   .

e aqueles números que coloquei  , que tem os endereços e os valores , basta você ir inserindo eles nessas mesmos endereços lá na aba programa no neander  . e depois clicar em executar / zerar pc / F9 , e o código será executado e você verá lá na aba Dados no endereço qual valor foi colocado lá  e que é a resposta  .

 

 

adicionado 6 minutos depois

@Jonathas Braun   você não precisa saber , quem tem que saber é o programa ,  você apenas vai criar as instruções que fará alguma coisa que você queira , de acordo com cada possibilidade , colocando elas em um endereço que você quiser , mas geralmente vai se inserindo na ordem crescente , é o mais adequado , e então o compilador , que é um programa criado por alguém aí , vai mandar uma informação para o processador do computador , e esse sim é que fará tal tarefa pedida .

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun    se você fez o código que tem todas as possibilidades , e inseriu esses códigos lá no neander , a sua parte estará pronta , aí a tarefa será do programa , que resolverá , e o que ele precisa fazer é verificar se o número é zero , ou se o número é negativo , ou se o número é positivo , e assim que ele decidir isso ele vai pular por si mesmo para o bloco de instruções  que você já colocou previamente lá nos endereços , e fará o que está ali , então nesse código que postei , se  o programa , decidir que o número no endereço 128 é zero ele vai pular para o endereço 24 desse código , onde ele verá as intruções que colocam esse valor lá no endereço 130 como está no enunciado .

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun    não pula , quem faz isso é o programa , como eu disse você cria os códigos para cada possibilidade e coloca eles nos endereços ,  e que o programa decidir ele é quem vai para tal posição e para a executar as instruções que você já colocou para ele fazer ,  como ali no código que postei , você pode ver esse blocos de instruções , eles estão até separados com uma linha vaga entre eles , e eu não sei qual a resposta , mas coloquei os códigos para todas elas ,  e certeza que ele vai decidir por fazer um desses códigos , ou o L1 ou o L2 e até se não for para nenhum desses dois ele não pulará e continuará seguindo a execução na ordem crescente dos endereços e aí fará aquelas instruções que deixei logo depois do JN . 

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun    ora você cria um programa de computador , para que ele resolva as situações , facilmente para as outras pessoas , sem que elas precisem saber o valor de um número ,  por exemplo , e já que as pessoas vão pagar para ter essa comodidade ,  no mínimo quem criou o programa deve atender esse requerimento das pessoas ,  e isso dará sim , um trabalhão para que funcione do jeito certo , pois é você ,  programador , que precisa instruir o computador através do programa , dizendo para ele o que deve fazer , em cada situação , pois ele , por si só , não sabe de nada ,  e é preciso que digam a ele cada passo a realizar , e assim você imagina o que pode acontecer , de acordo com o propósito do programa , e cria as instruções para cada possibilidade e coloca elas a disposição do computador , e o programa decide qual das instruções vai realizar , através de decisões feitas por comparações ,  e nesse neander , as instruções são bem ao nível da máquina , por isso mas trabalho , mas já se fosse um programa de mais alto nível , e aqui não quer dizer que alto nível seja melhor , mas apenas que está mais acima do nível da máquina e mais próximo de como entendemos , seria bem mais fácil , por exemplo , essa comparação tão difícil e trabalhosa , se tornaria em apenas uma palavrinha ,  assim :

A = um numero qualquer
if ( A == 0 ) coloca em uma variavel , pois na linguagem c não se pode acessar diretamente os endereços de memória
if ( A <  0 ) coloca em outra variável 
if ( A >= 0 ) coloca em outra variável           

mas a ideia é a mesma , para cada possibilidade uma instrução do que fazer .

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun @Jonathas Braun    o 4 , já postei a resposta lá em cima na outra  página ,  tô vendo que você está meio perdido , mas é assim mesmo você nunca fez nada disso ,  e ninguém nasce sabendo ,  só com tempo você passará a entender  o funcionamento dos programas de computador ,  e uma coisa principal é saber que o compilador ,  neander ou qualquer outro , vai começar a executar os códigos , do começo para o final e da esquerda para a direita , ele vai ler o que está escrito  , se a instrução for válida executará , e passará para a próxima , indo assim até o final , vou colocar aqui os números que você deve inserir na aba programa do neander , 

no endereço         coloque esse número

   0  --------------------->     32

  1   --------------------->   129

   2   --------------------->    96

   3   --------------------->   48

   4   ---------------------> 250

   5  --------------------->    16

   6  --------------------->   251

   7   --------------------->   32

   8   ---------------------> 129

   9   --------------------->   48

  10   ---------------------> 151

  11  --------------------->  144

  12   --------------------->   23

  13  --------------------->    32

  14   --------------------->  128

  15   --------------------->    48

  16   --------------------->    51

  17   --------------------->    60

  18   --------------------->    23

  19  --------------------->    32

  20   --------------------->  128

  21  --------------------->    28 

  22  --------------------->    25 

  23   --------------------->   32

  24   --------------------->   29

  25  --------------------->    16

  26   --------------------->  129

  27  --------------------->    240

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun    bom , testei e funcionou , só ficou faltando definir o endereço do Label L1 , no seu código você colocou 11 , mas esse endereço é o mesmo dessa instrução e isso se tornará um Loop infinito travando a execução do programa ali nesse ponto e ele não fará mais nada , então você precisa colocar ali no lugar daquele número onze um outro de um endereço onde você colocará as instruções para ele fazer , que seria carregar o conteúdo do endereço 129 e colocar no 130 , pois se ele pulou para lá é porque o número em 128 é menor que o do 129 ,  e ali no endereço 14 o certo seria 128 , pois se ele não pulou e ficou é porque o número no endereço 128 é maior , então creio que seu código poderia ser assim como nessa imagem  :

590956242_WNeandermaioremenor.jpg.51731c179c9ad3fd632cc36dcc0f4d29.jpg

 

os valores nos endereços 128 e 129 , você pode colocar qualquer um de zero até 255 , no inicio antes de executar , e o do endereço 250 precisa ser o valor 1 mesmo , e após zerar pc e executar o resultado estará no endereço  130 .

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun      essa 6 é praticamente igual a 4 , você vai prepara aquela máscara para um dos dois números , pode ser o 128 , e fazer a comparação ,com o outro numero e se z estiver setada pula para um Label onde precisa ter as instruções para carregar o valor de um deles , já que são iguais , e coloca-lo no endereço 131 , mas se depois da comparação  não pular para aquele Label , é porque não são iguais , então fazer mais uma comparação ,carregando o valor do endereço 129 , e se a flag N estiver setada é por que este é menor então pula para outro Label , onde vai carregar o valor do endereço 129 e colocar em 131 e depois carregar o valor do endereço 128 e colocarem 132 .
 

Link para o comentário
Compartilhar em outros sites

@Jonathas Braun     essa parte de números negativos ainda não aprendi muito não ,  pelo que já vi  ,  para representar os números negativos no computador usa-se um bit de sinal , no byte  , e assim os números de zero até 127 são considerados positivos , pois o bit 7 desses números é igual a zero , então se o  bit 7 = 0 o número é positivo , e os que vão de 128 até 255 são negativos , pois tem o bit 7 = 1 ,  e para saber se um número qualquer é zero , você adicionar esse tal número com o valor zero , pois   0 + 0 = 0 , e se é igual a zero a flag Z estará setada ,   mas para saber se é negativo ainda não consegui resolver , 

Link para o comentário
Compartilhar em outros sites

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!