Microprocessor and Assembly Language
Programming – Group Lab Project
Course: CoSc 3024
College: Bridge International College
Week: 6
Duration: 60 minutes
Total Marks: 20
Project Overview
Each group must develop, test, and present an assembly language program using
EMU8086.
The project must incorporate multiple concepts covered in Weeks 1 to 4, including:
● Register operations
● Memory access
● Addressing modes
● Stack and flag manipulation
● Loop and conditional control instructions
Group Instructions
● There are 8 groups, each consisting of 5 members.
● One team leader must demonstrate and present the code.
● Other members will answer questions about the logic and flow.
● The project must be completed within the lab session and demonstrated live.
Evaluation Criteria (Out of 20 Marks)
Criteria Marks
Program compiles and runs as expected 8
Correct use of at least 4 6
instructions/concepts
Code clarity and inline comments 2
Presentation and explanation 4
Total 20
Group Project Tasks (One per Group)
Group 1 – Multi-Stage Arithmetic and Comparison
● Define two variables in memory: A = 50, B = 20
● Load both into registers
● Subtract B from A, multiply the result by 2
● If the result is greater than 50, print "Result is High", otherwise print "Result is Low"
● Use at least one conditional jump
Group 2 – Memory Interaction and Stack Usage
● Store two values in memory: X = 10h, Y = 30h
● Load them into AX and BX
● Push both onto the stack
● Pop the values into CX and DX
● If DX is greater than CX, print "Stack OK", else print "Stack Error"
Group 3 – Loop-Based Arithmetic Sequence
● Initialize CX = 4
● Create a loop that adds 5 to AX every iteration
● After 4 iterations, AX should hold the sum
● Display the final value of AX
Group 4 – Flag-Based Decision System
● Perform a subtraction operation that sets the Zero Flag
● Use JZ or JNZ to print different messages based on whether the result is zero or not
● Demonstrate use of at least one arithmetic and one logical instruction
Group 5 – Addressing Modes in Action
● Use all four addressing modes: Immediate, Register, Direct, and Register Indirect
● Define a variable in memory
● Access and modify it using each addressing mode
● Show changes in debugger
Group 6 – Conditional Message Printer
● Define two string messages: "Welcome" and "Error"
● Use a register to simulate a condition
● If value in register is even, print "Welcome", otherwise print "Error"
● Use conditional jump and integer test
Group 7 – Register Manipulation and Result Copying
● Load values into AX and BX
● Perform addition, subtraction, and negation on results
● Move final result into CX and DX
● Print the values of all registers
Group 8 – Stack and Arithmetic Combined Task
● Load AX = 12h, BX = 14h
● Push AX and BX
● Pop into CX and DX
● Add CX and DX, compare the result with a memory-stored value (e.g., 30h)
● If equal, print "Match", else "No Match"