This course focuses on programming microprocessors that compatible with Intel and AMD processors with 32 bit and 64 bit of Microsoft Windows. In this course we will use MASM (Microsoft Macro Assembler) which is included in Microsoft Visual Studio using Irvine. In this course you will learn basic principles about assembly language, also you will learn the architecture of Intel processor, this course will make you better in Assembly programming and debugging, hardware manipulation and data representation. For this course you should have programmed in at least one high-level language such as Python, Java, CThis course will cover the following topics:1-Number systems and data representation (Decimal, Binary and Hexadecimal, Binary and Hexadecimal addition and subtraction)2- Assembly Language Fundamentals and defining data (types of registers, defining string, Mnemonics, Operands, Directives, Instructions and labels)3-Data transfer instructions (MOV, MOVZX, MOVSX and XCHG)4-Data related operators and directives (ALIGN, LENGTHOF, OFFSET, PTR, SIZEOF and TYPE)5-Inderict addressing ( Indexed operands and Pointers)6-Addition and subtraction (Flags affected by addition and subtraction, INC and DEC instructions)7-Procedures and stack operations (CALL and RET instructions, Stack parameters, POP and PUSH and LEA instructions)8-Boolean and comparisons instructions (AND, NOT, OR, TEST and XOR instructions)9-Conditional jumps and loop instructions (Conditional structure, Unconditional JMP and LOOP instructions, Jump based on equality JE JNE JCXZ JECXZ, Jump based on signed comparisons, Jump based on unsigned comparisons, Jumps based on specific flag values, LOOPZ LOOPNZ LOOPE and LOOPNE instructions, While loops)10-Shift and rotate instructions (RCL, RCR, ROL, ROR, SHL, SHR, SHLD and SHRD)11-Multiplications and division instructions (MUL, IMUL, DIV and IDIV)