Hack computer
হ্যাক কম্পিউটার একটি তাত্ত্বিক কম্পিউটার নকশা যা নোম নিসান এবং শিমন স্ককেন তৈরি করেছেন এবং তাদের বই দ্য এলিমেন্টস অফ কম্পিউটিং সিস্টেমসঃ বিল্ডিং এ মডার্ন কম্পিউটার ফ্রম ফার্স্ট প্রিন্সিপলস-এ বর্ণনা করেছেন। "আধুনিক" শব্দটি ব্যবহার করার সময়, লেখকরা একটি ডিজিটাল, বাইনারি মেশিনকে বোঝান যা ভন নিউম্যান স্থাপত্য মডেল অনুসারে প্যাটার্ন করা হয়েছে। হ্যাক কম্পিউটারটি কম্পিউটার সংগঠন এবং স্থাপত্যের একটি মৌলিক, কিন্তু ব্যাপক কোর্সের অংশ হিসাবে একটি হার্ডওয়্যার সিমুলেটর অ্যাপ্লিকেশনে হাতে-কলমে ভার্চ্যুয়াল নির্মাণের উদ্দেশ্যে তৈরি করা হয়েছে। লেখকদের তৈরি এবং দুটি অংশে বিতরণ করা এরকম একটি কোর্স, বিল্ড এ মডার্ন কম্পিউটার ফ্রম ফার্স্ট প্রিন্সিপলসঃ ফ্রম নন্দ টু টেট্রিস নামে একটি বিশাল উন্মুক্ত অনলাইন কোর্স (এমওওসি) হিসাবে বিনামূল্যে পাওয়া যায়। কোর্সে অন্তর্ভুক্ত বারোটি প্রকল্পের মধ্যে, শিক্ষার্থীরা দুটি ইনপুট নন্দ গেট দিয়ে শুরু করে এবং হার্ডওয়্যার (মেমরি এবং সিপিইউ) এবং সফ্টওয়্যার (অ্যাসেম্বলার, ভিএম, জাভা-সদৃশ প্রোগ্রামিং ভাষা এবং ওএস) উভয়ই সহ একটি সম্পূর্ণ কার্যকরী ভার্চুয়াল কম্পিউটার দিয়ে শেষ হয়। কম্পিউটার হার্ডওয়্যারের প্রাথমিক বাস্তবায়নের জন্য ব্যবহৃত হার্ডওয়্যার সিমুলেটর ছাড়াও, একটি সম্পূর্ণ হ্যাক কম্পিউটার এমুলেটর প্রোগ্রাম এবং অ্যাসেম্বলার যা বইটিতে বর্ণিত প্রকল্পগুলিকে সমর্থন করে এবং অনলাইন কোর্সও লেখকের ওয়েবসাইটে উপলব্ধ। হার্ডওয়্যার স্থাপত্য ব্লক রেখাচিত্রে যেমন দেখানো হয়েছে, হ্যাক কম্পিউটার হার্ডওয়্যার তিনটি মৌলিক উপাদান নিয়ে গঠিত। দুটি পৃথক 16-বিট মেমরি ইউনিট এবং একটি সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) রয়েছে। যেহেতু তথ্য কম্পিউটার দ্বারা 16-বিট শব্দের মধ্যে সরানো এবং প্রক্রিয়াজাত করা হয়, হ্যাক কম্পিউটারকে 16-বিট স্থাপত্য হিসাবে শ্রেণীবদ্ধ করা হয়। কম্পিউটারের দৃষ্টিকোণ থেকে শুধুমাত্র পঠনযোগ্য মেমরি হিসাবে প্রয়োগ করা নির্দেশ মেমরি এবং মনোনীত রম, সম্পাদনের জন্য একত্রিত বাইনারি প্রোগ্রাম কোড ধারণ করে। র্যান্ডম অ্যাক্সেস মেমরি, যাকে র্যাম বলা হয়, একটি এক্সিকিউটিভ প্রোগ্রামের ডেটার জন্য স্টোরেজ সরবরাহ করে এবং কম্পিউটারের মেমরি-ম্যাপড আই/ও মেকানিজমের জন্য পরিষেবা এবং স্টোরেজ এলাকা সরবরাহ করে। ডেটা প্রসেসিং এবং প্রোগ্রাম নিয়ন্ত্রণ পরিচালনা সিপিইউ দ্বারা সরবরাহ করা হয়। তিনটি ইউনিট সমান্তরাল বাসের মাধ্যমে সংযুক্ত। রম এবং র্যাম ইউনিটগুলির জন্য অ্যাড্রেস বাসগুলি (15-বিট), পাশাপাশি ডেটা এবং নির্দেশমূলক বাসগুলি (16-বিট) সম্পূর্ণ স্বাধীন। অতএব, হ্যাকের নকশাটি মেমোরি ইউনিট এবং সিপিইউর মধ্যে বাস যোগাযোগের ক্ষেত্রে হার্ভার্ড স্থাপত্য মডেল অনুসরণ করে। সমস্ত মেমোরি শুধুমাত্র শব্দের দ্বারা ঠিক করা যায়। রিড-অনলি মেমোরি (রম) হ্যাক কম্পিউটারের রম মডিউলটি পৃথকভাবে অ্যাড্রেসেবল, ক্রমিক, 16-বিট মেমরি রেজিস্টারের একটি রৈখিক অ্যারে হিসাবে উপস্থাপিত হয়। ঠিকানা 0 (0x0000) থেকে শুরু হয়। যেহেতু মেমরি উপাদানগুলি ক্রমিক যন্ত্র, তাই একটি সিস্টেম ঘড়ি সংকেত সিমুলেশন অ্যাপ্লিকেশন এবং কম্পিউটার এমুলেটর অ্যাপ্লিকেশন দ্বারা সরবরাহ করা হয়। রম অ্যাড্রেস বাসটি 15 বিট চওড়া, তাই প্রোগ্রাম নির্দেশাবলীর জন্য মোট 32,768টি পৃথক শব্দ পাওয়া যায়। বর্তমানে সক্রিয় শব্দের ঠিকানাটি সিপিইউর মধ্যে একটি প্রোগ্রাম কাউন্টার রেজিস্টার দ্বারা সরবরাহ করা হয় (নীচে দেখুন)। একটি নির্দিষ্ট ঘড়ির চক্রে নির্দেশ ঠিকানা বাসে রাখা ঠিকানা দ্বারা চিহ্নিত রম মেমরি রেজিস্টারের মানটি পরবর্তী চক্রের শুরুতে "বর্তমান" নির্দেশ হিসাবে উপলব্ধ। কোনও নির্দেশ রেজিস্টার নেই; বর্তমানে সক্রিয় রম রেজিস্টার থেকে প্রতিটি চক্রে নির্দেশাবলী ডিকোড করা হয়। র্যান্ডম অ্যাক্সেস মেমোরি (র্যাম) যদিও র্যাম মডিউলটিকে পৃথকভাবে অ্যাড্রেসেবল সিকোয়েন্সিয়াল, রিড-রাইট, 16-বিট মেমরি রেজিস্টারের একটি অবিচ্ছিন্ন রৈখিক অ্যারে হিসাবেও দেখা হয়, তবে এটি কার্যকরীভাবে অ্যাড্রেস রেঞ্জ দ্বারা তিনটি বিভাগে সংগঠিত হয়। 0 (0x000) থেকে 16383 (0x3এফএফএফ) পর্যন্ত ঠিকানাগুলিতে প্রচলিত 16-বিট, রিড-রাইট রেজিস্টার রয়েছে এবং এগুলি সাধারণ-উদ্দেশ্যমূলক প্রোগ্রাম ডেটা স্টোরেজ হিসাবে ব্যবহারের জন্য। 16384 (0x4000) থেকে 24575 (0x5এফএফএফ) পর্যন্ত ঠিকানাগুলিতে রেজিস্টারগুলি মূলত ডেটা র্যামের মতো, তবে এগুলি একটি অন্তর্নির্মিত স্ক্রিন আই/ও সাবসিস্টেম দ্বারা ব্যবহারের জন্যও মনোনীত করা হয়। এই পরিসরের ঠিকানাগুলিতে লেখা তথ্য কম্পিউটারের ভার্চুয়াল 256 x 512 স্ক্রিনে আউটপুট উৎপাদনের পার্শ্বপ্রতিক্রিয়া রয়েছে (আই/ও দেখুন)। যদি কোনও প্রোগ্রামের স্ক্রিন আউটপুটের প্রয়োজন না হয়, তবে এই পরিসরের রেজিস্টারগুলি সাধারণ প্রোগ্রাম ডেটার জন্য ব্যবহার করা যেতে পারে। 24576 (0x6000)-এ র্যাম অ্যাড্রেস স্পেসের চূড়ান্ত ঠিকানায় একটি একক এক শব্দের রেজিস্টার রয়েছে যার বর্তমান মান হ্যাক এমুলেটর প্রোগ্রাম হোস্টিং কম্পিউটারের সাথে সংযুক্ত একটি কীবোর্ডের আউটপুট দ্বারা নিয়ন্ত্রিত হয়। এই কীবোর্ড মেমরি ম্যাপ রেজিস্টারটি শুধুমাত্র পাঠযোগ্য (আই/ও দেখুন)। 24577 (0x6001) থেকে 32767 (0x7এফএফএফ)-এর মধ্যে ডেটা মেমরি ঠিকানাগুলি অবৈধ। নির্বাচিত র্যাম মেমরি রেজিস্টারের অবস্থা পরিবর্তনগুলিও সিস্টেম ক্লক সিগন্যাল দ্বারা সমন্বিত হয়। সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) যেমনটি সহচিত্রটিতে দেখানো হয়েছে, হ্যাক কম্পিউটার সেন্ট্রাল প্রসেসিং ইউনিট (সিপিইউ) অভ্যন্তরীণ কাঠামো সহ একটি সমন্বিত লজিক ইউনিট। এটি সহজ, বাণিজ্যিকভাবে উপলব্ধ সিপিইউগুলিতে পাওয়া অনেকগুলি ফাংশন সরবরাহ করে। সিপিইউ-এর সবচেয়ে জটিল উপাদান হল গাণিতিক লজিক ইউনিট (এএলইউ) যা কম্পিউটারের গণনামূলক কার্যকারিতা প্রদান করে। এএলইউ একটি সমন্বিত লজিক ডিভাইস যার দুটি 16-বিট ইনপুট অপারেন্ড এবং একটি একক 16-বিট আউটপুট রয়েছে। অপারেন্ডগুলি থেকে আউটপুট হিসাবে উত্পাদিত গণনাটি এ. এল. ইউ-তে ছয়টি ক্রমযুক্ত, একক-বিট ইনপুটগুলির একটি সেট দ্বারা নির্দিষ্ট করা হয়। এএলইউ দুটি একক-বিট স্ট্যাটাস ফ্ল্যাগও নির্গত করে যা নির্দেশ করে যে গণনার ফলাফল শূন্য (জেডআর ফ্ল্যাগ) নাকি ঋণাত্মক (এনজি ফ্ল্যাগ)। সিপিইউতে ডি এবং এ লেবেলযুক্ত দুটি 16-বিট রেজিস্টার রয়েছে। ডি (ডেটা) রেজিস্টার একটি সাধারণ উদ্দেশ্যের রেজিস্টার যার বর্তমান মান সর্বদা এএলইউ এক্স অপারেন্ড সরবরাহ করে, যদিও কিছু নির্দেশের জন্য এর মান উপেক্ষা করা হয়। যদিও এ (ঠিকানা) রেজিস্টার কোনও নির্দেশ দ্বারা নির্দেশিত হলে এএলইউ-কে ওয়াই অপারেন্ড হিসাবে তার বর্তমান মান প্রদান করতে পারে, তবে এর মান ডেটা মেমরি অ্যাড্রেসিংয়ের জন্য এবং নির্দেশাবলীর নির্দেশাবলীর নির্দেশাবলীর লক্ষ্য ঠিকানা হিসাবেও ব্যবহার করা যেতে পারে। এই ফাংশনটি সহজতর করার জন্য, এ রেজিস্টারটি সরাসরি এম হিসাবে মনোনীত একটি "সিউডো-রেজিস্টার" এর সাথে যুক্ত যা হার্ডওয়্যারে স্পষ্টভাবে প্রয়োগ করা হয় না। এই এম রেজিস্টারটি তাই এ রেজিস্টারে থাকা বর্তমান মানের ঠিকানা সহ র্যামের অন্তর্ভুক্ত মানকে উপস্থাপন করে। সিপিইউ-এর চূড়ান্ত গুরুত্বপূর্ণ উপাদান হল প্রোগ্রাম কাউন্টার (পিসি) রেজিস্টার। পিসি একটি 16-বিট বাইনারি কাউন্টার যার নিম্ন 15 বিট কার্যকর করার জন্য পরবর্তী নির্দেশের নির্দেশ স্মৃতিতে ঠিকানা নির্দিষ্ট করে। শাখা নির্দেশ দ্বারা অন্যথায় নির্দেশিত না হলে, পিসি প্রতিটি ঘড়ি চক্রের শেষে তার মান বৃদ্ধি করে। সিপিইউতে প্রোগ্রাম নিয়ন্ত্রণের অধীনে, কম্পিউটারের নির্দেশ কার্যকর করার ক্রম পরিবর্তন করার যুক্তিও অন্তর্ভুক্ত রয়েছে, পিসিটিকে একটি অ-ক্রমিক মান নির্ধারণ করে। পিসি একটি একক-বিট রিসেট ইনপুটও প্রয়োগ করে যা পিসি মানকে 0 (0x0000) এ শুরু করে যখন এটি লজিক 0 থেকে লজিক 1 এবং পিছনে সাইকেল করা হয়। অনেক প্রকৃত সিপিইউ ডিজাইনের বিপরীতে, সিপিইউ বাহ্যিক বা অভ্যন্তরীণ বাধা বা ফাংশন কলগুলির জন্য সমর্থন বাস্তবায়নের জন্য কোনও প্রোগ্রাম অ্যাক্সেসযোগ্য হার্ডওয়্যার প্রক্রিয়া সরবরাহ করা হয় না। বাহ্যিক ইনপুট এবং আউটপুট (আই/ও) হ্যাক কম্পিউটার আই/ও-তে একটি মেমরি-ম্যাপ পদ্ধতি ব্যবহার করে। একটি ভার্চুয়াল 256 x 512 স্ক্রিনে বিটম্যাপ করা, কালো এবং সাদা আউটপুট 24575 (0x5এফএফএফ) এর মাধ্যমে ডেটা মেমরি অবস্থান 16384 (0x4000)-এ পছন্দসই আউটপুটের একটি বিটম্যাপ লিখে কার্যকর করা হয়। এই অ্যাড্রেস রেঞ্জের ডেটা শব্দগুলিকে কম্পিউটার এমুলেটরের ভার্চ্যুয়াল স্ক্রিনে একক পিক্সেলের কালো/সাদা অবস্থার প্রতিনিধিত্বকারী প্রতিটি বিট মান সহ বিটের রৈখিক অ্যারে হিসাবে দেখা হয়। পর্দার র্যাম বিভাগের প্রথম মেমরি ঠিকানায় শব্দের সবচেয়ে কম উল্লেখযোগ্য অংশটি পর্দার উপরের বাম কোণে পিক্সেলটি 0 হলে সাদা এবং 1 হলে কালো করে সেট করে। প্রথম শব্দের পরবর্তী-সবচেয়ে উল্লেখযোগ্য বিট ডানদিকে পরবর্তী পিক্সেলকে নিয়ন্ত্রণ করে, ইত্যাদি। প্রথম 512-পিক্সেল সারিটি স্ক্রিন মেমরির প্রথম 32টি শব্দের দ্বারা বর্ণনা করার পরে, ম্যাপিংটি পরবর্তী 32টি শব্দের সাথে দ্বিতীয় সারির জন্য একইভাবে অব্যাহত থাকে। কম্পিউটারের বাহ্যিক লজিক স্ক্রিন র্যাম মেমরি ম্যাপ বিভাগটি পড়ে এবং ভার্চুয়াল স্ক্রিনটি আপডেট করে। যদি সিপিইউ এমুলেটর প্রোগ্রাম হোস্টিং করা কম্পিউটারের সাথে একটি কীবোর্ড সংযুক্ত থাকে, তবে এমুলেটর 24576 (0x6000) র্যাম ঠিকানায় কীবোর্ড রেজিস্টারে প্রোগ্রাম কার্যকর করার সময় ডিপ্রেস করা কী-এর সাথে সম্পর্কিত একটি 16-বিট বিট স্ক্যান কোড রাখে। যদি কোনও কী ডিপ করা না থাকে, তবে এই রেজিস্টারে মান 0 থাকে। কীবোর্ড সক্রিয়/নিষ্ক্রিয় করতে এমুলেটর একটি টগল বোতাম সরবরাহ করে। এনকোডিং স্কিমটি মুদ্রণযোগ্য অক্ষরের জন্য ASCII এনকোডিংকে নিবিড়ভাবে অনুসরণ করে। শিফট কী-এর প্রভাবকে সাধারণত সম্মান করা হয়। কোডগুলি প্রায়শই একটি স্ট্যান্ডার্ড পিসি কীবোর্ডে উপস্থিত অন্যান্য কীগুলির জন্যও সরবরাহ করা হয়; উদাহরণস্বরূপ, দিকনির্দেশ নিয়ন্ত্রণ কী (,,,,,) এবং এফএন কী। অপারেটিং চক্র সিপিইউ এবং মেমরি ইউনিটগুলির ধাপে ধাপে অপারেশন একটি ঘড়ি দ্বারা নিয়ন্ত্রিত হয় যা হার্ডওয়্যার সিমুলেটর এবং কম্পিউটার এমুলেটর প্রোগ্রাম উভয়ের সাথে অন্তর্নির্মিত। একটি ঘড়ির চক্রের শুরুতে প্রোগ্রাম কাউন্টারের বর্তমান মান দ্বারা নির্গত রম ঠিকানায় নির্দেশটি ডিকোড করা হয়। নির্দেশে নির্দিষ্ট এএলইউ অপারেন্ডগুলি যেখানে প্রয়োজন সেখানে মার্শাল করা হয়। নির্দিষ্ট গণনা এএলইউ দ্বারা সম্পাদিত হয় এবং উপযুক্ত স্ট্যাটাস ফ্ল্যাগগুলি সেট করা হয়। নির্দেশ দ্বারা নির্দিষ্ট হিসাবে গণনার ফলাফল সংরক্ষণ করা হয়। অবশেষে, প্রোগ্রাম কাউন্টারটি পরবর্তী প্রয়োজনীয় প্রোগ্রাম নির্দেশের মান অনুযায়ী আপডেট করা হয়। যদি বর্তমান নির্দেশ দ্বারা কোনও শাখা নির্দিষ্ট না করা হয়, তাহলে পিসি মান কেবল বৃদ্ধি করা হয়। যদি শাখা নির্দিষ্ট করা থাকে, পিসিটি (এ রেজিস্টার থেকে) পরবর্তী নির্দেশ কার্যকর করার ঠিকানা সহ লোড করা হয়। চক্রটি তখন বর্তমান পিসি মান ব্যবহার করে পুনরাবৃত্তি করে। হার্ভার্ড মেমোরি আর্কিটেকচার মডেলের কারণে, হ্যাক কম্পিউটারটি বর্তমান নির্দেশ কার্যকর করার জন্য এবং একটি একক, দুই-অংশের ঘড়ি চক্রে পরবর্তী নির্দেশ "আনয়ন" করার জন্য ডিজাইন করা হয়েছে। হার্ডওয়্যার সিমুলেটর এবং সিপিইউ এমুলেটর উভয়ের একটি নিয়ন্ত্রণ উপাদান দ্বারা ঘড়ির গতি পরিবর্তিত হতে পারে। নির্বাচিত গতি থেকে স্বাধীনভাবে, প্রতিটি নির্দেশ সম্পূর্ণরূপে একটি চক্রে কার্যকর করা হয়। ব্যবহারকারী একটি প্রোগ্রামের মাধ্যমে একক ধাপেও যেতে পারেন। রম-এ লোড করা একটি প্রোগ্রামের এক্সিকিউশন সিপিইউ-এর রিসেট বিট দ্বারা নিয়ন্ত্রিত হয়। যদি রিসেট বিটের মান 0 হয়, তবে উপরে বর্ণিত অপারেটিং চক্র অনুযায়ী এক্সিকিউশন এগিয়ে যায়। রিসেট বিটটি 1-এ সেট করলে পিসি 0-তে সেট হয়। রিসেট বিটের মান শূন্যে সেট করার পরে প্রথম নির্দেশে বর্তমান প্রোগ্রামটি কার্যকর করা শুরু হয়; তবে, র্যাম পুনরায় সেট করার আগের যে কোনও ক্রিয়াকলাপের মান ধারণ করে। কোনও ধরনের ইন্টারাপ্টের জন্য কোনও হার্ডওয়্যার বা মেশিন ল্যাঙ্গুয়েজ সমর্থন নেই। রম মেমরিতে সঞ্চিত ডেটা প্রকারের মানগুলি অবশ্যই ইনস্ট্রাকশন সেট আর্কিটেকচার বিভাগে বর্ণিত হ্যাক মেশিনের ভাষার বৈধ নির্দেশাবলীর প্রতিনিধিত্ব করবে। যে কোনও 16-বিট মান র্যাম-এ সংরক্ষণ করা যেতে পারে। র্যাম-এ সঞ্চিত ডেটা প্রকারের মান তার অবস্থান এবং/অথবা একটি প্রোগ্রামের মধ্যে এর ব্যবহার দ্বারা অনুমান করা হয়। প্রাথমিক হার্ডওয়্যার সমর্থিত তথ্য প্রকার হল 16-বিট স্বাক্ষরিত পূর্ণসংখ্যা, যা 2-এর পরিপূরক বিন্যাসে উপস্থাপিত হয়। স্বাক্ষরিত পূর্ণসংখ্যার পরিসীমা-32768 থেকে 32767 পর্যন্ত। র্যামের একটি মানের নিচের 15 বিটগুলিও পয়েন্টারের অর্থে রম বা র্যামের একটি ঠিকানা উপস্থাপন করতে পারে। স্ক্রিন আই/ও-এর জন্য নির্ধারিত র্যাম মেমরি রেজিস্টারের মানগুলির জন্য, মানটি কম্পিউটারের স্বাধীন আই/ও সাবসিস্টেম দ্বারা 256 সারি x 512 কলামের ভার্চুয়াল স্ক্রিনের 16 পিক্সেল মানচিত্র হিসাবে ব্যাখ্যা করা হবে যদি স্ক্রিনটি "চালু" থাকে। কীবোর্ড স্মৃতিতে কোডের মান প্রোগ্রামগতভাবে পড়া যেতে পারে এবং একটি প্রোগ্রাম দ্বারা ব্যবহারের জন্য ব্যাখ্যা করা যেতে পারে। ফ্লোটিং-পয়েন্ট প্রকারের জন্য কোনও হার্ডওয়্যার সমর্থন নেই। নির্দেশ সেট আর্কিটেকচার (আই. এস. এ) এবং মেশিন ল্যাঙ্গুয়েজ হ্যাক কম্পিউটারের নির্দেশ সেট আর্কিটেকচার (আই. এস. এ) এবং উদ্ভূত মেশিন ল্যাঙ্গুয়েজ অন্যান্য অনেক স্থাপত্যের তুলনায় বিরল। যদিও এ. এল. ইউ দ্বারা একটি গণনা নির্দিষ্ট করতে ব্যবহৃত 6টি বিট 64টি স্বতন্ত্র নির্দেশের অনুমতি দিতে পারে, হ্যাক কম্পিউটারের আই. এস. এ-তে শুধুমাত্র 18টি আনুষ্ঠানিকভাবে প্রয়োগ করা হয়। যেহেতু হ্যাক কম্পিউটার হার্ডওয়্যারের পূর্ণসংখ্যা গুণন (এবং বিভাজন) বা ফাংশন কলগুলির জন্য সরাসরি সমর্থন নেই, তাই এই ক্রিয়াকলাপগুলির জন্য আইএসএ-তে কোনও সংশ্লিষ্ট মেশিন ভাষা নির্দেশাবলী নেই। হ্যাক মেশিনের ভাষায় মাত্র দুই ধরনের নির্দেশাবলী রয়েছে, প্রতিটি 16টি বাইনারি সংখ্যায় এনকোড করা। এ-নির্দেশাবলী নির্দেশাবলী যার সবচেয়ে উল্লেখযোগ্য বিট হল "0", তাকে এ-নির্দেশাবলী বা ঠিকানা নির্দেশাবলী বলা হয়। এ-নির্দেশটি নিম্নরূপ বিট-ফিল্ড এনকোড করা হয়ঃ 0b14b13b12b11b10b9b8b7b6b5b4b3b2b1b0 0-একটি এ-নির্দেশের সবচেয়ে উল্লেখযোগ্য বিট হল "0" b14-b0-এই বিটগুলি 0 থেকে 32767 দশমিক পরিসরে একটি অ-নেতিবাচক পূর্ণসংখ্যার বাইনারি উপস্থাপনা প্রদান করে যখন এই নির্দেশটি কার্যকর করা হয়, তখন বাকি 15টি বিট বাম-শূন্য বর্ধিত হয় এবং সিপিইউর এ-রেজিস্টারে লোড করা হয়। পার্শ্বপ্রতিক্রিয়া হিসাবে, সেই মান দ্বারা প্রতিনিধিত্ব করা ঠিকানা সহ র্যাম রেজিস্টারটি পরবর্তী ঘড়ির চক্রে পরবর্তী পড়া/লেখার ক্রিয়ার জন্য সক্ষম করা হয়। "ওহবকজুহি জি/রেফ = = = সি-নির্দেশাবলী = = = অন্য নির্দেশের ধরন, যা সি-নির্দেশাবলী (গণনার নির্দেশাবলী) নামে পরিচিত, সবচেয়ে গুরুত্বপূর্ণ বিট হিসাবে" 1 "রয়েছে। অবশিষ্ট 15টি বিট নির্দিষ্ট গণনার ফলাফলের জন্য অপারেন্ড, সম্পাদিত গণনা এবং সংরক্ষণের অবস্থান নির্ধারণের জন্য বিট-ফিল্ড এনকোড করা হয়। এই নির্দেশটি সাম্প্রতিকতম গণনার ফলাফলের উপর ভিত্তি করে একটি প্রোগ্রাম শাখাও নির্দিষ্ট করতে পারে। সি-নির্দেশটি নিম্নরূপ বিট-ফিল্ড এনকোড করা হয়ঃ 1x1x0ac5c4c3c2c1c0d2d1d0j2j1j0 1-একটি সি-নির্দেশের সবচেয়ে উল্লেখযোগ্য বিট হল "1" x1x0-এই বিটগুলি সিপিইউ দ্বারা উপেক্ষা করা হয় এবং, প্রচলিত রীতি অনুসারে, প্রতিটি সর্বদা "1" এ সেট করা হয়-এই বিটটি যখন গণনা c0-c5-এ ব্যবহৃত হয় তখন ALU-এর "y" অপারেন্ডের উৎস নির্দিষ্ট করে-এই ছয়টি নিয়ন্ত্রণ বিট ALU d2-d0 দ্বারা সঞ্চালিত অপারেন্ড এবং গণনা নির্দিষ্ট করে-এই তিনটি বিট বর্তমান সংরক্ষণের জন্য গন্তব্য (গুলি) নির্দিষ্ট করে। এই টেবিলগুলিতে, এ বর্তমানে এ-রেজিস্টার ডি-তে থাকা মানকে উপস্থাপন করে বর্তমানে ডি-রেজিস্টার এম-এ থাকা মানকে উপস্থাপন করে যা বর্তমানে ডেটা মেমরি রেজিস্টারে থাকা মানকে উপস্থাপন করে যার ঠিকানা এ-রেজিস্টারে রয়েছে; অর্থাৎ, এম = = র্যাম [এ] অ্যাসেম্বলি ভাষা হ্যাক কম্পিউটারে হার্ডওয়্যার প্ল্যাটফর্মের জন্য প্রোগ্রাম তৈরি করার জন্য একটি পাঠ্য-ভিত্তিক অ্যাসেম্বলি ভাষা রয়েছে যা হ্যাক কম্পিউটার আইএসএ প্রয়োগ করে। হ্যাক অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামগুলি ফাইলের নাম এক্সটেনশন. "ASM" সহ টেক্সট ফাইলগুলিতে সংরক্ষণ করা যেতে পারে। হ্যাক অ্যাসেম্বলি ভাষার উৎস ফাইলগুলি কেস সংবেদনশীল। পাঠ্যের প্রতিটি লাইনে নিম্নলিখিত উপাদানগুলির মধ্যে একটি থাকেঃ ফাঁকা লাইন মন্তব্য লেবেল ঘোষণা (ঐচ্ছিক শেষ-লাইন মন্তব্য সহ) এ-নির্দেশ (ঐচ্ছিক শেষ-লাইন মন্তব্য সহ) সি-নির্দেশ (ঐচ্ছিক শেষ-লাইন মন্তব্য সহ) এই লাইনের প্রকারগুলির প্রত্যেকটির একটি নির্দিষ্ট বাক্য গঠন রয়েছে এবং এতে পূর্বনির্ধারিত বা ব্যবহারকারী সংজ্ঞায়িত প্রতীক বা সংখ্যাসূচক ধ্রুবক থাকতে পারে। ফাঁকা লাইন এবং মন্তব্যগুলি সমাবেশকারী দ্বারা উপেক্ষা করা হয়। লেবেল ঘোষণা, এ-নির্দেশাবলী এবং সি-নির্দেশাবলী, যেমন নীচে সংজ্ঞায়িত করা হয়েছে, কোনও অভ্যন্তরীণ সাদা-স্থান অক্ষর অন্তর্ভুক্ত নাও করতে পারে, যদিও সাদা স্থানের অগ্রবর্তী বা পিছনের অংশ অনুমোদিত (এবং উপেক্ষা করা হয়েছে)। মন্তব্য দুটি অক্ষরের ক্রম "//" দিয়ে শুরু হওয়া যে কোনও লেখা একটি মন্তব্য। মন্তব্যগুলি শুধুমাত্র একটি সোর্স কোড লাইনে প্রদর্শিত হতে পারে, অথবা অন্য কোনও প্রোগ্রাম সোর্স লাইনের শেষেও স্থাপন করা যেতে পারে। মন্তব্য শনাক্তকারী অক্ষরের ক্রম অনুসরণ করে লাইনের শেষ পর্যন্ত সমস্ত পাঠ্য অ্যাসেম্বলার দ্বারা সম্পূর্ণরূপে উপেক্ষা করা হয়; ফলস্বরূপ, তারা কোনও মেশিন কোড তৈরি করে না। প্রতীক এবং সংখ্যাসূচক ধ্রুবক হ্যাক অ্যাসেম্বলি ভাষা বিভিন্ন নির্দিষ্ট উদ্দেশ্যে বর্ণানুক্রমিক প্রতীক ব্যবহারের অনুমতি দেয়। একটি প্রতীক বর্ণানুক্রমিক (উচ্চ এবং নিম্ন অক্ষর) বা সংখ্যাসূচক সংখ্যার যে কোনও ক্রম হতে পারে। প্রতীকগুলিতে নিম্নলিখিত যে কোনও অক্ষর থাকতে পারেঃ আন্ডার বার ("_"), পিরিয়ড ("."), ডলার চিহ্ন ("$"), এবং কোলন (":")। প্রতীকগুলি অঙ্কের অক্ষর দিয়ে শুরু নাও হতে পারে। প্রতীকগুলি কেস সংবেদনশীল। ব্যবহারকারী সংজ্ঞায়িত চিহ্নগুলি পরিবর্তনশীল নাম এবং লেবেল তৈরি করতে ব্যবহৃত হয় (নীচে দেখুন)। হ্যাক অ্যাসেম্বলি ল্যাঙ্গুয়েজ অ্যাসেম্বলার অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামে ব্যবহারের জন্য কিছু পূর্বনির্ধারিত প্রতীককে স্বীকৃতি দেয়। R0, R1,., R15 চিহ্নগুলি যথাক্রমে 0 থেকে 15 পূর্ণসংখ্যার সাথে আবদ্ধ। এই চিহ্নগুলি সাধারণ উদ্দেশ্যের রেজিস্টারগুলির প্রতিনিধিত্ব করে এবং প্রতীকগুলির মানগুলি তাই ডেটা মেমরি ঠিকানাগুলি 0 থেকে 15 উপস্থাপন করে। পূর্বনির্ধারিত প্রতীক স্ক্রিন এবং কেবিডি মেমরি-ম্যাপ করা ভার্চুয়াল স্ক্রিন আউটপুট (16384) এবং কীবোর্ড ইনপুট (24756)-এর সূচনার ডেটা মেমরি ঠিকানা প্রতিনিধিত্ব করার জন্যও নির্দিষ্ট করা হয়েছে। অপারেটিং সিস্টেম সফ্টওয়্যার স্ট্যাক তৈরিতে আরও কয়েকটি চিহ্ন (এস. পি, এল. সি. এল, এ. আর. জি, এই এবং সেই) ব্যবহার করা হয়। 0 থেকে 32,767 পরিসরে একটি অ-ঋণাত্মক, দশমিক ধ্রুবককে উপস্থাপন করতে দশমিক (0-9) সংখ্যার একটি স্ট্রিং ব্যবহার করা যেতে পারে। ঋণাত্মক সংখ্যা নির্দেশ করার জন্য বিয়োগ চিহ্ন ব্যবহার করার অনুমতি নেই। বাইনারি বা অষ্টক উপস্থাপনা সমর্থিত নয়। ভেরিয়েবল ব্যবহারকারী সংজ্ঞায়িত চিহ্নগুলি একটি অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামে ভেরিয়েবলগুলি উপস্থাপন করার জন্য তৈরি করা যেতে পারে; অর্থাৎ, একটি নামযুক্ত র্যাম রেজিস্টার। প্রতীকটি সমাবেশের সময় সমাবেশকারী দ্বারা নির্বাচিত একটি র্যাম ঠিকানার সাথে আবদ্ধ থাকে। অতএব, অ্যাসেম্বলি ভাষার সোর্স কোডে উপস্থিত হওয়ার সময় ভেরিয়েবলগুলিকে অবশ্যই ঠিকানা হিসাবে বিবেচনা করা উচিত। ভ্যারিয়েবলগুলি অ্যাসেম্বলি ল্যাঙ্গুয়েজ সোর্স কোডে অন্তর্নিহিতভাবে সংজ্ঞায়িত করা হয় যখন সেগুলি একটি এ-নির্দেশে প্রথম উল্লেখ করা হয়। যখন সোর্স কোডটি অ্যাসেম্বলার দ্বারা প্রক্রিয়া করা হয়, তখন পরিবর্তনশীল প্রতীকটি ঠিকানা 16 থেকে শুরু করে একটি অনন্য ধনাত্মক পূর্ণসংখ্যার মানের সাথে আবদ্ধ থাকে। ঠিকানাগুলি সোর্স কোডে তাদের প্রথম উপস্থিতির ক্রমে ক্রমানুসারে পরিবর্তনশীল প্রতীকগুলির সাথে আবদ্ধ থাকে। প্রচলিত নিয়ম অনুসারে, ব্যবহারকারী-সংজ্ঞায়িত প্রতীকগুলি যা প্রোগ্রামের চলকগুলি সনাক্ত করে তা সমস্ত ছোট হাতের অক্ষরে লেখা হয়। লেবেল লেবেলগুলি হল বাম "(" এবং ডান ") বন্ধনী দ্বারা সীমাবদ্ধ প্রতীক। এগুলি একটি পৃথক সোর্স প্রোগ্রাম লাইনে সংজ্ঞায়িত করা হয় এবং অ্যাসেম্বলার দ্বারা সোর্স কোডে পরবর্তী নির্দেশের নির্দেশ মেমরি অবস্থানের ঠিকানার সাথে আবদ্ধ থাকে। লেবেলগুলি শুধুমাত্র একবার সংজ্ঞায়িত করা যেতে পারে, তবে এগুলি প্রোগ্রামের মধ্যে যে কোনও জায়গায় একাধিকবার ব্যবহার করা যেতে পারে, এমনকি যে লাইনের উপর সেগুলি সংজ্ঞায়িত করা হয়েছে তার আগেই। প্রচলিত নিয়ম অনুসারে, লেবেলগুলি অল-ক্যাপগুলিতে প্রকাশ করা হয়। এগুলি শাখা সি-নির্দেশাবলীর লক্ষ্য ঠিকানা সনাক্ত করতে ব্যবহৃত হয়। এ-নির্দেশাবলী এ-নির্দেশের বাক্যবিন্যাস "@xxxx" রয়েছে, যেখানে এক্সএক্সএক্স হয় 0 থেকে 32767 পরিসরে একটি সংখ্যাসূচক দশমিক ধ্রুবক, একটি লেবেল, বা একটি পরিবর্তনশীল (পূর্বনির্ধারিত বা ব্যবহারকারী সংজ্ঞায়িত)। যখন এই নির্দেশটি কার্যকর করা হয়, তখন এ রেজিস্টার এবং এম সিউডো-রেজিস্টারের মান "XXX" দ্বারা প্রতিনিধিত্ব করা একটি 15-বিট বাইনারি মান নির্ধারণ করে। 15-বিট মানটি বাম-শূন্য যা এ রেজিস্টারে 16-বিট পর্যন্ত প্রসারিত। এ-নির্দেশ তিনটি উদ্দেশ্যে ব্যবহার করা যেতে পারে। প্রোগ্রাম নিয়ন্ত্রণের অধীনে কম্পিউটারে একটি (অ-নেতিবাচক) সংখ্যাসূচক মান প্রবর্তনের একমাত্র উপায়; অর্থাৎ, এটি প্রোগ্রাম ধ্রুবক তৈরি করতে ব্যবহার করা যেতে পারে। দ্বিতীয়ত, এটি একটি সি-নির্দেশ দ্বারা পরবর্তী রেফারেন্সের জন্য এম সিউডো-রেজিস্টার প্রক্রিয়া ব্যবহার করে একটি র্যাম মেমরির অবস্থান নির্দিষ্ট করতে ব্যবহৃত হয়। পরিশেষে, একটি সি-নির্দেশ যা একটি শাখা নির্দিষ্ট করে, শাখা লক্ষ্য ঠিকানা হিসাবে এ রেজিস্টারের বর্তমান মান ব্যবহার করে। এ-নির্দেশটি সাধারণত একটি লেবেলের রেফারেন্স দ্বারা শাখা নির্দেশের আগে সেই লক্ষ্য ঠিকানা নির্ধারণ করতে ব্যবহৃত হয়। সি-নির্দেশাবলী হ্যাক কম্পিউটারের এএলইউ গণনা ইঞ্জিন এবং প্রোগ্রাম প্রবাহ নিয়ন্ত্রণ ক্ষমতাকে নির্দেশ করে। নির্দেশের বাক্যবিন্যাস তিনটি ক্ষেত্র দ্বারা সংজ্ঞায়িত করা হয়, যা "কম্প", "ডেস্ট" এবং "জাম্প" হিসাবে উল্লেখ করা হয়। প্রতিটি সি-নির্দেশে কম্প ক্ষেত্র প্রয়োজন। সি-নির্দেশের বাক্যবিন্যাস হল "ডেস্ট = কম্প; জাম্প"। "=" এবং ";" অক্ষরগুলি নির্দেশের ক্ষেত্রগুলি সীমাবদ্ধ করতে ব্যবহৃত হয়। যদি গন্তব্য ক্ষেত্রটি ব্যবহার না করা হয়, তবে "=" অক্ষরটি বাদ দেওয়া হয়। যদি লাফ দেওয়ার ক্ষেত্রটি ব্যবহার না করা হয়, তবে ";" অক্ষরটি বাদ দেওয়া হয়। সি-নির্দেশ কোনও অভ্যন্তরীণ স্থানের অনুমতি দেয় না। কম্প ক্ষেত্রটি অবশ্যই উপরের সারণিতে সংজ্ঞায়িত 28টি নথিভুক্ত স্মরণীয় কোডের মধ্যে একটি হতে হবে। এই কোডগুলিকে স্বতন্ত্র একক হিসাবে বিবেচনা করা হয়; এগুলি অবশ্যই কোনও অভ্যন্তরীণ স্থান ছাড়াই সমস্ত ক্যাপগুলিতে প্রকাশ করা উচিত। এটি উল্লেখ করা হয়েছে যে 6টি এএলইউ নিয়ন্ত্রণ বিট সম্ভাব্যভাবে 64টি গণনামূলক ফাংশন নির্দিষ্ট করতে পারে; তবে, টেবিলে উপস্থাপিত শুধুমাত্র 18টি অ্যাসেম্বলার দ্বারা স্বীকৃতির জন্য আনুষ্ঠানিকভাবে নথিভুক্ত করা হয়েছে। নির্দিষ্ট গণনার ফলাফল সংরক্ষণের জন্য এক বা একাধিক অবস্থান নির্দিষ্ট করতে ডেস্ট ক্ষেত্রটি ব্যবহার করা যেতে পারে। যদি এই ক্ষেত্রটি বাদ দেওয়া হয়, "=" ডিলিমিটারের সাথে, গণনা করা মানটি সংরক্ষণ করা হয় না। অনুমোদিত সঞ্চয়স্থানের অবস্থানের সংমিশ্রণগুলি উপরের সারণিতে সংজ্ঞায়িত স্মরণীয় কোড দ্বারা নির্দিষ্ট করা হয়েছে। পরবর্তী নির্দেশ কার্যকর করার জন্য রম-এ ঠিকানা নির্দিষ্ট করতে জাম্প ফিল্ড ব্যবহার করা যেতে পারে। যদি ";" ডিলিমিটার সহ ক্ষেত্রটি বাদ দেওয়া হয়, তবে বর্তমান নির্দেশ অনুসরণ করে অবিলম্বে নির্দেশটি কার্যকর করা অব্যাহত থাকে। নির্দিষ্ট শাখার শর্ত পূরণ হলে এ রেজিস্টারের বর্তমান মান দ্বারা রম-এ শাখার ঠিকানার লক্ষ্যমাত্রা প্রদান করা হয়। যদি শাখার শর্তটি ব্যর্থ হয়, তবে ROM-এ পরবর্তী নির্দেশের সাথে কার্যকর করা অব্যাহত থাকে। বর্তমান গণনার মানের উপর ভিত্তি করে ছয়টি ভিন্ন তুলনার জন্য স্মরণীয় কোড প্রদান করা হয়। উপরন্তু, একটি নিঃশর্ত শাখা সপ্তম বিকল্প হিসাবে প্রদান করা হয়। যেহেতু কম্প ক্ষেত্রটি সর্বদা সরবরাহ করা আবশ্যক, যদিও নিঃশর্ত শাখার জন্য মান প্রয়োজন হয় না, এই নির্দেশের বাক্য গঠন "0; জেএমপি" হিসাবে দেওয়া হয়। সমর্থিত শাখার শর্তগুলি উপরের সারণিতে নির্দিষ্ট করা হয়েছে। অ্যাসেম্বলার হ্যাক কম্পিউটারকে সমর্থনকারী বিনামূল্যে উপলব্ধ সফ্টওয়্যারের মধ্যে একটি কমান্ড লাইন অ্যাসেম্বলার অ্যাপ্লিকেশন রয়েছে। অ্যাসেম্বলার হ্যাক অ্যাসেম্বলি ল্যাঙ্গুয়েজ সোর্স টাইলস (*. এ. এস. এম) পড়ে এবং হ্যাক মেশিন ল্যাঙ্গুয়েজ আউটপুট ফাইল (*. হ্যাক) তৈরি করে। মেশিন ল্যাঙ্গুয়েজ ফাইলটিও একটি পাঠ্য ফাইল। এই ফাইলের প্রতিটি লাইন বাইনারি সংখ্যার একটি 16-অক্ষরের স্ট্রিং যা "ইন্সট্রাকশন সেট আর্কিটেকচার (আইএসএ) এবং মেশিন ল্যাঙ্গুয়েজ" বিভাগে বর্ণিত নির্দিষ্টকরণ অনুসারে সোর্স টেক্সট ফাইলের প্রতিটি সংশ্লিষ্ট এক্সিকিউটেবল লাইনের এনকোডিংকে উপস্থাপন করে। তৈরি করা ফাইলটি এমুলেটর ইউজার ইন্টারফেস দ্বারা প্রদত্ত একটি সুবিধার মাধ্যমে হ্যাক কম্পিউটার এমুলেটরে লোড করা যেতে পারে। নিম্নলিখিত অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামটি হ্যাক অ্যাসেম্বলি ভাষায় লেখা একটি টীকা দেওয়া উদাহরণ প্রোগ্রাম। এই প্রোগ্রামটি প্রথম পরপর 100টি পূর্ণসংখ্যার সমষ্টি করে এবং গণনার ফলাফলকে "যোগফল" নামে একটি ব্যবহারকারী-সংজ্ঞায়িত চলকের মধ্যে স্থাপন করে। এটি পুনরাবৃত্তির জন্য একটি "ওয়াইল" লুপ গঠন প্রয়োগ করে যদিও পূর্ণসংখ্যার মান 1 থেকে 100 এবং প্রতিটি পূর্ণসংখ্যাকে একটি "যোগফল" চলকের সাথে যুক্ত করে। ব্যবহারকারী-সংজ্ঞায়িত পরিবর্তনশীল "সি. এন. টি" লুপের মাধ্যমে বর্তমান পূর্ণসংখ্যার মান বজায় রাখে। এই প্রোগ্রামটি মেমরি-ম্যাপ করা আই/ও ব্যতীত হ্যাক কম্পিউটারের "নথিভুক্ত" সমাবেশ ভাষার ক্ষমতার সমস্ত বৈশিষ্ট্য চিত্রিত করে। হ্যাক অ্যাসেম্বলি ল্যাঙ্গুয়েজ সোর্স ফাইলের বিষয়বস্তু বোল্ড ফন্টে দ্বিতীয় কলামে দেখানো হয়েছে। লাইন নম্বরগুলি নিম্নলিখিত আলোচনায় রেফারেন্সের জন্য সরবরাহ করা হয়েছে তবে সোর্স কোডে উপস্থিত হয় না। অ্যাসেম্বলার দ্বারা উত্পাদিত হ্যাক মেশিন কোডটি পূর্ববর্তী কলামে নির্ধারিত রম ঠিকানা সহ শেষ কলামে দেখানো হয়েছে। মনে রাখবেন যে পূর্ণ-লাইন মন্তব্য, ফাঁকা লাইন এবং লেবেল সংজ্ঞা বিবৃতি কোনও মেশিন ভাষা কোড তৈরি করে না। এছাড়াও, সমাবেশ ভাষার নির্দেশ সম্বলিত প্রতিটি লাইনের শেষে প্রদত্ত মন্তব্যগুলি সমাবেশকারী দ্বারা উপেক্ষা করা হয়। অ্যাসেম্বলার আউটপুট, শেষ কলামে দেখানো হয়েছে, 16টি বাইনারি অক্ষরের একটি পাঠ্য স্ট্রিং, 16-বিট বাইনারি পূর্ণসংখ্যার উপস্থাপনা নয়। লক্ষ্য করুন যে নির্দেশের ক্রমটি এ-নির্দেশ, সি-নির্দেশ, এ-নির্দেশ, সি-নির্দেশের প্যাটার্ন অনুসরণ করে। এটি হ্যাক অ্যাসেম্বলি ল্যাঙ্গুয়েজ প্রোগ্রামগুলির জন্য সাধারণ। এ-নির্দেশ একটি ধ্রুবক বা মেমরি ঠিকানা নির্দিষ্ট করে যা পরবর্তী সি-নির্দেশে ব্যবহৃত হয়। এ-নির্দেশের তিনটি বৈচিত্রই চিত্রিত করা হয়েছে। লাইন 11-এ (@100), ধ্রুবক মান 100 এ রেজিস্টারে লোড করা হয়। এই মানটি 12 নং লাইনে (ডি = ডি-এ) লুপ শাখার অবস্থা পরীক্ষা করতে ব্যবহৃত মান গণনা করতে ব্যবহৃত হয়। যেহেতু লাইন 4 (@cnt) ব্যবহারকারী-সংজ্ঞায়িত পরিবর্তনশীল "সিএনটি"-এর প্রথম উপস্থিতি ধারণ করে, এই বিবৃতিটি প্রতীকটিকে পরবর্তী অব্যবহৃত র্যাম ঠিকানার সাথে আবদ্ধ করে। এই উদাহরণে, ঠিকানাটি 16, এবং সেই মানটি এ রেজিস্টারে লোড করা হয়। এছাড়াও, এম সিউডো-রেজিস্টারও এখন এই ঠিকানাটি উল্লেখ করে এবং র্যাম [16] কে সক্রিয় র্যাম মেমরির অবস্থান করা হয়। এ-নির্দেশের তৃতীয় ব্যবহার লাইন 21 (@LOOP)-এ দেখা যায়। এখানে নির্দেশটি রোম স্মৃতিতে একটি ঠিকানার প্রতিনিধিত্বকারী আবদ্ধ লেবেলের মানকে এ রেজিস্টার এবং এম সিউডো-রেজিস্টারে লোড করে। লাইন 22 (0; জে. এম. পি)-এর পরবর্তী নিঃশর্ত শাখা নির্দেশটি এম রেজিস্টার মানকে সিপিইউ-এর প্রোগ্রাম কাউন্টার রেজিস্টারে লোড করে যাতে লুপের শুরুতে নিয়ন্ত্রণ স্থানান্তর কার্যকর হয়। হ্যাক কম্পিউটার প্রোগ্রামের কার্যকারিতা বন্ধ করার জন্য কোনও মেশিন ভাষা নির্দেশ প্রদান করে না। প্রোগ্রামের শেষ দুটি লাইন (@END এবং 0; JMP) একটি অসীম লুপ শর্ত তৈরি করে যা হ্যাক অ্যাসেম্বলি প্রোগ্রামগুলি প্রচলিতভাবে CPU এমুলেটরে চালানোর জন্য ডিজাইন করা প্রোগ্রামগুলি শেষ করতে ব্যবহার করে। আরও দেখুন হেনেসি, জন এল., এবং প্যাটারসন, ডেভিড এ। (2019)। কম্পিউটার আর্কিটেকচারঃ একটি পরিমাণগত পদ্ধতি, 6ষ্ঠ সংস্করণ। কেমব্রিজ, ম্যাসাচুসেটসঃ মরগান কফম্যান পাবলিশার্স জাস্টিস, ম্যাথিউ। (2021)। কম্পিউটার আসলে কিভাবে কাজ করে। সান ফ্রান্সিসকো, ক্যালিফোর্নিয়াঃ স্টার্চ প্রেস নেই। ম্যালভিনো, অ্যালবার্ট পি, এবং ব্রাউন, জেরাল্ড এ। (1993)। ডিজিটাল কম্পিউটার ইলেকট্রনিক্স, 3য় সংস্করণ। নিউ ইয়র্ক, নিউ ইয়র্কঃ গ্লেনকো ম্যাকগ্রা-হিল নল, লিন্ডা এবং লোবার, জুলিয়া। (2019)। কম্পিউটার সংগঠন এবং স্থাপত্যের প্রয়োজনীয়তা। পঞ্চম সংস্করণ। বার্লিংটন, ম্যাসাচুসেটসঃ জোন্স এবং বার্টলেট লার্নিং। প্যাট, ইয়েল এন, এবং প্যাটেল, সঞ্জয় জে। (2020)। কম্পিউটিং সিস্টেমের পরিচিতিঃ বিটস এবং গেটস থেকে সি এবং বিয়ন্ড পর্যন্ত, তৃতীয় সংস্করণ। নিউ ইয়র্ক, নিউ ইয়র্কঃ ম্যাকগ্রা হিল এডুকেশন। পেটজোল্ড, চার্লস। (2009)। কোডঃ কম্পিউটার হার্ডওয়্যার এবং সফ্টওয়্যারের লুকানো ভাষা। রেডমন্ড, ওয়াশিংটনঃ মাইক্রোসফট প্রেস। স্কট, জন ক্লার্ক। (2009)। কিন্তু সেটা জানব কী করে? প্রত্যেকের জন্য কম্পিউটারের মৌলিক নীতিগুলি। ওল্ডসমার, ফ্লোরিডাঃ জন সি স্কট। হুইপল, রিচার্ড। (2019)। স্ক্র্যাচ থেকে নিজের কম্পিউটার তৈরি করুন। সিয়াটল, ওয়াশিংটনঃ অ্যামাজন কিন্ডল। রেফারেন্স কম্পিউটার