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

  1. Operacions Lògiques: Són operacions que es realitzen a nivell de bit entre dos operands.
  2. Instruccions AND, OR, XOR, NOT: Són les instruccions bàsiques per a les operacions lògiques en Assembly.
  3. Ú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:

AND dest, src

Exemple:

MOV AL, 0b1100  ; AL = 1100
AND AL, 0b1010  ; AL = 1000 (1100 AND 1010 = 1000)

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:

OR dest, src

Exemple:

MOV AL, 0b1100  ; AL = 1100
OR AL, 0b1010   ; AL = 1110 (1100 OR 1010 = 1110)

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:

XOR dest, src

Exemple:

MOV AL, 0b1100  ; AL = 1100
XOR AL, 0b1010  ; AL = 0110 (1100 XOR 1010 = 0110)

NOT

L'operació NOT inverteix cada bit de l'operand, convertint els 1 en 0 i els 0 en 1.

Sintaxi:

NOT dest

Exemple:

MOV AL, 0b1100  ; AL = 1100
NOT AL          ; AL = 0011 (NOT 1100 = 0011)

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

  1. 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.
  2. Ú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.
  3. 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.

© Copyright 2024. Tots els drets reservats