{"id":481,"date":"2026-06-21T19:25:08","date_gmt":"2026-06-21T19:25:08","guid":{"rendered":"https:\/\/paknoteshub.online\/?page_id=481"},"modified":"2026-06-21T19:26:19","modified_gmt":"2026-06-21T19:26:19","slug":"assembly-language","status":"publish","type":"page","link":"https:\/\/paknoteshub.online\/?page_id=481","title":{"rendered":"Assembly Language"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"481\" class=\"elementor elementor-481\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f3e29a2 e-flex e-con-boxed e-con e-parent\" data-id=\"f3e29a2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3f694dc elementor-widget elementor-widget-html\" data-id=\"3f694dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n  <meta charset=\"UTF-8\"\/>\r\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\r\n  <title>Assembly Language \u2013 University Level \u2013 Pak Notes Hub<\/title>\r\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700&family=Fira+Code:wght@400;500&display=swap\" rel=\"stylesheet\"\/>\r\n  <style>\r\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\r\n    :root {\r\n      --green:#1a7a4a; --green-dark:#145f38; --green-light:#e8f5ee;\r\n      --teal:#17a589; --accent:#f0b127; --dark:#1c2833; --mid:#566573;\r\n      --light:#f4f6f7; --code-bg:#f0f4f8; --code-border:#2e86c1;\r\n      --note-bg:#fef9e7; --note-border:#f0b127; --white:#ffffff;\r\n      --radius:10px; --shadow:0 4px 24px rgba(26,122,74,.10);\r\n    }\r\n    html { scroll-behavior:smooth; }\r\n    body { font-family:'Inter',sans-serif; background:#f2f6f3; color:var(--dark); line-height:1.7; font-size:15px; }\r\n\r\n    \/* NAV *\/\r\n    nav { position:sticky; top:0; z-index:100; background:var(--green-dark); padding:0 2rem; display:flex; align-items:center; justify-content:space-between; height:56px; box-shadow:0 2px 12px rgba(0,0,0,.25); }\r\n    .nav-brand { color:#fff; font-weight:700; font-size:1.05rem; }\r\n    .nav-brand span { color:#a9dfbf; }\r\n    .nav-links { display:flex; gap:1.2rem; }\r\n    .nav-links a { color:#d5f5e3; font-size:.85rem; font-weight:500; text-decoration:none; transition:color .2s; }\r\n    .nav-links a:hover { color:#fff; }\r\n\r\n    \/* HERO *\/\r\n    .hero { background:linear-gradient(135deg,var(--green) 0%,#145f38 60%,#0d4527 100%); padding:5rem 2rem 4rem; text-align:center; position:relative; overflow:hidden; }\r\n    .hero::before { content:'\u2699\ufe0f'; position:absolute; right:6%; top:50%; transform:translateY(-50%); font-size:9rem; color:rgba(255,255,255,.06); font-weight:700; pointer-events:none; }\r\n    .hero-tag { display:inline-block; background:rgba(255,255,255,.12); color:#a9dfbf; font-size:.78rem; font-weight:600; letter-spacing:1.5px; text-transform:uppercase; padding:.35rem 1rem; border-radius:100px; margin-bottom:1.2rem; border:1px solid rgba(169,223,163,.3); }\r\n    .hero h1 { color:#fff; font-size:clamp(1.8rem,5vw,3rem); font-weight:700; line-height:1.15; margin-bottom:.8rem; }\r\n    .hero h1 span { color:#a9dfbf; }\r\n    .hero p { color:#d5f5e3; font-size:1.05rem; max-width:580px; margin:0 auto 2rem; }\r\n    .hero-pills { display:flex; flex-wrap:wrap; justify-content:center; gap:.7rem; }\r\n    .pill { background:rgba(255,255,255,.13); color:#e8f5ee; padding:.45rem 1.1rem; border-radius:100px; font-size:.82rem; font-weight:500; border:1px solid rgba(255,255,255,.18); }\r\n\r\n    \/* LAYOUT *\/\r\n    .page-wrap { max-width:940px; margin:0 auto; padding:2.5rem 1.5rem 4rem; display:grid; grid-template-columns:235px 1fr; gap:2.5rem; align-items:start; }\r\n\r\n    \/* SIDEBAR *\/\r\n    .sidebar { position:sticky; top:72px; background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); overflow:hidden; }\r\n    .sidebar-title { background:var(--green); color:#fff; font-size:.75rem; font-weight:700; letter-spacing:1.2px; text-transform:uppercase; padding:.85rem 1.1rem; }\r\n    .toc-list { list-style:none; padding:.5rem 0; max-height:calc(100vh - 130px); overflow-y:auto; }\r\n    .toc-list li a { display:flex; align-items:center; gap:.55rem; padding:.4rem 1.1rem; color:var(--mid); font-size:.81rem; font-weight:500; text-decoration:none; transition:all .18s; border-left:3px solid transparent; }\r\n    .toc-list li a:hover,.toc-list li a.active { color:var(--green); background:var(--green-light); border-left-color:var(--green); }\r\n    .toc-num { display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px; border-radius:4px; background:var(--green-light); color:var(--green); font-size:.7rem; font-weight:700; flex-shrink:0; }\r\n    .toc-list li a.active .toc-num { background:var(--green); color:#fff; }\r\n\r\n    \/* UNIT CARD *\/\r\n    .unit { background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:2.5rem; overflow:hidden; scroll-margin-top:72px; }\r\n    .unit-header { background:linear-gradient(100deg,var(--green) 0%,#1d9560 100%); padding:1.4rem 1.8rem; }\r\n    .unit-num-badge { background:rgba(255,255,255,.18); color:#a9dfbf; font-size:.72rem; font-weight:700; letter-spacing:1px; text-transform:uppercase; padding:.3rem .75rem; border-radius:100px; }\r\n    .unit-header h2 { color:#fff; font-size:1.25rem; font-weight:700; line-height:1.25; margin-top:.35rem; }\r\n    .unit-header p { color:#c8f0d8; font-size:.85rem; margin-top:.2rem; }\r\n    .unit-body { padding:1.8rem; }\r\n\r\n    \/* HEADINGS & TEXT *\/\r\n    .unit-body h3 { font-size:1rem; font-weight:700; color:var(--green); margin:1.6rem 0 .7rem; padding-left:.85rem; border-left:3px solid var(--green); line-height:1.3; }\r\n    .unit-body h3:first-child { margin-top:0; }\r\n    .unit-body p { color:var(--dark); margin-bottom:.7rem; }\r\n    .unit-body ul { list-style:none; padding:0; margin:.5rem 0 1rem; }\r\n    .unit-body ul li { padding:.3rem 0 .3rem 1.5rem; position:relative; color:var(--dark); font-size:.93rem; }\r\n    .unit-body ul li::before { content:'\u27a4'; position:absolute; left:0; color:var(--teal); font-size:.75rem; top:.45rem; }\r\n    .unit-body code, .icode { font-family:'Fira Code',monospace; background:#eef2f5; color:#1a5276; padding:.1rem .4rem; border-radius:4px; font-size:.85em; }\r\n\r\n    \/* CODE BLOCK *\/\r\n    .code-block { background:var(--code-bg); border-left:4px solid var(--code-border); border-radius:6px; padding:1.1rem 1.3rem; margin:.9rem 0 1rem; overflow-x:auto; }\r\n    .code-block pre { font-family:'Fira Code',monospace; font-size:.83rem; color:#1a3a54; line-height:1.75; white-space:pre; }\r\n    .cm { color:#7f8c8d; } .kw { color:#1a5276; font-weight:600; } .st { color:#1e8449; }\r\n\r\n    \/* TABLES *\/\r\n    .data-table { width:100%; border-collapse:collapse; margin:.9rem 0 1.2rem; font-size:.87rem; border-radius:8px; overflow:hidden; box-shadow:0 1px 6px rgba(0,0,0,.06); }\r\n    .data-table thead th { background:var(--green); color:#fff; padding:.7rem 1rem; text-align:left; font-weight:600; font-size:.82rem; }\r\n    .data-table tbody tr:nth-child(even) { background:var(--green-light); }\r\n    .data-table tbody tr:hover { background:#d4efdf; }\r\n    .data-table td { padding:.6rem 1rem; border-bottom:1px solid #dce8e0; vertical-align:top; }\r\n    .data-table td:first-child { font-weight:600; color:var(--green-dark); }\r\n\r\n    \/* BOXES *\/\r\n    .info-box { background:var(--note-bg); border:1px solid var(--note-border); border-radius:7px; padding:.85rem 1.1rem; margin:.9rem 0; font-size:.88rem; line-height:1.6; color:#7d6608; display:flex; align-items:flex-start; gap:.7rem; }\r\n    .practice { background:var(--green-light); border:1.5px dashed var(--green); border-radius:8px; padding:.85rem 1.1rem; margin-top:1.4rem; color:var(--green-dark); font-size:.88rem; font-weight:500; }\r\n\r\n    \/* FEATURE GRID *\/\r\n    .feature-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:.6rem; margin:.9rem 0 1.2rem; }\r\n    .feature-item { background:var(--green-light); border-radius:7px; padding:.6rem .9rem; font-size:.85rem; display:flex; align-items:center; gap:.5rem; color:var(--green-dark); border:1px solid #a2d9b5; font-weight:500; }\r\n\r\n    \/* CONCEPT GRID *\/\r\n    .concept-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:.8rem; margin:.9rem 0 1.2rem; }\r\n    .concept-card { background:var(--green-light); border:1px solid #a2d9b5; border-radius:8px; padding:.85rem 1rem; }\r\n    .concept-card .concept-name { font-weight:700; color:var(--green); font-size:.92rem; margin-bottom:.3rem; }\r\n    .concept-card .concept-rule { font-size:.8rem; color:var(--mid); }\r\n\r\n    \/* TOC CARD *\/\r\n    #toc-section { background:var(--white); border-radius:var(--radius); box-shadow:var(--shadow); margin-bottom:2.5rem; overflow:hidden; }\r\n    .toc-card-header { background:linear-gradient(100deg,var(--green) 0%,#1d9560 100%); padding:1.2rem 1.8rem; }\r\n    .toc-card-header h2 { color:#fff; font-size:1.2rem; font-weight:700; }\r\n    .toc-card-body { padding:1.4rem 1.8rem; }\r\n    .toc-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:.6rem; }\r\n    .toc-item { background:var(--light); border-radius:7px; padding:.65rem 1rem; display:flex; align-items:center; gap:.75rem; text-decoration:none; color:var(--dark); font-size:.86rem; font-weight:500; border:1px solid #d5e5db; transition:all .18s; }\r\n    .toc-item:hover { background:var(--green-light); border-color:var(--green); color:var(--green); transform:translateY(-1px); }\r\n    .toc-badge { background:var(--green); color:#fff; font-size:.7rem; font-weight:700; min-width:22px; height:22px; border-radius:5px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }\r\n\r\n    \/* CONGRATS *\/\r\n    .congrats { background:linear-gradient(135deg,var(--green) 0%,#145f38 100%); border-radius:var(--radius); padding:2.5rem 2rem; text-align:center; color:#fff; margin-bottom:2.5rem; box-shadow:var(--shadow); }\r\n    .congrats h2 { font-size:1.8rem; margin-bottom:.5rem; }\r\n    .congrats p { color:#d5f5e3; font-size:1rem; }\r\n\r\n    \/* PROGRESS + BACK TOP *\/\r\n    .progress-bar { position:fixed; top:0; left:0; height:3px; background:var(--accent); z-index:200; transition:width .1s linear; width:0%; }\r\n    #back-top { position:fixed; bottom:2rem; right:2rem; background:var(--green); color:#fff; width:42px; height:42px; border-radius:50%; border:none; cursor:pointer; font-size:1.1rem; box-shadow:0 4px 14px rgba(26,122,74,.35); display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .25s,transform .25s; pointer-events:none; }\r\n    #back-top.visible { opacity:1; pointer-events:auto; }\r\n    #back-top:hover { transform:translateY(-2px); }\r\n\r\n    @media(max-width:720px){ .page-wrap{grid-template-columns:1fr;} .sidebar{position:static;display:none;} .hero::before{display:none;} nav .nav-links{display:none;} }\r\n  <\/style>\r\n<\/head>\r\n<body>\r\n\r\n<div class=\"progress-bar\" id=\"progress\"><\/div>\r\n\r\n<nav>\r\n  <div class=\"nav-brand\">Pak <span>Notes Hub<\/span><\/div>\r\n  <div class=\"nav-links\">\r\n    <a href=\"#toc-section\">Course Outline<\/a>\r\n    <a href=\"#unit-1\">Start Learning<\/a>\r\n    <a href=\"#unit-4\">Instructions<\/a>\r\n    <a href=\"#unit-8\">Procedures<\/a>\r\n  <\/div>\r\n<\/nav>\r\n\r\n<section class=\"hero\">\r\n  <div class=\"hero-tag\">\u2699\ufe0f University Level \u2014 BS CS \/ BS IT<\/div>\r\n  <h1>Assembly Language<br\/><span>Complete Notes<\/span><\/h1>\r\n  <p>Registers to Procedures \u00b7 Memory \u00b7 Interrupts \u2014 All in Easy English<\/p>\r\n  <div class=\"hero-pills\">\r\n    <span class=\"pill\">\u2699\ufe0f 13 Units<\/span>\r\n    <span class=\"pill\">\ud83c\udf93 University Level<\/span>\r\n    <span class=\"pill\">\ud83d\udcbb Code Examples<\/span>\r\n    <span class=\"pill\">\ud83d\udcdd Practice Tasks<\/span>\r\n    <span class=\"pill\">\ud83d\ude80 Final Project<\/span>\r\n  <\/div>\r\n<\/section>\r\n\r\n<div class=\"page-wrap\">\r\n\r\n  <aside class=\"sidebar\">\r\n    <div class=\"sidebar-title\">\ud83d\udccb Course Contents<\/div>\r\n    <ul class=\"toc-list\" id=\"toc-nav\">\r\n      <li><a href=\"#toc-section\"><span class=\"toc-num\">\ud83d\udccb<\/span> Contents<\/a><\/li>\r\n      <li><a href=\"#unit-1\"><span class=\"toc-num\">1<\/span> Intro to Assembly<\/a><\/li>\r\n      <li><a href=\"#unit-2\"><span class=\"toc-num\">2<\/span> CPU & Registers<\/a><\/li>\r\n      <li><a href=\"#unit-3\"><span class=\"toc-num\">3<\/span> Addressing Modes<\/a><\/li>\r\n      <li><a href=\"#unit-4\"><span class=\"toc-num\">4<\/span> Data Transfer<\/a><\/li>\r\n      <li><a href=\"#unit-5\"><span class=\"toc-num\">5<\/span> Arithmetic Operations<\/a><\/li>\r\n      <li><a href=\"#unit-6\"><span class=\"toc-num\">6<\/span> Logic Operations<\/a><\/li>\r\n      <li><a href=\"#unit-7\"><span class=\"toc-num\">7<\/span> Control Flow<\/a><\/li>\r\n      <li><a href=\"#unit-8\"><span class=\"toc-num\">8<\/span> Stack Operations<\/a><\/li>\r\n      <li><a href=\"#unit-9\"><span class=\"toc-num\">9<\/span> Procedures<\/a><\/li>\r\n      <li><a href=\"#unit-10\"><span class=\"toc-num\">10<\/span> String Operations<\/a><\/li>\r\n      <li><a href=\"#unit-11\"><span class=\"toc-num\">11<\/span> Interrupts<\/a><\/li>\r\n      <li><a href=\"#unit-12\"><span class=\"toc-num\">12<\/span> Macros<\/a><\/li>\r\n      <li><a href=\"#unit-13\"><span class=\"toc-num\">13<\/span> Final Project<\/a><\/li>\r\n    <\/ul>\r\n  <\/aside>\r\n\r\n  <main>\r\n\r\n    <div id=\"toc-section\">\r\n      <div class=\"toc-card-header\"><h2>\ud83d\udccb Table of Contents \u2014 13 Units<\/h2><\/div>\r\n      <div class=\"toc-card-body\">\r\n        <div class=\"toc-grid\">\r\n          <a class=\"toc-item\" href=\"#unit-1\"><span class=\"toc-badge\">1<\/span> Introduction to Assembly Language<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-2\"><span class=\"toc-badge\">2<\/span> CPU Architecture & Registers<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-3\"><span class=\"toc-badge\">3<\/span> Addressing Modes<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-4\"><span class=\"toc-badge\">4<\/span> Data Transfer Instructions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-5\"><span class=\"toc-badge\">5<\/span> Arithmetic Instructions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-6\"><span class=\"toc-badge\">6<\/span> Logical & Bitwise Instructions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-7\"><span class=\"toc-badge\">7<\/span> Control Flow Instructions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-8\"><span class=\"toc-badge\">8<\/span> Stack Operations<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-9\"><span class=\"toc-badge\">9<\/span> Procedures & Functions<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-10\"><span class=\"toc-badge\">10<\/span> String Operations<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-11\"><span class=\"toc-badge\">11<\/span> Interrupts & BIOS<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-12\"><span class=\"toc-badge\">12<\/span> Macros<\/a>\r\n          <a class=\"toc-item\" href=\"#unit-13\"><span class=\"toc-badge\">13<\/span> Final Project<\/a>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 1 -->\r\n    <div class=\"unit\" id=\"unit-1\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 1<\/span>\r\n        <h2>Introduction to Assembly Language<\/h2>\r\n        <p>What is assembly and why is it the closest language to hardware?<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is Assembly Language?<\/h3>\r\n        <p><strong>Assembly language<\/strong> is a low-level programming language that uses mnemonic codes (like MOV, ADD, SUB) instead of binary machine code. It provides direct control over hardware and is specific to a processor architecture.<\/p>\r\n        <div class=\"info-box\">\ud83d\udca1 Assembly language is one step above machine code (binary) and one step below high-level languages like C or Java.<\/div>\r\n\r\n        <h3>Why Learn Assembly?<\/h3>\r\n        <ul>\r\n          <li>Understand how computers work at the hardware level<\/li>\r\n          <li>Write highly optimized code for performance-critical applications<\/li>\r\n          <li>Essential for system programming, device drivers, and embedded systems<\/li>\r\n          <li>Reverse engineering and malware analysis<\/li>\r\n          <li>Foundation for understanding operating systems<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Programming Language Levels<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Level<\/th><th>Example<\/th><th>Readability<\/th><th>Control<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Machine Code<\/td><td>10110000 01100001<\/td><td>Very Hard<\/td><td>Complete<\/td><\/tr>\r\n            <tr><td>Assembly<\/td><td>MOV AL, 61h<\/td><td>Hard<\/td><td>Complete<\/td><\/tr>\r\n            <tr><td>High-Level<\/td><td>int x = 97;<\/td><td>Easy<\/td><td>Abstract<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Assembler vs Compiler<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Feature<\/th><th>Assembler<\/th><th>Compiler<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Input<\/td><td>Assembly code<\/td><td>High-level code<\/td><\/tr>\r\n            <tr><td>Output<\/td><td>Machine code<\/td><td>Machine code<\/td><\/tr>\r\n            <tr><td>Translation<\/td><td>1:1 (one instruction = one machine code)<\/td><td>Many-to-many<\/td><\/tr>\r\n            <tr><td>Example<\/td><td>MASM, NASM<\/td><td>GCC, Javac<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Common Assemblers<\/h3>\r\n        <ul>\r\n          <li><strong>MASM<\/strong> \u2014 Microsoft Macro Assembler (Windows)<\/li>\r\n          <li><strong>NASM<\/strong> \u2014 Netwide Assembler (Cross-platform)<\/li>\r\n          <li><strong>TASM<\/strong> \u2014 Turbo Assembler (DOS\/Windows)<\/li>\r\n          <li><strong>GAS<\/strong> \u2014 GNU Assembler (Linux)<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Install an assembler (NASM or emu8086) and verify it runs on your system.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 2 -->\r\n    <div class=\"unit\" id=\"unit-2\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 2<\/span>\r\n        <h2>CPU Architecture & Registers<\/h2>\r\n        <p>Understanding the processor and its storage.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Register?<\/h3>\r\n        <p>A <strong>register<\/strong> is a small, fast storage location inside the CPU used to hold data temporarily during processing.<\/p>\r\n\r\n        <h3>Types of Registers (8086\/8088)<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Register<\/th><th>Size<\/th><th>Purpose<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>AX<\/td><td>16-bit<\/td><td>Accumulator \u2014 arithmetic operations<\/td><\/tr>\r\n            <tr><td>BX<\/td><td>16-bit<\/td><td>Base \u2014 memory addressing<\/td><\/tr>\r\n            <tr><td>CX<\/td><td>16-bit<\/td><td>Counter \u2014 loop operations<\/td><\/tr>\r\n            <tr><td>DX<\/td><td>16-bit<\/td><td>Data \u2014 I\/O operations<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Segment Registers<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Register<\/th><th>Purpose<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>CS<\/td><td>Code Segment \u2014 holds code instructions<\/td><\/tr>\r\n            <tr><td>DS<\/td><td>Data Segment \u2014 holds data<\/td><\/tr>\r\n            <tr><td>SS<\/td><td>Stack Segment \u2014 holds stack<\/td><\/tr>\r\n            <tr><td>ES<\/td><td>Extra Segment \u2014 additional data<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Special Registers<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Register<\/th><th>Purpose<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>IP<\/td><td>Instruction Pointer \u2014 points to next instruction<\/td><\/tr>\r\n            <tr><td>SP<\/td><td>Stack Pointer \u2014 points to top of stack<\/td><\/tr>\r\n            <tr><td>BP<\/td><td>Base Pointer \u2014 base of stack frame<\/td><\/tr>\r\n            <tr><td>SI<\/td><td>Source Index \u2014 source for string operations<\/td><\/tr>\r\n            <tr><td>DI<\/td><td>Destination Index \u2014 destination for string operations<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>FLAGS Register<\/h3>\r\n        <p>Contains single-bit flags that indicate the status of the CPU and the result of operations.<\/p>\r\n        <ul>\r\n          <li><strong>ZF (Zero Flag)<\/strong> \u2014 Set if result is zero<\/li>\r\n          <li><strong>CF (Carry Flag)<\/strong> \u2014 Set if carry\/borrow occurs<\/li>\r\n          <li><strong>SF (Sign Flag)<\/strong> \u2014 Set if result is negative<\/li>\r\n          <li><strong>OF (Overflow Flag)<\/strong> \u2014 Set if signed overflow occurs<\/li>\r\n          <li><strong>PF (Parity Flag)<\/strong> \u2014 Set if result has even parity<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write down the purpose of each general-purpose register (AX, BX, CX, DX).<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 3 -->\r\n    <div class=\"unit\" id=\"unit-3\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 3<\/span>\r\n        <h2>Addressing Modes<\/h2>\r\n        <p>Different ways to access data in memory.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is an Addressing Mode?<\/h3>\r\n        <p>An <strong>addressing mode<\/strong> specifies how the operand of an instruction is accessed.<\/p>\r\n\r\n        <h3>Types of Addressing Modes<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Mode<\/th><th>Example<\/th><th>Description<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Immediate<\/td><td>MOV AX, 5<\/td><td>Data is part of the instruction<\/td><\/tr>\r\n            <tr><td>Register<\/td><td>MOV AX, BX<\/td><td>Data is in a register<\/td><\/tr>\r\n            <tr><td>Direct<\/td><td>MOV AX, [1234h]<\/td><td>Direct memory address<\/td><\/tr>\r\n            <tr><td>Indirect<\/td><td>MOV AX, [BX]<\/td><td>Address is in a register<\/td><\/tr>\r\n            <tr><td>Indexed<\/td><td>MOV AX, [SI]<\/td><td>Uses index register<\/td><\/tr>\r\n            <tr><td>Based<\/td><td>MOV AX, [BX+2]<\/td><td>Base register + offset<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Examples<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Immediate Addressing<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 10          <span class=\"cm\">; AX = 10<\/span>\r\n\r\n<span class=\"cm\">; Register Addressing<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, BX          <span class=\"cm\">; AX = value in BX<\/span>\r\n\r\n<span class=\"cm\">; Direct Addressing<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, [2000h]    <span class=\"cm\">; AX = value at memory location 2000h<\/span>\r\n\r\n<span class=\"cm\">; Register Indirect<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, [BX]       <span class=\"cm\">; AX = value at address stored in BX<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Identify the addressing mode: MOV AX, 25 \/ MOV AX, BX \/ MOV AX, [SI]<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 4 -->\r\n    <div class=\"unit\" id=\"unit-4\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 4<\/span>\r\n        <h2>Data Transfer Instructions<\/h2>\r\n        <p>Moving data between registers and memory.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>MOV Instruction<\/h3>\r\n        <p>The <strong>MOV<\/strong> instruction copies data from source to destination.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Syntax: MOV destination, source<\/span>\r\n\r\n<span class=\"kw\">MOV<\/span> AX, 10         <span class=\"cm\">; AX = 10<\/span>\r\n<span class=\"kw\">MOV<\/span> BX, AX         <span class=\"cm\">; BX = AX<\/span>\r\n<span class=\"kw\">MOV<\/span> [1000h], AX   <span class=\"cm\">; Memory[1000h] = AX<\/span><\/pre><\/div>\r\n\r\n        <h3>XCHG Instruction<\/h3>\r\n        <p>Exchanges (swaps) values between two operands.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AX, 5\r\n<span class=\"kw\">MOV<\/span> BX, 10\r\n<span class=\"kw\">XCHG<\/span> AX, BX        <span class=\"cm\">; AX = 10, BX = 5<\/span><\/pre><\/div>\r\n\r\n        <h3>LEA, LDS, LES Instructions<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Purpose<\/th><th>Example<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>LEA<\/td><td>Load Effective Address<\/td><td>LEA BX, [SI+2]<\/td><\/tr>\r\n            <tr><td>LDS<\/td><td>Load pointer using DS<\/td><td>LDS SI, [1000h]<\/td><\/tr>\r\n            <tr><td>LES<\/td><td>Load pointer using ES<\/td><td>LES DI, [2000h]<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>PUSH and POP<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; PUSH: Store value on stack<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">PUSH<\/span> AX            <span class=\"cm\">; Stack now contains 10<\/span>\r\n\r\n<span class=\"cm\">; POP: Retrieve value from stack<\/span>\r\n<span class=\"kw\">POP<\/span> BX             <span class=\"cm\">; BX = 10<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write instructions to: load 25 into AX, copy AX to BX, swap AX and CX.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 5 -->\r\n    <div class=\"unit\" id=\"unit-5\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 5<\/span>\r\n        <h2>Arithmetic Instructions<\/h2>\r\n        <p>Performing calculations in assembly.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>ADD and SUB<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; ADD: Addition<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 5\r\n<span class=\"kw\">MOV<\/span> BX, 3\r\n<span class=\"kw\">ADD<\/span> AX, BX         <span class=\"cm\">; AX = 8<\/span>\r\n\r\n<span class=\"cm\">; SUB: Subtraction<\/span>\r\n<span class=\"kw\">SUB<\/span> AX, BX         <span class=\"cm\">; AX = 5<\/span><\/pre><\/div>\r\n\r\n        <h3>INC and DEC<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">INC<\/span> AX             <span class=\"cm\">; AX = 11 (increment by 1)<\/span>\r\n<span class=\"kw\">DEC<\/span> AX             <span class=\"cm\">; AX = 10 (decrement by 1)<\/span><\/pre><\/div>\r\n\r\n        <h3>MUL and DIV<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Operation<\/th><th>Result Location<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>MUL BX<\/td><td>AX = AL * BX (8-bit)<\/td><td>AX<\/td><\/tr>\r\n            <tr><td>MUL BX<\/td><td>DX:AX = AX * BX (16-bit)<\/td><td>DX:AX<\/td><\/tr>\r\n            <tr><td>DIV BX<\/td><td>AX = AX \/ BX<\/td><td>Quotient in AX, Remainder in DX<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Multiplication<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 5\r\n<span class=\"kw\">MOV<\/span> BX, 3\r\n<span class=\"kw\">MUL<\/span> BX             <span class=\"cm\">; AX = 15<\/span>\r\n\r\n<span class=\"cm\">; Division<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">MOV<\/span> BX, 3\r\n<span class=\"kw\">DIV<\/span> BX             <span class=\"cm\">; AX = 3, DX = 1 (remainder)<\/span><\/pre><\/div>\r\n\r\n        <h3>NEG Instruction<\/h3>\r\n        <p>Negates a number (two's complement).<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AX, 5\r\n<span class=\"kw\">NEG<\/span> AX             <span class=\"cm\">; AX = -5<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write a program to add two numbers, multiply the result by 2, and store in BX.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 6 -->\r\n    <div class=\"unit\" id=\"unit-6\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 6<\/span>\r\n        <h2>Logical & Bitwise Instructions<\/h2>\r\n        <p>Bit manipulation and logical operations.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Logical Instructions<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Operation<\/th><th>Example<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>AND<\/td><td>Bitwise AND<\/td><td>AND AL, 0Fh<\/td><\/tr>\r\n            <tr><td>OR<\/td><td>Bitwise OR<\/td><td>OR AL, 0Fh<\/td><\/tr>\r\n            <tr><td>XOR<\/td><td>Bitwise XOR<\/td><td>XOR AX, AX (clears AX)<\/td><\/tr>\r\n            <tr><td>NOT<\/td><td>Bitwise NOT (invert)<\/td><td>NOT AL<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; AND Example<\/span>\r\n<span class=\"kw\">MOV<\/span> AL, 11110000b\r\n<span class=\"kw\">AND<\/span> AL, 00001111b   <span class=\"cm\">; AL = 00000000b<\/span>\r\n\r\n<span class=\"cm\">; OR Example<\/span>\r\n<span class=\"kw\">MOV<\/span> AL, 11110000b\r\n<span class=\"kw\">OR<\/span> AL, 00001111b    <span class=\"cm\">; AL = 11111111b<\/span>\r\n\r\n<span class=\"cm\">; XOR trick to clear register<\/span>\r\n<span class=\"kw\">XOR<\/span> AX, AX          <span class=\"cm\">; AX = 0 (faster than MOV AX, 0)<\/span><\/pre><\/div>\r\n\r\n        <h3>Shift Instructions<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Operation<\/th><th>Example<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>SHL<\/td><td>Shift Left<\/td><td>SHL AL, 1 (multiply by 2)<\/td><\/tr>\r\n            <tr><td>SHR<\/td><td>Shift Right<\/td><td>SHR AL, 1 (divide by 2)<\/td><\/tr>\r\n            <tr><td>SAL<\/td><td>Shift Arithmetic Left<\/td><td>SAL AL, 2<\/td><\/tr>\r\n            <tr><td>SAR<\/td><td>Shift Arithmetic Right<\/td><td>SAR AL, 2<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AL, 00001100b   <span class=\"cm\">; AL = 12<\/span>\r\n<span class=\"kw\">SHL<\/span> AL, 1           <span class=\"cm\">; AL = 00011000b = 24<\/span>\r\n<span class=\"kw\">SHR<\/span> AL, 1           <span class=\"cm\">; AL = 00001100b = 12<\/span><\/pre><\/div>\r\n\r\n        <h3>Rotate Instructions<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Operation<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>ROL<\/td><td>Rotate Left<\/td><\/tr>\r\n            <tr><td>ROR<\/td><td>Rotate Right<\/td><\/tr>\r\n            <tr><td>RCL<\/td><td>Rotate Left through Carry<\/td><\/tr>\r\n            <tr><td>RCR<\/td><td>Rotate Right through Carry<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Use SHL to multiply a number by 4. Use SHR to divide by 2.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 7 -->\r\n    <div class=\"unit\" id=\"unit-7\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 7<\/span>\r\n        <h2>Control Flow Instructions<\/h2>\r\n        <p>Jumps, loops, and decision making.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Unconditional Jump<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">JMP<\/span> label          <span class=\"cm\">; Jump to label<\/span>\r\n\r\nlabel:\r\n    <span class=\"kw\">MOV<\/span> AX, 5<\/pre><\/div>\r\n\r\n        <h3>Conditional Jumps<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Condition<\/th><th>Flag Checked<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>JE \/ JZ<\/td><td>Jump if Equal \/ Zero<\/td><td>ZF = 1<\/td><\/tr>\r\n            <tr><td>JNE \/ JNZ<\/td><td>Jump if Not Equal \/ Not Zero<\/td><td>ZF = 0<\/td><\/tr>\r\n            <tr><td>JG \/ JNLE<\/td><td>Jump if Greater<\/td><td>Signed comparison<\/td><\/tr>\r\n            <tr><td>JL \/ JNGE<\/td><td>Jump if Less<\/td><td>Signed comparison<\/td><\/tr>\r\n            <tr><td>JA \/ JNBE<\/td><td>Jump if Above<\/td><td>Unsigned comparison<\/td><\/tr>\r\n            <tr><td>JB \/ JNAE<\/td><td>Jump if Below<\/td><td>Unsigned comparison<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>CMP Instruction<\/h3>\r\n        <p>Compares two values by subtracting them (without storing result) and sets flags.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">MOV<\/span> BX, 5\r\n<span class=\"kw\">CMP<\/span> AX, BX         <span class=\"cm\">; Compare AX and BX<\/span>\r\n<span class=\"kw\">JG<\/span> greater         <span class=\"cm\">; Jump if AX > BX<\/span>\r\n\r\ngreater:\r\n    <span class=\"kw\">MOV<\/span> CX, 1<\/pre><\/div>\r\n\r\n        <h3>LOOP Instruction<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> CX, 5          <span class=\"cm\">; Counter<\/span>\r\nloop_start:\r\n    <span class=\"cm\">; Your code here<\/span>\r\n    <span class=\"kw\">LOOP<\/span> loop_start   <span class=\"cm\">; Decrement CX, jump if CX != 0<\/span><\/pre><\/div>\r\n\r\n        <h3>Example: Print 1 to 5<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> CX, 5\r\n<span class=\"kw\">MOV<\/span> AX, 1\r\n\r\nprint_loop:\r\n    <span class=\"cm\">; Print AX value (pseudo-code)<\/span>\r\n    <span class=\"kw\">INC<\/span> AX\r\n    <span class=\"kw\">LOOP<\/span> print_loop<\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write a loop that adds numbers from 1 to 10 and stores the result in AX.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 8 -->\r\n    <div class=\"unit\" id=\"unit-8\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 8<\/span>\r\n        <h2>Stack Operations<\/h2>\r\n        <p>Understanding the stack \u2014 LIFO structure.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Stack?<\/h3>\r\n        <p>The <strong>stack<\/strong> is a LIFO (Last In, First Out) data structure used for temporary storage. SP (Stack Pointer) points to the top of the stack.<\/p>\r\n\r\n        <h3>PUSH and POP<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Operation<\/th><th>Effect on SP<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>PUSH AX<\/td><td>Store AX on stack<\/td><td>SP decreases by 2<\/td><\/tr>\r\n            <tr><td>POP AX<\/td><td>Retrieve from stack to AX<\/td><td>SP increases by 2<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">MOV<\/span> BX, 20\r\n\r\n<span class=\"kw\">PUSH<\/span> AX            <span class=\"cm\">; Stack: [10]<\/span>\r\n<span class=\"kw\">PUSH<\/span> BX            <span class=\"cm\">; Stack: [20, 10]<\/span>\r\n\r\n<span class=\"kw\">POP<\/span> CX             <span class=\"cm\">; CX = 20, Stack: [10]<\/span>\r\n<span class=\"kw\">POP<\/span> DX             <span class=\"cm\">; DX = 10, Stack: []<\/span><\/pre><\/div>\r\n\r\n        <h3>Why Use the Stack?<\/h3>\r\n        <ul>\r\n          <li>Save register values before using them<\/li>\r\n          <li>Pass parameters to procedures<\/li>\r\n          <li>Store return addresses for function calls<\/li>\r\n          <li>Allocate local variables<\/li>\r\n        <\/ul>\r\n\r\n        <h3>PUSHF and POPF<\/h3>\r\n        <p>Save and restore the FLAGS register.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">PUSHF<\/span>              <span class=\"cm\">; Save FLAGS register<\/span>\r\n<span class=\"cm\">; ... some operations ...<\/span>\r\n<span class=\"kw\">POPF<\/span>               <span class=\"cm\">; Restore FLAGS register<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Push three values onto the stack, then pop them in reverse order.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n\r\n    <!-- UNIT 9 -->\r\n    <div class=\"unit\" id=\"unit-9\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 9<\/span>\r\n        <h2>Procedures & Functions<\/h2>\r\n        <p>Modular programming in assembly.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Procedure?<\/h3>\r\n        <p>A <strong>procedure<\/strong> (or subroutine) is a reusable block of code that can be called multiple times.<\/p>\r\n\r\n        <h3>Defining a Procedure<\/h3>\r\n        <div class=\"code-block\"><pre>myProc <span class=\"kw\">PROC<\/span>\r\n    <span class=\"cm\">; Procedure code here<\/span>\r\n    <span class=\"kw\">RET<\/span>              <span class=\"cm\">; Return to caller<\/span>\r\nmyProc <span class=\"kw\">ENDP<\/span><\/pre><\/div>\r\n\r\n        <h3>CALL and RET<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Purpose<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>CALL<\/td><td>Call a procedure (pushes return address on stack)<\/td><\/tr>\r\n            <tr><td>RET<\/td><td>Return from procedure (pops return address)<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Main program<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 5\r\n<span class=\"kw\">CALL<\/span> addTen        <span class=\"cm\">; Call procedure<\/span>\r\n<span class=\"cm\">; AX now contains 15<\/span>\r\n\r\naddTen <span class=\"kw\">PROC<\/span>\r\n    <span class=\"kw\">ADD<\/span> AX, 10\r\n    <span class=\"kw\">RET<\/span>\r\naddTen <span class=\"kw\">ENDP<\/span><\/pre><\/div>\r\n\r\n        <h3>Passing Parameters<\/h3>\r\n        <p>Parameters can be passed via registers or the stack.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Via Registers<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 10\r\n<span class=\"kw\">MOV<\/span> BX, 20\r\n<span class=\"kw\">CALL<\/span> addNumbers    <span class=\"cm\">; Result in AX<\/span>\r\n\r\naddNumbers <span class=\"kw\">PROC<\/span>\r\n    <span class=\"kw\">ADD<\/span> AX, BX\r\n    <span class=\"kw\">RET<\/span>\r\naddNumbers <span class=\"kw\">ENDP<\/span><\/pre><\/div>\r\n\r\n        <h3>Preserving Registers<\/h3>\r\n        <div class=\"code-block\"><pre>myProc <span class=\"kw\">PROC<\/span>\r\n    <span class=\"kw\">PUSH<\/span> AX          <span class=\"cm\">; Save register<\/span>\r\n    <span class=\"kw\">PUSH<\/span> BX\r\n    \r\n    <span class=\"cm\">; Procedure code<\/span>\r\n    \r\n    <span class=\"kw\">POP<\/span> BX           <span class=\"cm\">; Restore registers<\/span>\r\n    <span class=\"kw\">POP<\/span> AX\r\n    <span class=\"kw\">RET<\/span>\r\nmyProc <span class=\"kw\">ENDP<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write a procedure that multiplies a number in AX by 3 and returns the result.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 10 -->\r\n    <div class=\"unit\" id=\"unit-10\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 10<\/span>\r\n        <h2>String Operations<\/h2>\r\n        <p>Manipulating sequences of bytes.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>String Instructions<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Purpose<\/th><th>Registers Used<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>MOVSB<\/td><td>Move byte from DS:SI to ES:DI<\/td><td>SI, DI<\/td><\/tr>\r\n            <tr><td>MOVSW<\/td><td>Move word from DS:SI to ES:DI<\/td><td>SI, DI<\/td><\/tr>\r\n            <tr><td>CMPSB<\/td><td>Compare bytes<\/td><td>SI, DI<\/td><\/tr>\r\n            <tr><td>SCASB<\/td><td>Scan byte (search)<\/td><td>DI<\/td><\/tr>\r\n            <tr><td>LODSB<\/td><td>Load byte into AL from DS:SI<\/td><td>SI<\/td><\/tr>\r\n            <tr><td>STOSB<\/td><td>Store byte from AL to ES:DI<\/td><td>DI<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>REP Prefix<\/h3>\r\n        <p>Repeats a string instruction CX times.<\/p>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> CX, 10         <span class=\"cm\">; Repeat 10 times<\/span>\r\n<span class=\"kw\">REP<\/span> MOVSB          <span class=\"cm\">; Move 10 bytes<\/span><\/pre><\/div>\r\n\r\n        <h3>Example: Copy String<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"cm\">; Source string<\/span>\r\nsource <span class=\"kw\">DB<\/span> <span class=\"st\">'Hello$'<\/span>\r\ndest   <span class=\"kw\">DB<\/span> 6 <span class=\"kw\">DUP<\/span>(0)\r\n\r\n<span class=\"cm\">; Copy string<\/span>\r\n<span class=\"kw\">LEA<\/span> SI, source\r\n<span class=\"kw\">LEA<\/span> DI, dest\r\n<span class=\"kw\">MOV<\/span> CX, 6\r\n<span class=\"kw\">REP<\/span> MOVSB<\/pre><\/div>\r\n\r\n        <h3>Direction Flag<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Instruction<\/th><th>Effect<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>CLD<\/td><td>Clear Direction Flag (forward: SI++, DI++)<\/td><\/tr>\r\n            <tr><td>STD<\/td><td>Set Direction Flag (backward: SI--, DI--)<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write code to copy a 5-byte string from one memory location to another.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 11 -->\r\n    <div class=\"unit\" id=\"unit-11\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 11<\/span>\r\n        <h2>Interrupts & BIOS Services<\/h2>\r\n        <p>Interacting with hardware and system services.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is an Interrupt?<\/h3>\r\n        <p>An <strong>interrupt<\/strong> is a signal that temporarily stops the CPU to execute a special routine (ISR \u2014 Interrupt Service Routine).<\/p>\r\n\r\n        <h3>INT Instruction<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">INT<\/span> number         <span class=\"cm\">; Call interrupt<\/span><\/pre><\/div>\r\n\r\n        <h3>Common BIOS Interrupts<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Interrupt<\/th><th>Purpose<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>INT 10h<\/td><td>Video services<\/td><\/tr>\r\n            <tr><td>INT 16h<\/td><td>Keyboard services<\/td><\/tr>\r\n            <tr><td>INT 21h<\/td><td>DOS services (print, input, file I\/O)<\/td><\/tr>\r\n            <tr><td>INT 13h<\/td><td>Disk services<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Example: Print Character (INT 10h)<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AH, 0Eh        <span class=\"cm\">; Function: Teletype output<\/span>\r\n<span class=\"kw\">MOV<\/span> AL, <span class=\"st\">'A'<\/span>       <span class=\"cm\">; Character to print<\/span>\r\n<span class=\"kw\">INT<\/span> 10h            <span class=\"cm\">; Call BIOS video service<\/span><\/pre><\/div>\r\n\r\n        <h3>Example: Print String (INT 21h)<\/h3>\r\n        <div class=\"code-block\"><pre>msg <span class=\"kw\">DB<\/span> <span class=\"st\">'Hello, World!$'<\/span>\r\n\r\n<span class=\"kw\">LEA<\/span> DX, msg\r\n<span class=\"kw\">MOV<\/span> AH, 09h        <span class=\"cm\">; Function: Display string<\/span>\r\n<span class=\"kw\">INT<\/span> 21h            <span class=\"cm\">; Call DOS service<\/span><\/pre><\/div>\r\n\r\n        <h3>Example: Read Keyboard (INT 16h)<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AH, 00h        <span class=\"cm\">; Function: Read key<\/span>\r\n<span class=\"kw\">INT<\/span> 16h            <span class=\"cm\">; Wait for key press<\/span>\r\n<span class=\"cm\">; AL now contains ASCII code<\/span><\/pre><\/div>\r\n\r\n        <h3>Program Termination<\/h3>\r\n        <div class=\"code-block\"><pre><span class=\"kw\">MOV<\/span> AH, 4Ch        <span class=\"cm\">; Function: Terminate program<\/span>\r\n<span class=\"kw\">INT<\/span> 21h<\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Write a program that prints \"Pakistan\" using INT 21h.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 12 -->\r\n    <div class=\"unit\" id=\"unit-12\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 12<\/span>\r\n        <h2>Macros<\/h2>\r\n        <p>Code templates for repeated patterns.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>What is a Macro?<\/h3>\r\n        <p>A <strong>macro<\/strong> is a code template that gets expanded at assembly time. It's like a function but is replaced inline.<\/p>\r\n\r\n        <h3>Defining a Macro<\/h3>\r\n        <div class=\"code-block\"><pre>macroName <span class=\"kw\">MACRO<\/span> parameter1, parameter2\r\n    <span class=\"cm\">; Macro body<\/span>\r\n<span class=\"kw\">ENDM<\/span><\/pre><\/div>\r\n\r\n        <h3>Example: Simple Macro<\/h3>\r\n        <div class=\"code-block\"><pre>addTen <span class=\"kw\">MACRO<\/span> reg\r\n    <span class=\"kw\">ADD<\/span> reg, 10\r\n<span class=\"kw\">ENDM<\/span>\r\n\r\n<span class=\"cm\">; Usage<\/span>\r\n<span class=\"kw\">MOV<\/span> AX, 5\r\naddTen AX          <span class=\"cm\">; Expands to: ADD AX, 10<\/span><\/pre><\/div>\r\n\r\n        <h3>Macro vs Procedure<\/h3>\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Feature<\/th><th>Macro<\/th><th>Procedure<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>Execution<\/td><td>Code is copied inline<\/td><td>Code is called via CALL<\/td><\/tr>\r\n            <tr><td>Performance<\/td><td>Faster (no CALL\/RET overhead)<\/td><td>Slower (function call overhead)<\/td><\/tr>\r\n            <tr><td>Code Size<\/td><td>Larger (code duplicated)<\/td><td>Smaller (code shared)<\/td><\/tr>\r\n            <tr><td>Use Case<\/td><td>Small, frequently used code<\/td><td>Large, complex functions<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n\r\n        <h3>Example: Print Character Macro<\/h3>\r\n        <div class=\"code-block\"><pre>printChar <span class=\"kw\">MACRO<\/span> char\r\n    <span class=\"kw\">MOV<\/span> AH, 02h\r\n    <span class=\"kw\">MOV<\/span> DL, char\r\n    <span class=\"kw\">INT<\/span> 21h\r\n<span class=\"kw\">ENDM<\/span>\r\n\r\n<span class=\"cm\">; Usage<\/span>\r\nprintChar <span class=\"st\">'A'<\/span>\r\nprintChar <span class=\"st\">'B'<\/span><\/pre><\/div>\r\n\r\n        <div class=\"practice\"><strong>\u270f\ufe0f Practice:<\/strong> Create a macro that swaps two registers using XOR operations.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- UNIT 13 -->\r\n    <div class=\"unit\" id=\"unit-13\">\r\n      <div class=\"unit-header\">\r\n        <span class=\"unit-num-badge\">Unit 13<\/span>\r\n        <h2>Final Project \u2014 Calculator Program<\/h2>\r\n        <p>Building a complete application.<\/p>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <h3>Project Requirements<\/h3>\r\n        <p>Build a simple <strong>Calculator<\/strong> that performs addition, subtraction, multiplication, and division.<\/p>\r\n\r\n        <h3>Features to Implement<\/h3>\r\n        <ul>\r\n          <li>Display a menu with options: 1. Add, 2. Subtract, 3. Multiply, 4. Divide, 5. Exit<\/li>\r\n          <li>Take two numbers as input from the user<\/li>\r\n          <li>Perform the selected operation<\/li>\r\n          <li>Display the result<\/li>\r\n          <li>Loop back to menu until user selects Exit<\/li>\r\n        <\/ul>\r\n\r\n        <h3>Sample Structure<\/h3>\r\n        <div class=\"code-block\"><pre>.model small\r\n.stack 100h\r\n.data\r\n    menu <span class=\"kw\">DB<\/span> <span class=\"st\">'1. Add$'<\/span>\r\n    <span class=\"cm\">; ... more menu items<\/span>\r\n    \r\n.code\r\nmain <span class=\"kw\">PROC<\/span>\r\n    <span class=\"kw\">MOV<\/span> AX, @data\r\n    <span class=\"kw\">MOV<\/span> DS, AX\r\n    \r\nmenu_loop:\r\n    <span class=\"cm\">; Display menu<\/span>\r\n    <span class=\"kw\">CALL<\/span> displayMenu\r\n    \r\n    <span class=\"cm\">; Get user choice<\/span>\r\n    <span class=\"kw\">CALL<\/span> getChoice\r\n    \r\n    <span class=\"cm\">; Process choice<\/span>\r\n    <span class=\"kw\">CMP<\/span> AL, <span class=\"st\">'1'<\/span>\r\n    <span class=\"kw\">JE<\/span> addition\r\n    <span class=\"cm\">; ... handle other cases<\/span>\r\n    \r\n    <span class=\"kw\">JMP<\/span> menu_loop\r\n    \r\naddition:\r\n    <span class=\"kw\">CALL<\/span> addNumbers\r\n    <span class=\"kw\">JMP<\/span> menu_loop\r\n    \r\nmain <span class=\"kw\">ENDP<\/span>\r\n<span class=\"kw\">END<\/span> main<\/pre><\/div>\r\n\r\n        <h3>Bonus Features<\/h3>\r\n        <ul>\r\n          <li>Handle division by zero error<\/li>\r\n          <li>Support multi-digit numbers<\/li>\r\n          <li>Add modulus operation<\/li>\r\n          <li>Display result in decimal format<\/li>\r\n          <li>Use macros for repetitive tasks<\/li>\r\n        <\/ul>\r\n\r\n        <div class=\"practice\"><strong>\ud83d\ude80 Final Project:<\/strong> Complete the calculator with all four operations, user input, error handling, and a looping menu.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- COURSE SUMMARY TABLE -->\r\n    <div class=\"unit\">\r\n      <div class=\"unit-header\">\r\n        <h2>\ud83d\udcda Complete Course Summary<\/h2>\r\n      <\/div>\r\n      <div class=\"unit-body\">\r\n        <table class=\"data-table\">\r\n          <thead><tr><th>Unit<\/th><th>Topic<\/th><th>Key Concepts<\/th><\/tr><\/thead>\r\n          <tbody>\r\n            <tr><td>1<\/td><td>Introduction to Assembly<\/td><td>Low-level programming, Assemblers, MASM\/NASM<\/td><\/tr>\r\n            <tr><td>2<\/td><td>CPU Architecture & Registers<\/td><td>AX, BX, CX, DX, Segment Registers, FLAGS<\/td><\/tr>\r\n            <tr><td>3<\/td><td>Addressing Modes<\/td><td>Immediate, Register, Direct, Indirect, Indexed<\/td><\/tr>\r\n            <tr><td>4<\/td><td>Data Transfer<\/td><td>MOV, XCHG, LEA, PUSH, POP<\/td><\/tr>\r\n            <tr><td>5<\/td><td>Arithmetic Instructions<\/td><td>ADD, SUB, INC, DEC, MUL, DIV, NEG<\/td><\/tr>\r\n            <tr><td>6<\/td><td>Logical & Bitwise<\/td><td>AND, OR, XOR, NOT, SHL, SHR, ROL, ROR<\/td><\/tr>\r\n            <tr><td>7<\/td><td>Control Flow<\/td><td>JMP, JE, JNE, CMP, LOOP<\/td><\/tr>\r\n            <tr><td>8<\/td><td>Stack Operations<\/td><td>PUSH, POP, SP, LIFO, PUSHF, POPF<\/td><\/tr>\r\n            <tr><td>9<\/td><td>Procedures<\/td><td>PROC, CALL, RET, Parameter Passing<\/td><\/tr>\r\n            <tr><td>10<\/td><td>String Operations<\/td><td>MOVSB, CMPSB, LODSB, STOSB, REP<\/td><\/tr>\r\n            <tr><td>11<\/td><td>Interrupts & BIOS<\/td><td>INT 10h, INT 16h, INT 21h, ISR<\/td><\/tr>\r\n            <tr><td>12<\/td><td>Macros<\/td><td>MACRO, ENDM, Code Templates<\/td><\/tr>\r\n            <tr><td>13<\/td><td>Final Project<\/td><td>Calculator \u2014 Complete Application<\/td><\/tr>\r\n          <\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"congrats\">\r\n      <h2>\ud83c\udf89 Congratulations!<\/h2>\r\n      <p>You've completed the Assembly Language course! You now understand how computers work at the hardware level. Keep practicing! \u2699\ufe0f\ud83c\udf1f<\/p>\r\n    <\/div>\r\n\r\n  <\/main>\r\n<\/div>\r\n\r\n<button id=\"back-top\" aria-label=\"Back to top\">\u2191<\/button>\r\n\r\n<script>\r\nwindow.addEventListener('scroll', () => {\r\n  const winScroll = document.body.scrollTop || document.documentElement.scrollTop;\r\n  const height = document.documentElement.scrollHeight - document.documentElement.clientHeight;\r\n  const scrolled = (winScroll \/ height) * 100;\r\n  document.getElementById('progress').style.width = scrolled + '%';\r\n});\r\n\r\nconst backTop = document.getElementById('back-top');\r\nwindow.addEventListener('scroll', () => {\r\n  if (window.pageYOffset > 300) {\r\n    backTop.classList.add('visible');\r\n  } else {\r\n    backTop.classList.remove('visible');\r\n  }\r\n});\r\nbackTop.addEventListener('click', () => {\r\n  window.scrollTo({ top: 0, behavior: 'smooth' });\r\n});\r\n\r\nconst sections = document.querySelectorAll('.unit');\r\nconst navLinks = document.querySelectorAll('.toc-list a');\r\n\r\nwindow.addEventListener('scroll', () => {\r\n  let current = '';\r\n  sections.forEach(section => {\r\n    const sectionTop = section.offsetTop;\r\n    if (pageYOffset >= sectionTop - 100) {\r\n      current = section.getAttribute('id');\r\n    }\r\n  });\r\n\r\n  navLinks.forEach(link => {\r\n    link.classList.remove('active');\r\n    if (link.getAttribute('href') === '#' + current) {\r\n      link.classList.add('active');\r\n    }\r\n  });\r\n});\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Assembly Language \u2013 University Level \u2013 Pak Notes Hub Pak Notes Hub Course Outline Start Learning Instructions Procedures \u2699\ufe0f University Level \u2014 BS CS \/ BS IT Assembly LanguageComplete Notes Registers to Procedures \u00b7 Memory \u00b7 Interrupts \u2014 All in Easy English \u2699\ufe0f 13 Units \ud83c\udf93 University Level \ud83d\udcbb Code Examples \ud83d\udcdd Practice Tasks \ud83d\ude80 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_angie_page":false,"footnotes":""},"class_list":["post-481","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/pages\/481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=481"}],"version-history":[{"count":4,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/pages\/481\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/paknoteshub.online\/index.php?rest_route=\/wp\/v2\/pages\/481\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/paknoteshub.online\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}