Operação Lógica AND no MIPS

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

ÍNDICE DE CONTEÚDO

Oi pessoal! Tudo bem? Espero que sim. No último artigo publicado desta série eu falei sobre as operações lógicas de deslocamento à direita e à esquerda. Hoje, vou falar sobre a operação lógica AND no MIPS.

 

AND

 

A operação lógica AND é uma operação bit a bit com dois operandos que resulta em 1 somente se os dois bits dos operandos também forem 1. É o mesmo comportamento esperado de uma porta lógica AND que possui a seguinte tabela booleana:

 

PQR
000
010
100
111

 

Pela tabela, nota-se um comportamento muito parecido com a multiplicação, veja: 0 * 0 = 0; 0 * 1 = 0; 1 * 0 = 0 e, 1 * 1 = 1. A instrução AND tem a seguinte sintaxe:

 

AND 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. Considere o seguinte exemplo: o registrador $t3 possui o valor decimal 3328, que em binário é

 

0000 0000 0000 0000 0000 1101 0000 0000

 

e o registrador $t4 possui o valor decimal 15.360 que em binário é

 

0000 0000 0000 0000 0011 1100 0000 0000

 

Assim temos a instrução

 

AND $t0, $t3, $t4      #$t0 = $t3 & $t4

 

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

 

$t3

0

0

1

1

0

1

0

0

0

0

0

0

0

0

$t4

1

1

1

1

0

0

0

0

0

0

0

0

0

0

$t0

0

0

1

1

0

0

0

0

0

0

0

0

0

0

 

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. O bit resultante de cada posição resultará em 1 somente se os bits dos operandos também forem 1, conforme você pode comprovar nas posições 11 e 12, caso contrário, o resultado será 0. O número decimal resultante desta operação é 3.072.

 

Vejamos então como fica a Linguagem de Montagem:

 

AND $t0, $t3, $t4

 

A Linguagem de Máquina:

AND $8, $11, $12

 

Representação da Linguagem de Máquina:

opcode

rs

rt

rd

shamt

funct

0

11

12

8

0

37

 

Código de máquina:

00000001011011000100000000100101

 

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

 

Conclusão

 

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

 

Exercícios

 

Aplique a operação lógica MIPS AND entre os seguintes pares de números decimais:

  1. 324 AND 100
  2. 2018 AND 1970
  3. 33 AND 66

Outros artigos da série

<< Operações Lógicas no MIPSOperação Lógica OR 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.

3
Deixe um comentário

avatar
 
2 Comment threads
1 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Leticia AraujoElaine Cecília GattoHopkins Young Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Leticia Araujo
Visitante
Leticia Araujo

Olá! Você pode exemplificar em código. Pois, estou tentando fazer pelo mesmo jeito da soma, tanto no .data como no . text e não está funcionando. Obrigada pela atenção!

Hopkins Young
Visitante
Hopkins Young

Oi, gostaria de agradecer pela série sobre o MIPS, tem me ajudado nos estudos.
Entretanto, gostaria que me desse uma luz sobre essa operação, por favor. Entendi como é o seu funcionamento, porém não consegui ver uma aplicação/uso da operação AND. Gostaria de algum exemplo para colaborar com a memorização. Da mesma forma, gostaria de ver uma aplicação de OR.

Muito obrigado!

Elaine Cecília Gatto
Visitante
Elaine Cecília Gatto

Oi!!! Enquanto UNIDADE LÓGICA ARITMÉTICA, os microprocessadores de uso geral devem fornecer todas as operações matemáticas básicas. Talvez agora você não veja utilidade alguma, mas as linguagens de programação de alto e médio nível tem essa opção de operadores matemáticos aritméticos, relacionais e lógicas!