Assembly Language Lab # 6 Boolean Instruction and Conditional Structured
Assembly Language Lab # 6 Boolean Instruction and Conditional Structured
Eng. Alaa.I.Haniya
Assembly Language Fundamentals
Objective:
To know more about Assembly Language Boolean Instructions and Conditional Structured.
Boolean Instructions:
1. NOT Instruction:
The NOT instruction toggles (inverts) all bits in an operand. The result is called the one’s
complement.
• Syntax:
NOT reg
NOT mem
Boolean Instruction and conditional structured
• Example:
mov al, 00111011b
not al
2. AND Instruction:
The AND instruction performs a Boolean (bitwise) AND operation between each pair of
matching bits in two operands and places the result in the destination operand.
• Syntax:
AND destination, source
Assembly Language Lab # 6
AND reg,reg
AND reg,mem
AND reg,imm
AND mem,reg
AND mem,imm
1
The operands can be 8, 16, or 32 bits, and they must be the same size.
• Example:
Applications:
1.Task: Convert the character in AL to upper case.
Solution: Use the AND instruction to clear bit 5.
mov ax,wordVal
and ax,1 ; low bit set?
jz EvenValue ; jump if Zero flag
set
3. OR Instruction:
The OR instruction performs a Boolean OR operation between each pair of matching bits in two
operands and places the result in the destination operand.
• Syntax:
OR destination, source
The operand combinations are same as AND.
The operands can be 8, 16, or 32 bits, and they must be the same size.
2
• Example:
mov dl, 00111011b
or dl, 11110000b
Applications:
2.Task: Convert a binary decimal byte into its equivalent ASCII decimal digit.
Solution: Use the OR instruction to set bits 4 and 5.
Boolean Instruction and conditional structured
or al,al
jnz IsNotZero ; jump if not zero
4. XOR Instruction:
instructions.
• Example:
mov dl, 00111011b
xor dl, 11110000b
3
The XOR instruction performs a Boolean exclusive-OR operation between each pair of matching bits in
two operands and stores the result in the destination operand.
• Example:
mov dl, 00111011b
xor dl, 11110000b
Application:
1.Task: Reverse the case (Convert upper case to lower case and convert lower case to upper case)
Solution: Use the XOR instruction with 00100000b
5. Test Instruction:
Performs a nondestructive AND operation between each pair of matching bits in two operands.
No operands are modified, but the flags are affected.
test al,00000011b
jnz ValueFound
test al,00000011b
jz ValueNotFound
4
6. CMP Instruction:
Compares the destination operand to the source operand.
CMP (Compare) instruction performs a subtraction.
Syntax:
CMP destination, source
Computes :
destination – source
Destination operand is NOT modified.
To check for equality, it is enough to check ZF flag
Flags: All six flags: OF, CF, SF, ZF, AF, and PF are affected.
8.Conditional structures:
Jcond Instruction:
A conditional jump instruction branches to a label when specific register or flag conditions are
met.
• Examples:
JC jump to a label if the Carry flag is set.
JE, JZ jump to a label if the Zero flag is set.
JS jumps to a label if the Sign flag is set.
JNE, JNZ jump to a label if the Zero flag is clear.
JECXZ jumps to a label if ECX equals 0.
Assembly Language Lab # 6
5
The conditional jump instructions are divided into four groups:
1. Jump Based on flags values
6
4.Jump Based on signed comparison:
Notes:
Assembly language programmers can easily translate logical statements written in C++/Java into
Boolean Instruction and conditional structured
7
- Implement the following pseudocode in assembly language. All values are 32- bit signed
integers:
8
Lab work:
Excercise1: Boolean Calculator
Create a program that functions as a simple Boolean calculator for 32-bit integers.
The program Do the following functions:
Solution:
Boolean Instruction and conditional structured
Assembly Language Lab # 6
9
Boolean Instruction and conditional structured | 2/20/2013
Note:
The number you entered will be stored in al using this service:
Service 01h: DOS get character function
mov ah,01h ; returns ASCII code of character to AL
int 21h
Excercise2:
Write an assembly language that compares the values x and y in memory and prints a message if
the value in x is greater than y, less than y, or equal to y.
10
Boolean Instruction and conditional structured
Excercise3:
Write an assembly language program that allow user to input one digit number and determine if it
is even or odd.
Assembly Language Lab # 6
11
Assembly Language Lab # 6 Boolean Instruction and conditional structured | 2/20/2013
12
Homework:
1. Write an assembly code that output a letter grade for 10 numbered grades according to the
following table:
The grades are 74, 109, 91, 86, 40, 76, 72, -6, 65, 94.
2. Write an assembly code to read a character from console and echo it.
Boolean Instruction and conditional structured
3. Write an assembly language program that allow the user to input a character, if it is small
letter; convert it to capital and print it, otherwise print it as the same as it was entered.
Assembly Language Lab # 6
13