0% found this document useful (0 votes)
51 views

Assembly Language Lab # 6 Boolean Instruction and Conditional Structured

The document discusses Boolean instructions and conditional structures in assembly language. It describes NOT, AND, OR, XOR, TEST, CMP, and BT instructions and how they manipulate bits and flags. It also discusses conditional jump instructions like JNZ, JZ, JC that check flag statuses and jump to labels if conditions are met. Applications provided include converting between upper/lower case letters and checking if a number is even.

Uploaded by

yer eves
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views

Assembly Language Lab # 6 Boolean Instruction and Conditional Structured

The document discusses Boolean instructions and conditional structures in assembly language. It describes NOT, AND, OR, XOR, TEST, CMP, and BT instructions and how they manipulate bits and flags. It also discusses conditional jump instructions like JNZ, JZ, JC that check flag statuses and jump to labels if conditions are met. Applications provided include converting between upper/lower case letters and checking if a number is even.

Uploaded by

yer eves
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

Faculty of Engineering

Computer Engineering Department


Islamic University of Gaza

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

Flags: No flags are affected by the NOT instruction.

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

The following operand combinations are permitted:

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:

mov al, 00111011b


and al, 00001111b

 Applications:
1.Task: Convert the character in AL to upper case.
Solution: Use the AND instruction to clear bit 5.

Boolean Instruction and conditional structured | 2/20/2013


mov al, 'a' ; al = 0110 0001b
and al, 11011111b ;al = 0100 0001b

2.Task: Jump to a label if an integer is even.


Solution: AND the lowest bit with a 1. If the result is Zero, the number was even.

mov ax,wordVal
and ax,1 ; low bit set?
jz EvenValue ; jump if Zero flag
set

3.Task: Convert an ASCII digit to binary?


Solution: Use the AND instruction to clear bits 4 to 7

mov al,36h ;al = 0011 0110b


and al,0Fh ;al = 0000 0110b = 6
Assembly Language Lab # 6

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:

1.Task: Convert the character in AL to lower case.


Solution: Use the OR instruction to set bit 5.

mov al, 'A' ;al = 0100 0001b


or al, 00100000b ;al = 0110 0001b

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

mov al,6 ;al = 0000 0110b


or al,00110000b ;al = 0011 0110b

3.Task: Jump to a label if the value in AL is not zero.


Solution: OR the byte with itself, then use the JNZ (jump if not zero) instruction.

or al,al
jnz IsNotZero ; jump if not zero

4. XOR Instruction:

XOR destination, source


The XOR instruction uses the same operand combinations and sizes as the AND and OR
Assembly Language Lab # 6

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

mov al, 'A' ;al = 0100 0001b

Boolean Instruction and conditional structured | 2/20/2013


xor al, 00100000b ;al = 0110 0001b = 'a'
xor al, 00100000b ;al = 0100 0001b = 'A'

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.

• Example: jump to a label if either bit 0 or bit 1 in AL is set.

test al,00000011b
jnz ValueFound

• Example: jump to a label if neither bit 0 nor bit 1 in AL is set.

test al,00000011b
jz ValueNotFound

The six status flags are affected


 Carry Flag: Cleared by AND, OR, XOR and Test
Assembly Language Lab # 6

 Overflow Flag: Cleared by AND, OR, XOR and Test


 Sign Flag: Copy of the sign bit in result
 Zero Flag: Set when result is zero
 Parity Flag: Set when parity in least-significant byte is even
 Auxiliary Flag: Undefined by AND, OR, XOR and Test

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.

7. BT (Bit Test) Instruction:


Copies bit n from an operand into the Carry flag
Syntax
BT bitBase, n
Boolean Instruction and conditional structured

Example (jump to label L1 if bit 9 is set in the AX register)


bt AX,9 ; CF = bit 9
jc L1 ; jump if Carry set

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

Boolean Instruction and conditional structured | 2/20/2013


2. Jump Based on Equality and value of CX:

3.Jump Based on unsigned comparison:

Assembly Language Lab # 6

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

assembly language. For example:


Assembly Language Lab # 6

7
- Implement the following pseudocode in assembly language. All values are 32- bit signed
integers:

Boolean Instruction and conditional structured | 2/20/2013


Compound expression with AND:

Assembly Language Lab # 6

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.

Assembly Language Lab # 6

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

You might also like