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
syscallExercici 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
syscallExercici 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
syscallExercici 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
syscallErrors 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
