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 >>
Website | Veja + conteúdo

Atuo como Professora de Informática e Computação desde 2001, atendendo de forma especial a Terceira Idade e Concurseiros. Desde 2009 venho atuando como Docente no Ensino Superior em diversos cursos de Graduação e Pós Graduação Lato Sensu, tanto presenciais, quanto semipresenciais e à distância. Ministrei várias disciplinas onde ensino os estudantes a desenvolverem plataformas e sistemas computacionais. Orientei vários trabalhos acadêmicos, desenvolvi inúmeros materiais, trabalhei com pesquisa, ensino, extensão e inovação, ministrei palestras em vários eventos. Mais recentemente venho ofertando serviços na área de tecnologia como desenvolvimento de sistemas, treinamentos, consultoria, mentoria, etc. Comecei meu Doutorado na área de Machine Learning (Multi-label Classification) na UFSCar em 02/2019 e devo terminar em 01/2023. Também estudo canto, jogo vôlei, sou geek, nerd, otaku e gamer!

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

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

Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Marcos
Marcos
18/12/2020 09:42

Como vou resolver NOR com somente um valor ? se é necessário ter 2 valores para calcular o OR.

Talvez você goste:

Séries



Outros da Série

Menu