


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
Encontra documentos específicos para os exames da tua universidade
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
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. ?