{"id":2436,"date":"2025-06-07T04:41:34","date_gmt":"2025-06-07T04:41:34","guid":{"rendered":"https:\/\/diznr.com\/?p=2436"},"modified":"2025-06-07T04:41:34","modified_gmt":"2025-06-07T04:41:34","slug":"system-programming-system-programming-tutorial-concept-of-assembly-language-assembler-and-its-working-diagram-with","status":"publish","type":"post","link":"https:\/\/www.reilsolar.com\/pdf\/system-programming-system-programming-tutorial-concept-of-assembly-language-assembler-and-its-working-diagram-with\/","title":{"rendered":"System Programming: System Programming Tutorial-concept of assembly language-Assembler and it&#8217;s working with diagram"},"content":{"rendered":"<p>System Programming: System Programming Tutorial-concept of assembly language-Assembler and it&#8217;s working with diagram.<\/p>\n<p>[fvplayer id=&#8221;33&#8243;]<\/p>\n<h3 data-start=\"0\" data-end=\"59\"><strong data-start=\"2\" data-end=\"57\">System Programming: Assembly Language and Assembler<\/strong><\/h3>\n<h3 data-start=\"61\" data-end=\"106\"><strong data-start=\"64\" data-end=\"104\">1. Introduction to Assembly Language<\/strong><\/h3>\n<p data-start=\"107\" data-end=\"333\"><strong data-start=\"107\" data-end=\"128\">Assembly Language<\/strong> is a low-level programming language that provides a direct mapping to a computer&#8217;s machine code. It is written using <strong data-start=\"246\" data-end=\"259\">mnemonics<\/strong> instead of binary opcodes, making it easier for humans to read and write.<\/p>\n<h3 data-start=\"335\" data-end=\"374\"><strong data-start=\"339\" data-end=\"372\">Features of Assembly Language<\/strong><\/h3>\n<p data-start=\"375\" data-end=\"587\">\u00a0Uses symbolic mnemonics (e.g., <code data-start=\"408\" data-end=\"413\">MOV<\/code>, <code data-start=\"415\" data-end=\"420\">ADD<\/code>, <code data-start=\"422\" data-end=\"427\">SUB<\/code>).<br data-start=\"429\" data-end=\"432\" \/>\u00a0Provides direct hardware control.<br data-start=\"467\" data-end=\"470\" \/>\u00a0Faster execution compared to high-level languages.<br data-start=\"522\" data-end=\"525\" \/>\u00a0Requires an <strong data-start=\"539\" data-end=\"552\">Assembler<\/strong> to convert it into machine code.<\/p>\n<h3 data-start=\"594\" data-end=\"627\"><strong data-start=\"597\" data-end=\"625\">2. What is an Assembler?<\/strong><\/h3>\n<p data-start=\"628\" data-end=\"773\">An <strong data-start=\"631\" data-end=\"644\">Assembler<\/strong> is a system program that translates <strong data-start=\"681\" data-end=\"702\">assembly language<\/strong> into <strong data-start=\"708\" data-end=\"738\">machine code (binary form)<\/strong> that a computer&#8217;s CPU can execute.<\/p>\n<h3 data-start=\"775\" data-end=\"805\"><strong data-start=\"779\" data-end=\"803\">Assembler Functions:<\/strong><\/h3>\n<ol data-start=\"806\" data-end=\"1045\">\n<li data-start=\"806\" data-end=\"874\"><strong data-start=\"809\" data-end=\"844\">Converts mnemonics into opcodes<\/strong> (e.g., <code data-start=\"852\" data-end=\"862\">MOV A, B<\/code> \u2192 <code data-start=\"865\" data-end=\"870\">78H<\/code>).<\/li>\n<li data-start=\"875\" data-end=\"927\"><strong data-start=\"878\" data-end=\"925\">Allocates memory for instructions and data.<\/strong><\/li>\n<li data-start=\"928\" data-end=\"992\"><strong data-start=\"931\" data-end=\"963\">Handles labels and addresses<\/strong> (symbol table management).<\/li>\n<li data-start=\"993\" data-end=\"1045\"><strong data-start=\"996\" data-end=\"1021\">Detects syntax errors<\/strong> in the assembly code.<\/li>\n<\/ol>\n<h3 data-start=\"1052\" data-end=\"1102\"><strong data-start=\"1055\" data-end=\"1100\">3. Working of an Assembler (With Diagram)<\/strong><\/h3>\n<h3 data-start=\"1104\" data-end=\"1144\"><strong data-start=\"1108\" data-end=\"1144\">Step-by-Step Assembler Workflow:<\/strong><\/h3>\n<ol data-start=\"1145\" data-end=\"2005\">\n<li data-start=\"1145\" data-end=\"1432\">\n<p data-start=\"1148\" data-end=\"1177\"><strong data-start=\"1148\" data-end=\"1175\">Input: Assembly Program<\/strong><\/p>\n<ul data-start=\"1181\" data-end=\"1432\">\n<li data-start=\"1181\" data-end=\"1232\">Programmer writes instructions using mnemonics.<\/li>\n<li data-start=\"1236\" data-end=\"1429\">Example code:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">assembly<\/div>\n<div class=\"sticky top-9\"><\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre language-assembly\">START: MOV A, B   ; Move B into A<br \/>\nADD C      ; Add C to A<br \/>\nJMP END    ; Jump to END<br \/>\nEND:   HLT        ; Stop execution<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1433\" data-end=\"1545\">\n<p data-start=\"1436\" data-end=\"1458\"><strong data-start=\"1436\" data-end=\"1456\">Lexical Analysis<\/strong><\/p>\n<ul data-start=\"1462\" data-end=\"1545\">\n<li data-start=\"1462\" data-end=\"1545\">The assembler scans the program and extracts <strong data-start=\"1509\" data-end=\"1544\">mnemonics, labels, and operands<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1547\" data-end=\"1645\">\n<p data-start=\"1550\" data-end=\"1571\"><strong data-start=\"1550\" data-end=\"1569\">Syntax Analysis<\/strong><\/p>\n<ul data-start=\"1575\" data-end=\"1645\">\n<li data-start=\"1575\" data-end=\"1645\">Checks for errors like invalid mnemonics or incorrect operand usage.<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1647\" data-end=\"1749\">\n<p data-start=\"1650\" data-end=\"1679\"><strong data-start=\"1650\" data-end=\"1677\">Symbol Table Generation<\/strong><\/p>\n<ul data-start=\"1683\" data-end=\"1749\">\n<li data-start=\"1683\" data-end=\"1749\">Creates a table of <strong data-start=\"1704\" data-end=\"1748\">labels and their corresponding addresses<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1751\" data-end=\"1833\">\n<p data-start=\"1754\" data-end=\"1777\"><strong data-start=\"1754\" data-end=\"1775\">Opcode Conversion<\/strong><\/p>\n<ul data-start=\"1781\" data-end=\"1833\">\n<li data-start=\"1781\" data-end=\"1833\">Converts mnemonics into machine code instructions.<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1835\" data-end=\"1918\">\n<p data-start=\"1838\" data-end=\"1862\"><strong data-start=\"1838\" data-end=\"1860\">Address Resolution<\/strong><\/p>\n<ul data-start=\"1866\" data-end=\"1918\">\n<li data-start=\"1866\" data-end=\"1918\">Assigns memory addresses to instructions and data.<\/li>\n<\/ul>\n<\/li>\n<li data-start=\"1920\" data-end=\"2005\">\n<p data-start=\"1923\" data-end=\"1963\"><strong data-start=\"1923\" data-end=\"1961\">Output: Machine Code (Object File)<\/strong><\/p>\n<ul data-start=\"1967\" data-end=\"2005\">\n<li data-start=\"1967\" data-end=\"2005\">Generates an executable binary code.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3 data-start=\"2012\" data-end=\"2052\"><strong data-start=\"2016\" data-end=\"2052\">Diagram: Working of an Assembler<\/strong><\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre\">       +<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|  Assembly Source Code   |<br \/>\n+<span class=\"hljs-comment\">-----------+-------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|     Lexical Analysis     |  <span class=\"hljs-comment\">---&gt; Extract mnemonics, labels, operands<\/span><br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|     Syntax Analysis      |  <span class=\"hljs-comment\">---&gt; Check for syntax errors<\/span><br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|  Symbol <span class=\"hljs-keyword\">Table<\/span> Creation   |  <span class=\"hljs-comment\">---&gt; Assign labels to memory addresses<\/span><br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|   Opcode <span class=\"hljs-keyword\">Conversion<\/span>     |  <span class=\"hljs-comment\">---&gt; Convert mnemonics to machine code<\/span><br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n|  Output: Machine Code    |  <span class=\"hljs-comment\">---&gt; Final executable binary<\/span><br \/>\n+<span class=\"hljs-comment\">-------------------------+<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<h3 data-start=\"3093\" data-end=\"3124\"><strong data-start=\"3096\" data-end=\"3122\">4. Types of Assemblers<\/strong><\/h3>\n<h3 data-start=\"3125\" data-end=\"3159\"><strong data-start=\"3129\" data-end=\"3157\">1. Single-Pass Assembler<\/strong><\/h3>\n<ul data-start=\"3160\" data-end=\"3290\">\n<li data-start=\"3160\" data-end=\"3195\"><strong data-start=\"3162\" data-end=\"3193\">Processes code in one scan.<\/strong><\/li>\n<li data-start=\"3196\" data-end=\"3247\"><strong data-start=\"3198\" data-end=\"3245\">Fast but struggles with forward references.<\/strong><\/li>\n<li data-start=\"3248\" data-end=\"3290\">Example: Basic 8-bit microcontrollers.<\/li>\n<\/ul>\n<h3 data-start=\"3292\" data-end=\"3323\"><strong data-start=\"3296\" data-end=\"3321\">2. Two-Pass Assembler<\/strong><\/h3>\n<ul data-start=\"3324\" data-end=\"3481\">\n<li data-start=\"3324\" data-end=\"3367\"><strong data-start=\"3326\" data-end=\"3337\">Pass 1:<\/strong> Creates a <strong data-start=\"3348\" data-end=\"3364\">symbol table<\/strong>.<\/li>\n<li data-start=\"3368\" data-end=\"3446\"><strong data-start=\"3370\" data-end=\"3381\">Pass 2:<\/strong> Converts mnemonics to <strong data-start=\"3404\" data-end=\"3420\">machine code<\/strong> using the symbol table.<\/li>\n<li data-start=\"3447\" data-end=\"3481\">Example: Intel 8086 assembler.<\/li>\n<\/ul>\n<h3 data-start=\"3488\" data-end=\"3510\"><strong data-start=\"3491\" data-end=\"3508\">5. Conclusion<\/strong><\/h3>\n<ul data-start=\"3511\" data-end=\"3786\">\n<li data-start=\"3511\" data-end=\"3594\"><strong data-start=\"3513\" data-end=\"3534\">Assembly Language<\/strong> provides direct hardware control and efficient execution.<\/li>\n<li data-start=\"3595\" data-end=\"3712\"><strong data-start=\"3597\" data-end=\"3611\">Assemblers<\/strong> translate it into machine code using <strong data-start=\"3649\" data-end=\"3709\">symbol tables, opcode conversion, and address resolution<\/strong>.<\/li>\n<li data-start=\"3713\" data-end=\"3786\"><strong data-start=\"3715\" data-end=\"3740\">Multi-pass assemblers<\/strong> handle forward references more efficiently.<\/li>\n<\/ul>\n<p data-start=\"3788\" data-end=\"3886\" data-is-last-node=\"\" data-is-only-node=\"\">Would you like a <strong data-start=\"3805\" data-end=\"3882\">real-world example of an assembly program and its machine code conversion<\/strong>?<\/p>\n<h3 data-start=\"3788\" data-end=\"3886\"><a href=\"https:\/\/www.rvstcc.ac.in\/assets\/img\/pdf\/Assembly%20Language.pdf\" target=\"_blank\" rel=\"noopener\">System Programming: System Programming Tutorial-concept of assembly language-Assembler and it&#8217;s working with diagram<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www.ic.unicamp.br\/~pannain\/mc404\/aulas\/pdfs\/Art%20Of%20Intel%20x86%20Assembly.pdf\" target=\"_blank\" rel=\"noopener\">The Art of Assembly Language<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www.tgpcet.com\/assets\/img\/CSE\/CSE-NOTES\/4\/SP.pdf\" target=\"_blank\" rel=\"noopener\">Unit 1 What is System Programming?<\/a><\/h3>\n<p data-start=\"0\" data-end=\"159\">Here\u2019s a comprehensive tutorial on <strong data-start=\"35\" data-end=\"57\">System Programming<\/strong>, focusing on the <strong data-start=\"75\" data-end=\"107\">Concept of Assembly Language<\/strong>, <strong data-start=\"109\" data-end=\"122\">Assembler<\/strong>, and its working <strong data-start=\"140\" data-end=\"158\">with a diagram<\/strong>.<\/p>\n<hr data-start=\"161\" data-end=\"164\" \/>\n<h2 data-start=\"166\" data-end=\"235\">\ud83d\udcd8 <strong data-start=\"172\" data-end=\"235\">System Programming Tutorial \u2013 Assembly Language &amp; Assembler<\/strong><\/h2>\n<hr data-start=\"237\" data-end=\"240\" \/>\n<h3 data-start=\"242\" data-end=\"280\">\ud83d\udccc <strong data-start=\"249\" data-end=\"280\">What is System Programming?<\/strong><\/h3>\n<p data-start=\"282\" data-end=\"456\"><strong data-start=\"282\" data-end=\"304\">System Programming<\/strong> involves creating <strong data-start=\"323\" data-end=\"342\">system software<\/strong> like compilers, assemblers, linkers, loaders, operating systems, etc., that manage and control computer hardware.<\/p>\n<hr data-start=\"458\" data-end=\"461\" \/>\n<h2 data-start=\"463\" data-end=\"499\">\ud83e\udde0 <strong data-start=\"469\" data-end=\"499\">What is Assembly Language?<\/strong><\/h2>\n<p data-start=\"501\" data-end=\"648\">Assembly Language is a <strong data-start=\"524\" data-end=\"558\">low-level programming language<\/strong> that uses <strong data-start=\"569\" data-end=\"582\">mnemonics<\/strong> (symbols or short codes) to represent machine-level instructions.<\/p>\n<h3 data-start=\"650\" data-end=\"665\">\ud83d\udd24 Example:<\/h3>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">asm<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-asm\">MOV A, B     ; Move data from register B to register A<br \/>\nADD A, C     ; Add contents of C to A<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"771\" data-end=\"851\">Each instruction corresponds to a <strong data-start=\"805\" data-end=\"828\">machine instruction<\/strong> understood by the CPU.<\/p>\n<hr data-start=\"853\" data-end=\"856\" \/>\n<h2 data-start=\"858\" data-end=\"890\">\ud83d\udee0\ufe0f <strong data-start=\"865\" data-end=\"890\">What is an Assembler?<\/strong><\/h2>\n<p data-start=\"892\" data-end=\"1001\">An <strong data-start=\"895\" data-end=\"908\">Assembler<\/strong> is a <strong data-start=\"914\" data-end=\"932\">system program<\/strong> that converts assembly language code into <strong data-start=\"975\" data-end=\"991\">machine code<\/strong> (binary).<\/p>\n<hr data-start=\"1003\" data-end=\"1006\" \/>\n<h3 data-start=\"1008\" data-end=\"1039\">\ud83d\udd04 <strong data-start=\"1015\" data-end=\"1039\">Types of Assemblers:<\/strong><\/h3>\n<ol data-start=\"1040\" data-end=\"1246\">\n<li data-start=\"1040\" data-end=\"1125\">\n<p data-start=\"1043\" data-end=\"1125\"><strong data-start=\"1043\" data-end=\"1069\">Single-pass assembler:<\/strong> Processes code once. Faster, but limited functionality.<\/p>\n<\/li>\n<li data-start=\"1126\" data-end=\"1246\">\n<p data-start=\"1129\" data-end=\"1246\"><strong data-start=\"1129\" data-end=\"1152\">Two-pass assembler:<\/strong> Processes code twice. First pass builds the symbol table; second pass generates machine code.<\/p>\n<\/li>\n<\/ol>\n<hr data-start=\"1248\" data-end=\"1251\" \/>\n<h2 data-start=\"1253\" data-end=\"1298\">\ud83d\udd27 <strong data-start=\"1259\" data-end=\"1298\">Working of Assembler \u2013 Step-by-Step<\/strong><\/h2>\n<h3 data-start=\"1300\" data-end=\"1312\">\u2728 Input:<\/h3>\n<ul data-start=\"1313\" data-end=\"1361\">\n<li data-start=\"1313\" data-end=\"1361\">\n<p data-start=\"1315\" data-end=\"1361\">Source code in assembly language (<code data-start=\"1349\" data-end=\"1355\">.asm<\/code> file)<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"1363\" data-end=\"1377\">\ud83d\udce5 Output:<\/h3>\n<ul data-start=\"1378\" data-end=\"1421\">\n<li data-start=\"1378\" data-end=\"1421\">\n<p data-start=\"1380\" data-end=\"1421\">Machine code or object code (<code data-start=\"1409\" data-end=\"1415\">.obj<\/code> file)<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"1423\" data-end=\"1426\" \/>\n<h3 data-start=\"1428\" data-end=\"1486\">\u2705 <strong data-start=\"1434\" data-end=\"1486\">Steps in Assembler Processing (Two-Pass Example)<\/strong><\/h3>\n<h4 data-start=\"1488\" data-end=\"1521\"><strong data-start=\"1493\" data-end=\"1521\">Pass 1 \u2013 Analysis Phase:<\/strong><\/h4>\n<ul data-start=\"1522\" data-end=\"1667\">\n<li data-start=\"1522\" data-end=\"1541\">\n<p data-start=\"1524\" data-end=\"1541\">Scans source code<\/p>\n<\/li>\n<li data-start=\"1542\" data-end=\"1599\">\n<p data-start=\"1544\" data-end=\"1599\">Identifies <strong data-start=\"1555\" data-end=\"1565\">labels<\/strong>, <strong data-start=\"1567\" data-end=\"1583\">instructions<\/strong>, <strong data-start=\"1585\" data-end=\"1599\">directives<\/strong><\/p>\n<\/li>\n<li data-start=\"1600\" data-end=\"1625\">\n<p data-start=\"1602\" data-end=\"1625\">Builds <strong data-start=\"1609\" data-end=\"1625\">Symbol Table<\/strong><\/p>\n<\/li>\n<li data-start=\"1626\" data-end=\"1667\">\n<p data-start=\"1628\" data-end=\"1667\">Determines memory locations (addresses)<\/p>\n<\/li>\n<\/ul>\n<h4 data-start=\"1669\" data-end=\"1703\"><strong data-start=\"1674\" data-end=\"1703\">Pass 2 \u2013 Synthesis Phase:<\/strong><\/h4>\n<ul data-start=\"1704\" data-end=\"1832\">\n<li data-start=\"1704\" data-end=\"1742\">\n<p data-start=\"1706\" data-end=\"1742\">Replaces mnemonics with machine code<\/p>\n<\/li>\n<li data-start=\"1743\" data-end=\"1796\">\n<p data-start=\"1745\" data-end=\"1796\">Resolves label addresses using the <strong data-start=\"1780\" data-end=\"1796\">Symbol Table<\/strong><\/p>\n<\/li>\n<li data-start=\"1797\" data-end=\"1832\">\n<p data-start=\"1799\" data-end=\"1832\">Produces final machine-level code<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"1834\" data-end=\"1837\" \/>\n<h2 data-start=\"1839\" data-end=\"1882\">\ud83d\udcca <strong data-start=\"1845\" data-end=\"1882\">Diagram \u2013 Working of an Assembler<\/strong><\/h2>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">pgsql<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">        +<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|  Assembly Program  |  \u2190 <span class=\"hljs-keyword\">Input<\/span> (.asm)<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|      Pass <span class=\"hljs-number\">1<\/span>        |<br \/>\n|  (Symbol <span class=\"hljs-keyword\">Table<\/span> +   |<br \/>\n|   Address <span class=\"hljs-keyword\">Info<\/span>)    |<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|      Pass <span class=\"hljs-number\">2<\/span>        |<br \/>\n| (Code Generation)  |<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|<br \/>\nv<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n|   Machine Code     |  \u2190 Output (.obj\/.bin)<br \/>\n+<span class=\"hljs-comment\">--------------------+<\/span><br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"2496\" data-end=\"2499\" \/>\n<h2 data-start=\"2501\" data-end=\"2531\">\ud83d\udccc <strong data-start=\"2507\" data-end=\"2531\">Symbol Table Example<\/strong><\/h2>\n<div class=\"_tableContainer_16hzy_1\">\n<div class=\"_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2533\" data-end=\"2612\">\n<thead data-start=\"2533\" data-end=\"2552\">\n<tr data-start=\"2533\" data-end=\"2552\">\n<th data-start=\"2533\" data-end=\"2541\" data-col-size=\"sm\">Label<\/th>\n<th data-start=\"2541\" data-end=\"2552\" data-col-size=\"sm\">Address<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2573\" data-end=\"2612\">\n<tr data-start=\"2573\" data-end=\"2592\">\n<td data-start=\"2573\" data-end=\"2581\" data-col-size=\"sm\">LOOP<\/td>\n<td data-start=\"2581\" data-end=\"2592\" data-col-size=\"sm\">1003<\/td>\n<\/tr>\n<tr data-start=\"2593\" data-end=\"2612\">\n<td data-start=\"2593\" data-end=\"2601\" data-col-size=\"sm\">END<\/td>\n<td data-start=\"2601\" data-end=\"2612\" data-col-size=\"sm\">1010<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sticky end-(--thread-content-margin) h-0 self-end select-none\">\n<div class=\"absolute end-0 flex items-end\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<p data-start=\"2614\" data-end=\"2700\">Assembler uses this during <strong data-start=\"2641\" data-end=\"2651\">Pass 2<\/strong> to fill in actual addresses for jumps or labels.<\/p>\n<hr data-start=\"2702\" data-end=\"2705\" \/>\n<h2 data-start=\"2707\" data-end=\"2752\">\ud83d\udcd8 Example Code &amp; Machine Code Translation<\/h2>\n<p data-start=\"2754\" data-end=\"2772\"><strong data-start=\"2754\" data-end=\"2772\">Assembly Code:<\/strong><\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">asm<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre! language-asm\">START:  MOV A, B<br \/>\nADD A, C<br \/>\nJMP START<br \/>\n<\/code><\/div>\n<\/div>\n<p data-start=\"2837\" data-end=\"2854\"><strong data-start=\"2837\" data-end=\"2854\">Machine Code:<\/strong><\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none rounded-t-[5px]\">css<\/div>\n<div class=\"sticky top-9\">\n<div class=\"absolute end-0 bottom-0 flex h-9 items-center pe-2\">\n<div class=\"bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs\"><button class=\"flex gap-1 items-center select-none px-4 py-1\" aria-label=\"Copy\">Copy<\/button><span class=\"\" data-state=\"closed\"><button class=\"flex items-center gap-1 px-4 py-1 select-none\">Edit<\/button><\/span><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"whitespace-pre!\">Opcode1  (MOV <span class=\"hljs-selector-tag\">A<\/span>, <span class=\"hljs-selector-tag\">B<\/span>)<br \/>\nOpcode2  (ADD <span class=\"hljs-selector-tag\">A<\/span>, C)<br \/>\nOpcode3  (JMP <span class=\"hljs-selector-tag\">to<\/span> <span class=\"hljs-selector-tag\">address<\/span> of START)<br \/>\n<\/code><\/div>\n<\/div>\n<hr data-start=\"2939\" data-end=\"2942\" \/>\n<h2 data-start=\"2944\" data-end=\"2956\">\u2705 Summary<\/h2>\n<div class=\"_tableContainer_16hzy_1\">\n<div class=\"_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2958\" data-end=\"3431\">\n<thead data-start=\"2958\" data-end=\"3036\">\n<tr data-start=\"2958\" data-end=\"3036\">\n<th data-start=\"2958\" data-end=\"2980\" data-col-size=\"sm\">Concept<\/th>\n<th data-start=\"2980\" data-end=\"3036\" data-col-size=\"sm\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"3116\" data-end=\"3431\">\n<tr data-start=\"3116\" data-end=\"3194\">\n<td data-start=\"3116\" data-end=\"3138\" data-col-size=\"sm\">Assembly Language<\/td>\n<td data-start=\"3138\" data-end=\"3194\" data-col-size=\"sm\">Low-level language using mnemonics<\/td>\n<\/tr>\n<tr data-start=\"3195\" data-end=\"3273\">\n<td data-start=\"3195\" data-end=\"3217\" data-col-size=\"sm\">Assembler<\/td>\n<td data-start=\"3217\" data-end=\"3273\" data-col-size=\"sm\">Translates assembly code to machine code<\/td>\n<\/tr>\n<tr data-start=\"3274\" data-end=\"3352\">\n<td data-start=\"3274\" data-end=\"3296\" data-col-size=\"sm\">Symbol Table<\/td>\n<td data-start=\"3296\" data-end=\"3352\" data-col-size=\"sm\">Keeps track of labels and addresses<\/td>\n<\/tr>\n<tr data-start=\"3353\" data-end=\"3431\">\n<td data-start=\"3353\" data-end=\"3375\" data-col-size=\"sm\">Machine Code Output<\/td>\n<td data-start=\"3375\" data-end=\"3431\" data-col-size=\"sm\">Binary code that CPU executes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"sticky end-(--thread-content-margin) h-0 self-end select-none\">\n<div class=\"absolute end-0 flex items-end\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<hr data-start=\"3433\" data-end=\"3436\" \/>\n<p data-start=\"3438\" data-end=\"3632\" data-is-last-node=\"\" data-is-only-node=\"\">Would you like a downloadable <strong data-start=\"3468\" data-end=\"3503\">PDF with diagrams and exercises<\/strong> or a <strong data-start=\"3509\" data-end=\"3536\">video-based explanation<\/strong> of this tutorial? I can also add <strong data-start=\"3570\" data-end=\"3606\">practice problems with solutions<\/strong> for better understanding.<\/p>\n<h3 data-start=\"3438\" data-end=\"3632\"><a href=\"https:\/\/www.kharagpurcollege.ac.in\/studyMaterial\/23554Study-materials-for-BCA-3rd-semester-System-Programming2.pdf\" target=\"_blank\" rel=\"noopener\">System Programming: System Programming Tutorial-concept of assembly language-Assembler and it&#8217;s working with diagram<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/www.uobabylon.edu.iq\/eprints\/publication_1_26408_35.pdf\" target=\"_blank\" rel=\"noopener\">8086 assembler tutorial for beginners (part 1)<\/a><\/h3>\n<h3 class=\"LC20lb MBeuO DKV0Md\"><a href=\"https:\/\/pcgicks.wordpress.com\/wp-content\/uploads\/2015\/02\/com-212-introduction-to-system-programming-theory.pdf\" target=\"_blank\" rel=\"noopener\">COM 212 INTRO TO SYSTEM PROGRAMMING Book Theory<\/a><\/h3>\n","protected":false},"excerpt":{"rendered":"<p>System Programming: System Programming Tutorial-concept of assembly language-Assembler and it&#8217;s working with diagram. [fvplayer id=&#8221;33&#8243;] System Programming: Assembly Language and Assembler 1. Introduction to Assembly Language Assembly Language is a low-level programming language that provides a direct mapping to a computer&#8217;s machine code. It is written using mnemonics instead of binary opcodes, making it easier [&hellip;]<\/p>\n","protected":false},"author":64,"featured_media":2437,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1778],"tags":[1780,1781,1779,1782],"class_list":["post-2436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-system-programming","tag-assembler-and-its-working-with-diagram","tag-concept-of-assembly-language","tag-system-programming","tag-system-programming-tutorial"],"_links":{"self":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/comments?post=2436"}],"version-history":[{"count":0,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/posts\/2436\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media\/2437"}],"wp:attachment":[{"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/media?parent=2436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/categories?post=2436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.reilsolar.com\/pdf\/wp-json\/wp\/v2\/tags?post=2436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}