Operação Lógica NOT no MIPS

instrução MIPS LW e SW IF Simples no MIPS

Oi pessoal! Tudo bem? Espero que sim. No último artigo publicado desta série eu falei sobre a operação lógica bit a bit OR (OU). Hoje, vou falar sobre a operação lógica NOT (NÃO).

 

NOT

 

A operação lógica NOT é uma operação bit a bit com um operando, diferente das operações AND e OR que precisam de dois operandos. O efeito desta operação é o de INVERTER os valores binários existentes em cada posição, significando que 0 se torna 1 e 1 se torna 0. É o mesmo comportamento esperado de uma porta lógica NOT que possui a seguinte tabela booleana:

 

PR
01
10

 

Entretanto, não é exatamente esta a operação que o MIPS executa. Para seguir o padrão de dois operandos, esta instrução de INVERSÃO foi projetada para atuar também em cima de dois operandos, por isso, usa-se na verdade a instrução NOR (NOT OR), e não NOT, propriamente dito. A instrução funciona da seguinte forma:

 

A NOR 0

NOT ( A OR 0 )

NOT (A)

 

Substituindo A pelo valor binário zero (0):

 

0 NOR 0

NOT ( 0 OR 0 )

NOT (0)

1

 

Substituindo A pelo valor binário um (1):

 

1 NOR 0

NOT ( 1 OR 0 )

NOT (1)

0

 

Perceberam que o comportamento é igual ao da instrução NOT original? Quando um operando for zero (0) ele se torna um (1), e vice-versa. A sintaxe desta instrução no MIPS é:        

 

NOR registrador_destino, registrador_fonte, registrador_fonte

 

O registrador destino armazena o resultado da operação que é operada em cima dos dois operandos que estão armazenados, cada um em um registrador fonte diferente. Vamos efetuar a operação NOR no número decimal 15.360 que está armazenado no registrador $t3 e o registrador $t5 armazenará apenas zeros.

 

NOR $t0, $t3, $t5       #$t0 = ~ ( $t3 | $t5 )

 

O que acontece nesta operação pode ser representado como a tabela abaixo:

 

$t3

0

0

1

1

0

0

0

0

0

0

0

0

0

0

$t5

0

0

0

0

0

0

0

0

0

0

0

0

0

0

$t3 OR 0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

NOT

1

1

0

0

1

1

1

1

1

1

1

1

1

1

 

 

Vamos efetuar a operação NOR no número decimal 3.328 que está armazenado no registrador $t4 e o registrador $t5 armazenará apenas zeros.

 

NOR $t1, $t4, $t5       #$t0 = ~ ( $t4 | $t5 )

 

O que acontece nesta operação pode ser representado como a tabela abaixo:

 

$t4

0

0

1

1

0

1

0

0

0

0

0

0

0

0

$t5

0

0

0

0

0

0

0

0

0

0

0

0

0

0

$t4 OR 0

0

0

1

1

0

1

0

0

0

0

0

0

0

0

NOT

1

1

0

0

1

0

1

1

1

1

1

1

1

1

 

Cada bit que compõe o número binário será verificado individualmente, começando pelo bit mais à direita e terminando no bit mais à esquerda, como acontece quando você resolve uma conta aritmética no caderno. Vejamos então como fica a Linguagem de Montagem:

 

NOR $t0, $t3, $t5

NOR $t1, $t4, $t5

 

A Linguagem de Máquina:

 

NOR $8, $11, $13

NOR $9, $12, $13

 

Representação da Linguagem de Máquina:

 

opcode

rs

rt

rd

shamt

funct

0

11

13

8

0

39

0

12

13

9

0

39

 

 

Código de máquina:

 

000000 001011 01101 01000 00000  100111‬

000000 01100 01101 01010 000000 100111‬

 

A operação NOR se enquadra no grupo das operações aritméticas, por isso o opcode 0 e o funct 39, isso porque temos a Unidade Lógica Aritmética, que é a responsável por processar esses tipos de operações.

 

Considerações finais

 

Pessoal, se houver qualquer tipo de dúvida, por favor, deixem aqui embaixo nos comentários, responderei o mais breve possível.

 

Exercícios

 

Aplique a operação lógica MIPS NOR para os seguintes números decimais:

  1. a) 324
  2. b) 1970
  3. c) 66

Outros artigos da série

<< Operação Lógica OR no MIPSEndereços de Memória no MIPS >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

Deixe um comentário

avatar
 
  Notificações  
Notificar