


Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
A lógica booleana em assembly, explicando as operações and, or, not e xor. Cada operação é acompanhada por sua tabela de verdade e exemplos de uso. Além disso, são discutidas as utilidades de cada operação, como resetar determinados bits sem afetar os demais.
Tipologia: Notas de estudo
1 / 4
Esta página não é visível na pré-visualização
Não perca as partes importantes!
³ RBT þ Curso de Assembly þ Aula N§ 05 ³ ÔÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ;
Por: Bruno Diego
ÕÍÍÍÍÍÍÍÍÍÍÍ͸ ³ ASSEMBLY V ³ ÔÍÍÍÍÍÍÍÍÍÍÍ;
0 0 8 7
0 0 9 4
0 0 8 7
0 0 Depois de algumas instru es de movimenta (^) 8 4o de dados vou 0 0 8 3
0 0 8 7
0 0 mostrar a mec nica da l¢gica booleana, bem como algumas instru (^) 9 4es.
0 0 8 7
0 0 A l¢gica booleana baseia-se nas seguintes opera (^) 9 4es: AND, OR, 0 0 8 7
0 0 8 4
0 0 8 7
0 0 NOT. Para simplificar a minha digita o vou usar a nota 0 0 (^) 8 4o
8 7
0 0 8 4
0 0 simplificada: & (AND), | (OR) e ~ (NOT). Essa nota o (^) 8 2 usada na linguagem C e em muitos manuais relacionados a hardware da IBM.
0 0 8 7
0 0 þ Opera (^) 8 4o AND:
0 0 8 7
0 0 A opera (^) 8 4o AND funciona de acordo com a seguinte tabela-verdade:
ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³ S = A & B ³ ÆÍÍÍÑÍÍÍÑÍÍÍμ ³ A ³ B ³ S ³ ÃÄÄÄÅÄÄÄÅÄÄÄ´ ³ 0 ³ 0 ³ 0 ³ ³ 0 ³ 1 ³ 0 ³ ³ 1 ³ 0 ³ 0 ³ ³ 1 ³ 1 ³ 1 ³ ÀÄÄÄÁÄÄÄÁÄÄÄÙ
Note que o resultado (S) ser 1 apenas se A "E" B forem 1. 0 0 8 7
0 0 Aplicando esta l¢gica bit a bit em opera (^) 9 4es envolvendo dois bytes obteremos um terceiro byte que ser o primeiro AND o segundo:
³ A = 01010111b B = 00001111b ³ ³ ³ ³ S = A & B -> 01010111b ³ ³ & 00001111b ³ ³ ÄÄÄÄÄÄÄÄÄÄÄÄÄ ³ ³ 00000111b ³
0 0 Uma das utilidades de AND (^) 8 2 resetar um determinado bit sem
afetar os demais. Suponha que queira resetar o bit 3 de um determinado byte. Para tanto basta efetuar um AND do byte a ser trabalhado com o valor 11110111b (Apenas o bit 3 resetado).
0 0 8 7
0 0 Eis a sintaxe da instru (^) 8 4o AND:
³ AND AL,11110111b ³ ³ AND BX,8000h ³ ³ AND DL,CL ³ ³ AND [DI],AH ³
Lembrando que o operando destino (o mais a esquerda) deve sempre ser um registrador ou uma referencia a mem¢ria. o operando a 0 0 direita (fonte) pode ser um registrador, uma refer 0 0 8 8 ncia a mem¢ria ou
8 7
0 0 8 4
0 0 um valor imediato, com a restri o de que n8 4 o podemos usar 0 0 refer8 8 ncias a mem¢ria nos dois operandos.
0 0 8 7
0 0 A instru (^) 8 4o AND afeta os FLAGS Z, S e P e zera os flags Cy (Carry) e O (veja os flags em alguma mensagem anterior a esta).
0 0 8 7
0 0 þ Opera (^) 8 4o OR:
ÆÍÍÍÑÍÍÍÑÍÍÍμ ³ A ³ B ³ S ³ ÃÄÄÄÅÄÄÄÅÄÄÄ´ ³ 0 ³ 0 ³ 0 ³ ³ 0 ³ 1 ³ 1 ³ ³ 1 ³ 0 ³ 1 ³ ³ 1 ³ 1 ³ 1 ³ ÀÄÄÄÁÄÄÄÁÄÄÄÙ
Note que S ser 1 se A "OU" B forem 1. Da mesma forma que AND, aplicamos essa l¢gica bit a bit 0 0 8 2
0 0 8 7
0 0 envolvendo um byte ou word atrav s de uma instru (^) 8 4o em assembly. Vejamos um exemplo da utilidade de OR:
³ A = 01010111b B = 10000000b ³ ³ ³ ³ S = A | B -> 01010111b ³ ³ | 10000000b ³
Que na tabela-verdade fica:
ÚÄÄÄÄÄÄÄÄÄÄÄ¿ ³ S = A ^ B ³ ÆÍÍÍÑÍÍÍÑÍÍÍμ ³ A ³ B ³ S ³ ÃÄÄÄÅÄÄÄÅÄÄÄ´ ³ 0 ³ 0 ³ 0 ³ ³ 0 ³ 1 ³ 1 ³ ³ 1 ³ 0 ³ 1 ³ ³ 1 ³ 1 ³ 0 ³ ÀÄÄÄÁÄÄÄÁÄÄÄÙ
Uso o simbolo ^ para o XOR aqui. XOR funciona da mesma forma que OR, s¢ que o resultado ser 1 se APENAS A ou APENAS B for 1, melhor dizendo: Se ambos forem diferentes.
0 0 XOR (^) 8 2muito £til quando se quer inverter um determinado bit de um byte ou word sem afetar os outros:
³ A = 01010111b B = 00001111b ³ ³ ³ ³ S = A ^ B -> 01010111b ³ ³ ^ 00001111b ³ ³ ÄÄÄÄÄÄÄÄÄÄÄÄÄ ³ ³ 01011000b ³
No exemplo acima invertemos apenas os quatro bits menos significativos de A.
0 0 A sintaxe e os flags afetados s8 4 o os mesmos que AND e OR. ?