
Explain microcomputer, microprocessor, and microcontroller concepts, showing how a microcomputer uses a CPU with memory and I/O, while a microcontroller integrates CPU, memory, and I/O on one chip.
Explain how a microprocessor is a programmable device that processes binary data, stores input and output in memory, and performs arithmetical and logical operations according to the program in memory.
Trace the evolution of microprocessors from the four-bit 4004 and 4040 to eight-bit 8008, 8080, 8085, then sixteen-bit, thirty-two-bit, and sixty-four-bit architectures, including 8086, 80386, Pentium, and Core two duo.
Explore the 16-bit Intel 8086 microprocessor, 20-bit address space and 16-bit data bus; faster than 8-bit processors. Pipelining with a six-byte queue, interrupts, and operating modes enable multiprogramming.
Explain how pipelining fetches the next instruction before the previous one finishes. Compare four-stage architecture (fetch, decode, operand fetch, execute) with non-pipeline processors to show faster operation.
Explore memory segmentation in the 8086, dividing one megabyte into four 64 KB segments (es, ss, cs, ds) with 20-bit addressing and segment-offset pointers to organize code, data, and stack.
Explore the internal architecture of the 8086 microprocessor, focusing on the bus interface unit and execution unit, their segment registers, six-byte instruction queue, and the fetch-decode-execute cycle.
Discover how 8086 general purpose registers work, including ax, bx, cx, dx and their 8-bit high/low parts; explore si, di, bp, sp, and ip for addressing, indexing, and control flow.
Understand the 16-bit flag register of the 8086, with control flags (trap, interrupt flag, direction flag) and status flags (carry, parity, zero, sign, overflow, auxiliary carry).
Explore how 8086 memory is divided into code, data, stack, and extra segment registers within a one megabyte memory, guided by .model small, .data, and .code.
Explore the structure of an assembly program with .model small, data and code segments, plus optional stack and extra segments; declare data in dot data and code in dot code.
Learn to write an 8086 assembly program that displays a hello message on the console using DOS interrupt 09h, load the address with lea, and print with int 21h.
Learn to write an assembly language program that adds two eight-bit numbers using a small model, data and code segments, and store the result in num3.
Learn to write an assembly language program on 8086 to subtract two eight bit numbers, declare data with db, configure data and code segments, perform sub, terminate with dos interrupt.
Explore assembly language programming on 8086 to subtract two 16-bit numbers, using ax and bx, data and code segments, and store the result in number three.
Write an assembly program that adds two 16-bit numbers using define word data, loads them into ax and bx, adds, and stores the result in number three.
Learn to write an ALP (assembly language program) for 8086 that performs addition and subtraction of two numbers using macro and procedure, with results printed to the console.
Learn to write an 8086 assembly language program that converts a hexadecimal value to a BCD number, including data segment setup, division steps, and DOS output.
Learn to write an 8086 assembly program that prompts for eight-bit numbers, converts keyboard input from ASCII to binary, and displays the result using DOS interrupts 09h, 01h, and 02h.
Learn to write an assembly language program for the 8086 that enters and displays a 16-bit number using DOS interrupts, with data and code segments, and word definitions.
Learn to multiply eight-bit numbers in 8086 assembly using define byte data and code segments, move values into AL and BL, and use mul BL with int 21h to end.
Learn to write an assembly language program that multiplies 16-bit numbers, initializing data and code segments, loading values into ax and bx, performing 16-bit multiplication, and storing result in dx:ax.
Demonstrates a complete assembly language program to divide two eight-bit numbers, storing the quotient in al and the remainder in h, using data and code segments.
learn to divide a 16-bit number by an 8-bit number in assembly, loading into ax and bl, performing div bl, with quotient in al and remainder in ah, then terminate.
Learn to write a 16-bit by 16-bit division in assembly language, storing the quotient in ax and the remainder in dx, with data defined by define word.
Write an assembly language program to perform string operations: accept input, display the string, and compute its length using data and code segments, macros, and DOS interrupts.
Learn how an 8086 assembly language program finds the largest number in a five-element eight-bit array using data and code segments and prints the result.
Explore addressing modes in 8086, defining how source and destination operands are represented and how memory and input/output addressing organize data, including immediate, direct, register, and indexed modes.
This lecture covers memory addressing modes, including immediate addressing, and shows how to write instructions with mnemonic, destination and source operands using mov al, 46h.
Identify direct addressing mode, where the source operand supplies the effective address of a memory location (often shown with square brackets) used in the operation.
8086 indexed addressing mode uses source and destination index registers to form an effective address and transfer memory contents into a register, with 8-bit or 16-bit displacement.
Base addressing mode uses the 16-bit base pointer BP with an offset, such as BP plus two, to access memory and load 36 and 37 into AL and AH.
Explore base index addressing in 8086 by combining bx or bp with si or di to form memory addresses, and relative base index with displacement in mov ax, [bx+si+6].
This course covers the architecture and programming of 8086, 80386, and Pentium processors, focusing on core concepts like memory segmentation, addressing modes, 32-bit processing, and advanced features such as protected mode for the 80386 and MMX technology for the Pentium. It includes extensive assembly language programming, teaching students to develop efficient programs using x86 instruction sets. The Assembly Language Programming section offers an in-depth exploration of the x86 core instruction set. Students will become proficient in writing and debugging assembly programs for various applications, leveraging advanced instruction sets for optimal performance.
Additionally, the course introduces mixed-mode programming, combining high-level languages with assembly for optimized code performance. It also covers the practical use of the emu8086 emulator, providing a hands-on environment to visualize and simulate 8086 microprocessor operations, enhancing comprehension of instruction sets and memory management. Students will gain expertise in 8086 microprocessor architecture, focusing on its operation, memory segmentation, and addressing modes, and develop practical skills in writing and debugging assembly language programs. This comprehensive approach ensures a deep understanding of both theoretical and practical aspects of microprocessor programming, preparing students for real-world applications. The course is suitable for beginners and those looking to refresh their knowledge, requiring no prior programming experience.