En aquest tema, explorarem les instruccions lògiques en el llenguatge Assembly. Aquestes instruccions són fonamentals per a la manipulació de bits i la presa de decisions en els programes. Aprendrem sobre les operacions lògiques bàsiques, com AND, OR, XOR i NOT, i veurem com s'utilitzen en el codi Assembly.
Conceptes Clau
- Operacions Lògiques: Són operacions que es realitzen a nivell de bit entre dos operands.
- Instruccions AND, OR, XOR, NOT: Són les instruccions bàsiques per a les operacions lògiques en Assembly.
- Ús de les Instruccions Lògiques: Com s'utilitzen aquestes instruccions per a la manipulació de bits i la presa de decisions.
Instruccions Lògiques Bàsiques
AND
L'operació AND compara cada bit dels dos operands i retorna 1 només si ambdós bits són 1. En cas contrari, retorna 0.
Sintaxi:
Exemple:
OR
L'operació OR compara cada bit dels dos operands i retorna 1 si almenys un dels bits és 1. Retorna 0 només si ambdós bits són 0.
Sintaxi:
Exemple:
XOR
L'operació XOR compara cada bit dels dos operands i retorna 1 si els bits són diferents. Retorna 0 si els bits són iguals.
Sintaxi:
Exemple:
NOT
L'operació NOT inverteix cada bit de l'operand, convertint els 1 en 0 i els 0 en 1.
Sintaxi:
Exemple:
Exercicis Pràctics
Exercici 1: Utilitzant AND
Escriu un programa en Assembly que utilitzi l'operació AND per enmascarar els bits menys significatius d'un registre.
Codi:
section .data value db 0b11110000 section .text global _start _start: MOV AL, [value] ; Carrega el valor a AL AND AL, 0b00001111 ; Enmascara els bits menys significatius ; AL ara conté 0b00000000 ; Finalitza el programa MOV eax, 60 ; syscall: exit XOR edi, edi ; status: 0 syscall
Exercici 2: Utilitzant OR
Escriu un programa en Assembly que utilitzi l'operació OR per establir els bits més significatius d'un registre.
Codi:
section .data value db 0b00001111 section .text global _start _start: MOV AL, [value] ; Carrega el valor a AL OR AL, 0b11110000 ; Estableix els bits més significatius ; AL ara conté 0b11111111 ; Finalitza el programa MOV eax, 60 ; syscall: exit XOR edi, edi ; status: 0 syscall
Exercici 3: Utilitzant XOR
Escriu un programa en Assembly que utilitzi l'operació XOR per invertir els bits d'un registre.
Codi:
section .data value db 0b10101010 section .text global _start _start: MOV AL, [value] ; Carrega el valor a AL XOR AL, 0b11111111 ; Inverteix els bits ; AL ara conté 0b01010101 ; Finalitza el programa MOV eax, 60 ; syscall: exit XOR edi, edi ; status: 0 syscall
Exercici 4: Utilitzant NOT
Escriu un programa en Assembly que utilitzi l'operació NOT per invertir els bits d'un registre.
Codi:
section .data value db 0b10101010 section .text global _start _start: MOV AL, [value] ; Carrega el valor a AL NOT AL ; Inverteix els bits ; AL ara conté 0b01010101 ; Finalitza el programa MOV eax, 60 ; syscall: exit XOR edi, edi ; status: 0 syscall
Errors Comuns i Consells
- No confondre AND i OR: Recorda que AND només retorna 1 si ambdós bits són 1, mentre que OR retorna 1 si almenys un dels bits és 1.
- Ús de XOR per a la inversió de bits: XOR amb 0xFF (11111111 en binari) és una manera comuna d'invertir tots els bits d'un registre.
- Recorda l'ordre dels operands: En Assembly, l'ordre dels operands és important. Assegura't de no confondre l'operand de destí amb l'operand de font.
Resum
En aquesta secció, hem après sobre les instruccions lògiques bàsiques en Assembly: AND, OR, XOR i NOT. Hem vist com aquestes instruccions es poden utilitzar per a la manipulació de bits i la presa de decisions en els programes. També hem practicat amb alguns exercicis per reforçar aquests conceptes. En la següent secció, explorarem el flux de control en Assembly, incloent declaracions condicionals i bucles.
Curs de Programació en Assembly
Mòdul 1: Introducció al Llenguatge Assembly
- Què és el Llenguatge Assembly?
- Història i Evolució de l'Assembly
- Conceptes Bàsics i Terminologia
- Configuració de l'Entorn de Desenvolupament
Mòdul 2: Fonaments del Llenguatge Assembly
- Comprensió de la CPU i la Memòria
- Registres i les Seves Funcions
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa en Assembly
Mòdul 3: Representació de Dades i Instruccions
- Sistemes Binari i Hexadecimal
- Tipus de Dades i Mides
- Instruccions Aritmètiques
- Instruccions Lògiques
Mòdul 4: Flux de Control
Mòdul 5: Conceptes Avançats d'Assembly
- Interrupcions i Crides de Sistema
- Macros i Assembly Condicional
- Assembly Inline en Llenguatges d'Alt Nivell
- Optimització del Codi Assembly
Mòdul 6: Assembly per a Diferents Arquitectures
Mòdul 7: Aplicacions Pràctiques i Projectes
- Escrivint un Bootloader Simple
- Creant un Nucli Bàsic de Sistema Operatiu
- Interfície amb el Maquinari
- Depuració i Perfilat del Codi Assembly