فهرست مطالب:
- مرحله 1: لیست قطعات
- مرحله 2: سلسله مراتب و کدهای زبان ماشین
- مرحله 3: آناتومی دستورالعمل BYOC-I
- مرحله 4: برنامه نویسی دستورالعمل کامپیوتر
- مرحله 5: آناتومی یک برنامه کامپیوتری
- مرحله 6: انتقال برنامه به حافظه و آزمایش
تصویری: کد نویسی و تست یک کامپیوتر به زبان ماشین: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
در این دستورالعمل ، به شما نحوه کد نویسی و آزمایش برنامه کامپیوتری به زبان ماشین را نشان خواهم داد. زبان ماشین زبان مادری کامپیوترها است. از آنجا که از رشته های 1s و 0s تشکیل شده است ، برای انسان به راحتی قابل درک نیست. برای حل این مشکل ، ابتدا برنامه ها را به زبان سطح بالا مانند C ++ یا Java کد می کنیم و سپس از برنامه های رایانه ای مخصوص برای ترجمه آنها به کامپیوترهای 1 و 0 استفاده می کنیم. یادگیری کد نویسی به زبان سطح بالا مطمئناً خالی از لطف نیست ، اما معرفی مختصر زبان ماشین می تواند بینش ارزشمندی در مورد نحوه کار کامپیوترها و افزایش قدردانی از این فناوری بسیار مهم را ارائه دهد.
برای کد نویسی و آزمایش یک برنامه زبان ماشین ، ما نیاز به دسترسی به یک رایانه بدون حاشیه داریم که زبان ماشین آن به راحتی قابل درک است. کامپیوترهای شخصی بسیار پیچیده هستند که حتی نمی توان آنها را در نظر گرفت. راه حل این است که از Logisim ، شبیه ساز منطق ، که بر روی رایانه شخصی اجرا می شود ، استفاده کنید. با Logisim ما می توانیم کامپیوتری را که نیازهای ما را برآورده می کند شبیه سازی کنیم. ویدئوی بالا ایده ای را در اختیار شما قرار می دهد که می توانیم با Logisim انجام دهیم.
برای طراحی رایانه ، من یکی از کتاب الکترونیکی Kindle خود را که کامپیوتر خودت را بساز - از خراش اقتباس کردم. من با رایانه BYOC که در آنجا توضیح داده شده شروع کردم و آن را به BYOC-I (I for Instructable) اصلی که در این دستورالعمل استفاده خواهیم کرد ، تغییر داد.
زبان ماشین BYOC-I ساده و قابل فهم است. شما نیازی به دانش خاصی در مورد کامپیوتر یا برنامه نویسی ندارید. همه چیز مورد نیاز یک ذهن کنجکاو و تمایل به یادگیری است
خواندن بیشتر
شاید تعجب کنید که چرا ما از "ماشین" برای توصیف رایانه در حالی که یک دستگاه مکانیکی نیست استفاده می کنیم. دلیل آن تاریخی است ؛ اولین دستگاه های محاسباتی مکانیکی متشکل از چرخ دنده و چرخ بودند. غزل آلن شرمن ، "این همه چرخ دنده بود" … فقط یک یا دو قرن پیش بود. اینجا درباره محاسبات اولیه بیشتر بخوانید.
مرحله 1: لیست قطعات
لیست قطعات کوتاه است. فقط این دو مورد مورد نیاز است ، هر دو رایگان بارگیری می شوند:
- "Logisim-win-2.7.1.exe"-Logisim یک شبیه ساز منطقی محبوب و آسان برای استفاده است. فایل اجرایی Logisim را از اینجا بارگیری کرده و در مکان مناسبی مانند دسکتاپ خود یک برش کوتاه ایجاد کنید. روی نماد Logisim دوبار کلیک کنید تا راه اندازی شود. توجه: Logisim از Java Runtime Package استفاده می کند که در اینجا قرار دارد. ممکن است از شما خواسته شود آن را بارگیری کنید.
- BYOC-I-Full.cir "-فایل مدار Logisim را در زیر بارگیری کنید.
Logisim را راه اندازی کرده و روی "File-Open" کلیک کرده و فایل BYOC-I-Full.cir را بارگذاری کنید. تصویر بالا محیط کار Logisim را نشان می دهد. BYOC-I با بلوک زیر مدار نشان داده شده است. به صورت خارجی دو ورودی Reset و Run و نمایشگرهای هگزادسیمال برای رجیسترها و حافظه برنامه BYOC-I متصل شده اند.
حافظه برنامه BYOC-I با یک برنامه ساده که از 1 تا 5 در A ثبت شده است ، از قبل بارگیری شده است. برای اجرای (اجرای) برنامه ، این مراحل را دنبال کنید.
مرحله 1 - بر روی ابزار Poke کلیک کنید. مکان نما باید به "انگشت" فشار دهنده تغییر کند. مرحله 2 - ورودی Reset را دوبار فشار دهید ، یکبار آن را به "1" و دوباره آن را به "0" تغییر دهید. با این کار BYOC -I بازنشانی می شود تا برنامه را در آدرس 0. شروع کنید. مرحله 3 - ورودی Run را یکبار فشار دهید تا آن را به "1" تغییر دهید. ثبت A باید تعداد تغییر از 1 به 5 و سپس تکرار را نشان دهد. مرحله 4 - اگر برنامه اجرا نشد ، کنترل -K را فشار دهید و باید شروع شود.
اگر می خواهید قابلیت های Logisim را بررسی کنید ، روی پیوند راهنما در نوار منو کلیک کنید. از آنجا می توانید Logisim "Tutorial" ، "User User" و "Library Reference" را کشف کنید. یک معرفی ویدیویی عالی در اینجا یافت می شود.
مرحله 2: سلسله مراتب و کدهای زبان ماشین
کامپیوتر BYOC-I وظایفی را بر اساس برنامه های نوشته شده به زبان ماشین انجام می دهد. برنامه های BYOC-I به نوبه خود متشکل از دستورالعمل هایی هستند که به ترتیب مشخص اجرا شده اند. هر دستورالعمل از کدهای طول ثابت تشکیل شده است که اجزای مختلف عملیاتی BYOC-I را نشان می دهند. در نهایت ، این کدها از رشته های 1 و 0 تشکیل شده اند که زبان ماشین را که BYOC-I در واقع اجرا می کند تشکیل می دهند.
برای توضیح ، ما با کد شروع می کنیم و به سطح برنامه می رویم. سپس یک برنامه ساده را کدگذاری می کنیم ، آن را در حافظه BYOC-I بارگذاری می کنیم و اجرا می کنیم.
کدها شامل تعداد ثابت دو رقمی (1 و 0) رقم یا بیت هستند. به عنوان مثال ، جدول زیر تمام کدهای ممکن (در مجموع 16) را برای کد 4 عرض عرض نشان می دهد. در کنار کد نشان داده شده است هگزا دسیمال (پایه 16) و معادل اعشاری. هگزادسیمال در ارجاع به مقادیر باینری استفاده می شود زیرا فشرده تر از دودویی است و تبدیل آن از دودویی آسان تر از اعشاری است. پیشوند "0x" به شما امکان می دهد عدد زیر را هگزادسیمال یا به طور خلاصه "شش ضلعی" بدانید.
دودویی - هگزادسیمال - دهدهی 10000 0x0000 00001 0x0001 10010 0x0002 20011 0x0003 30100 0x0004 40101 0x0005 50111 0x0007 71000 0x0008 81001 0x0009 91010 0x000A 101011 0x000B 111100 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000C 121101 0x000 C
عرض کد تعیین می کند که چند مورد را می توان نشان داد. همانطور که گفته شد ، کد گسترده 4 بیتی بالا می تواند تا 16 مورد (0 تا 15) را نشان دهد. یعنی 2 بار 2 چهار بار یا 2 تا 4 قدرت برابر 16 است. به طور کلی ، تعداد موارد قابل نمایش 2 عدد به توان نهم افزایش می یابد. در اینجا لیستی کوتاه از ظرفیت کد n-bit وجود دارد.
n - تعداد موارد 1 22 43 84 165 326 647 1288 256
عرض کد رایانه BYOC-I برای متناسب با تعداد مواردی که باید توسط کد نشان داده شوند انتخاب می شود. به عنوان مثال ، چهار نوع دستورالعمل وجود دارد ، بنابراین یک کد گسترده 2 بیتی مناسب است. در اینجا کدهای BYOC-I با توضیح مختصر هر یک آمده است.
کد نوع دستورالعمل (tt) چهار نوع دستورالعمل وجود دارد: (1) MVI - یک مقدار ثابت فوری 8 بیتی را به یک ثبت حافظه منتقل کنید. ثبت حافظه دستگاهی است که داده ها را برای محاسبه مورد استفاده قرار می دهد ، (2) MOV - انتقال داده ها از یک ثبت به ثبت دیگر ، (3) RRC - انجام محاسبه ثبات به ثبت ، و (4) JMP - پرش به جای ادامه در دستورالعمل بعدی ، به یک دستورالعمل متفاوت بروید. کدهای نوع دستورالعمل BYOC-I تصویب شده به شرح زیر است:
00 MVI01 MOV10 RRC11 JMP
کد ثبت (dd و ss) BYOC-I دارای چهار ثبت 8 بیتی است که می توانند مقادیر 0 تا 255 را ذخیره کنند. یک کد 2 بیتی برای تعیین چهار ثبات کافی است:
00 F register01 E register10 D register11 A register
کد محاسبه (ccc) BYOC-I از چهار عملیات حسابی/منطقی پشتیبانی می کند. برای گسترش آینده به هشت محاسبه ، از یک کد 3 بیتی استفاده می شود:
000 ADD ، دو مقدار 8 بیتی در رجیسترهای تعیین شده اضافه کنید و نتیجه را در یکی از رجیسترهای 001 SUB ذخیره کنید ، دو مقدار 8 بیتی را در رجیسترهای تعیین شده کم کنید و نتیجه را در یکی از رجیسترها ذخیره کنید 010-011 برای استفاده های بعدی 100 و ، منطقی و دو مقدار 8 بیتی در رجیسترهای تعیین شده و نتیجه را در یکی از رجیسترها ذخیره کنید 101 یا منطقی یا دو مقدار 8 بیتی در رجیسترهای تعیین شده و نتیجه را در یکی از رجیسترها ذخیره کنید 110 تا 111 ، برای استفاده در آینده محفوظ است
Jump Code (j) یک کد 1 بیتی که نشان می دهد پرش بدون قید و شرط است (j = 1) یا مشروط به نتیجه محاسبه صفر (j = 0).
داده/کد آدرس (v… v)/(a… a) داده های 8 بیتی را می توان در دستورالعمل های خاصی نشان داد که مقادیر 00000000 تا 11111111 یا 0 تا 255 اعشاری را نشان می دهد. این داده ها 8 بیت عرض دارند تا در رجیسترهای 8 بیتی BYOC-I ذخیره شوند. با حساب اعشاری ، ما صفرهای اصلی را نشان نمی دهیم. با حساب کامپیوتری ، ما صفرهای اصلی را نشان می دهیم اما بر مقدار تأثیر نمی گذارند. 00000101 از لحاظ عددی یک عدد اعشار 101 یا 5 است.
مراجع پیشنهادی
نماد دودویی - https://learn.sparkfun.com/tutorials/binary علامت هگزادسیمال -
خواندن بیشتر
ایده استفاده از کدها برای هدایت یک فرایند بسیار طولانی است. یکی از نمونه های جذاب ژاکارد لوم است. دستگاه بافندگی خودکار توسط زنجیره ای از کارت های چوبی کنترل می شد که در آن سوراخ هایی نشان داده می شد که نشان دهنده کدها برای نخ های رنگی مختلف برای بافت است. اولین مورد خود را در اسکاتلند دیدم که در آن از تارتان های رنگارنگ استفاده می شد. اینجا درباره ژاکارد لومز بیشتر بخوانید.
مرحله 3: آناتومی دستورالعمل BYOC-I
با توجه به کدهای BYOC-I ، به مرحله بعدی یعنی دستورالعمل ها می رویم. برای ایجاد دستورالعمل برای BYOC-I ، ما کدها را به ترتیب مشخص شده و در مکانهای خاصی در دستورالعمل قرار می دهیم. همه کدها در همه دستورالعمل ها ظاهر نمی شوند ، اما وقتی ظاهر می شوند ، مکان خاصی را اشغال می کنند.
نوع دستورالعمل MVI بیشترین بیت را در کل نیاز دارد. با ساختن کلمه دستورالعمل به طول 12 بیت ، ما تمام دستورالعمل ها را در خود جای می دهیم. به بیت های بلااستفاده (اصطلاحاً "اهمیت ندهید") مقدار 0. داده می شود. در اینجا مجموعه دستورالعمل BYOC-I آمده است.
- انتقال فوری (MVI) - 00 dd vvvvvvvv تابع: مقدار داده 8 بیتی V = vvvvvvvv را به ثبت مقصد dd منتقل کنید. پس از اجرا ، ثبت dd دارای مقدار vvvvvvvv خواهد بود. مخفف: MVI R ، V که R در آن A ، D ، E یا F. است مثال: 00 10 00000101 - MVI D ، 5 - مقدار 5 را به D ثبت نام منتقل کنید.
- انتقال ثبت نام به ثبت نام (MOV) - 01 dd ss 000000 تابع: انتقال داده ها از منبع ثبت ss به ثبت desination dd. پس از اجرا ، هر دو ثبات دارای ارزش یکسانی مانند رجیستر منبع هستند. مخفف: MOV Rd ، Rs که Rd ثبت مقصد A ، D ، E ، یا F است و Rs منبع اصلی A ، D ، E ، یا F است. مثال: 01 11 01 000000 - MOV A ، E - انتقال مقدار در ثبت E برای ثبت A
- ثبت نام برای ثبت نام در محاسبه (RRC) - 10 dd ss ccc 000 عملکرد: محاسبه ccc تعیین شده را با استفاده از منبع ثبت ss و ثبت مقصد dd انجام دهید و نتیجه را در ثبت مقصد ذخیره کنید. اختصارات: ADD Rd، Rs (ccc = 000 Rd + Rs ذخیره شده در Rd) ؛ SUB Rd ، Rs (ccc = 001 Rd - Rs ذخیره شده در Rd) ؛ AND Rd ، Rs (ccc = 100 Rd AND Rs ذخیره شده در Rd) ؛ OR Rd، Rs (ccc = 101 Rd OR Rs ذخیره شده در Rd). مثال: 10 00 11 001 000 - SUB F، A - مقدار موجود در ثبات A را از ثبت F با نتیجه در ثبت F کم کنید.
- پرش به دستورالعمل های مختلف (JMP) - 11 j 0 aaaaaaa تابع: تغییر اجرا به دستورالعمل دیگری که در آدرس aaaa aaaa (a) واقع شده است بدون قید و شرط (j = 1) -11 1 0 aaaaaaaa اختصار: JMP L جایی که L آدرس aaaaaaaa است مثال: 11 1 0 00001000 - JMP 8 - تغییر اجرا به آدرس 8. (ب) به طور مشروط (j = 0) زمانی که محاسبه قبلی به نتیجه ای صفر نرسید - 11 0 0 aaaaaaaa اختصار: JNZ L جایی که L آدرس aaaa aaaa است. مثال: 11 0 0 00000100 JNZ 4 اگر در آخرین محاسبه مقدار غیر صفر به دست آمد ، اجرا را به آدرس 4 تغییر دهید.
بیت های کلمه آموزشی از چپ (مهمترین بیت MSB) به راست (حداقل بیت قابل توجه LSB) از 11 تا 0 شماره گذاری می شوند. ترتیب ثابت و مکان کدها به شرح زیر است:
بیت-کد 11-10 دستورالعمل نوع 9-8 ثبت نام مقصد 7-6 منبع ثبت 5-3 محاسبه: 000-افزودن ؛ 001 - تفریق ؛ 100 - منطقی AND ؛ 101 - منطقی OR7-0 مقدار ثابت v… v و a… a (0 تا 255)
مجموعه دستورالعمل ها در شکل بالا خلاصه شده است. به ساختار منظم و منظم کدها در هر دستورالعمل توجه کنید. نتیجه طراحی ساده تری برای BYOC-I است و درک دستورالعمل ها را برای انسان آسان تر می کند.
مرحله 4: برنامه نویسی دستورالعمل کامپیوتر
قبل از حرکت به سطح برنامه ، اجازه دهید چند دستورالعمل نمونه با استفاده از مجموعه دستورالعمل BYOC-I در بالا ایجاد کنیم.
1. مقدار 1 را برای ثبت A. انتقال دهید. BYOC-I می تواند مقادیر 0 تا 255 را ذخیره کند. در این حالت ، ثبت A مقدار 1 (00000001 باینری) را پس از اجرای دستور خواهد داشت.
مخفف: MVI A ، 1 کد مورد نیاز: نوع MVI - 00 ؛ ثبت نام مقصد A - 11؛ ارزش - 00000001 واژه آموزشی: 00 11 00000001
2. محتویات ثبت A را به ثبت D. منتقل کنید. پس از اجرا ، هر دو رجیستر دارای مقدار اولیه در رجیستر A خواهند بود.
مخفف: MOV D ، A (به یاد داشته باشید ، مقصد اول و منبع دوم در لیست است) کدهای مورد نیاز: نوع MOV - 01 ؛ ثبت نام مقصد D - 10؛ منبع ثبت نام A - 11 کلمه دستورالعمل: 01 10 11 000000
3. محتویات ثبت D را برای ثبت A اضافه کنید و در رجیستر A ذخیره کنید. پس از اجرا ، مقدار ثبت A مجموع مقدار اصلی ثبت A و ثبت D خواهد بود.
مخفف: ADD A، D (نتیجه در ثبت مقصد ذخیره می شود) کدهای مورد نیاز: نوع RRC - 10 ؛ ثبت نام مقصد A - 11؛ منبع ثبت D - 10؛ کلمه دستورالعمل: 10 11 10 000 000 (سی سی سی 000 اول است - اضافه کنید)
4. بر روی صفر به آدرس 3. اگر نتیجه آخرین محاسبه صفر نبود ، اجرا به دستورالعمل در آدرس داده شده تغییر می کند. اگر صفر باشد ، اجرا با دستورالعمل زیر ادامه می یابد.
مخفف: JNZ 3 کدهای مورد نیاز: نوع JMP - 11 ؛ نوع پرش - 0 ؛ آدرس - 00000003 ورد دستورالعمل: 11 0 0 00000003 (نوع پرش اول 0 است)
5. بدون قید و شرط به آدرس 0. پرش کنید. پس از اجرا ، اجرا در دستورالعمل آدرس ذکر شده تغییر می کند.
مخفف: JMP 0 کد مورد نیاز: نوع JMP - 11 ؛ نوع پرش - 1 ؛ آدرس - 00000000 ورد دستورالعمل ؛ 11 1 0 0000000000
در حالی که برنامه نویسی ماشین تا حدودی خسته کننده است ، می توانید متوجه شوید که کار غیرممکنی نیست. اگر واقعاً در حال برنامه نویسی ماشین هستید ، از یک برنامه رایانه ای به نام assembler برای ترجمه از مخفف (که به آن اسم اسمبلی می گویند) به کد ماشین استفاده کنید.
مرحله 5: آناتومی یک برنامه کامپیوتری
برنامه رایانه ای لیستی از دستورالعمل هایی است که کامپیوتر در ابتدای لیست اجرا می کند و لیست را تا انتها ادامه می دهد. دستورالعمل هایی مانند JNZ و JMP می توانند دستورالعمل بعدی را تغییر دهند. هر دستورالعمل در لیست یک آدرس واحد را در حافظه کامپیوتر اشغال می کند که از 0 شروع می شود. حافظه BYOC-I می تواند لیستی از 256 دستورالعمل را در اختیار داشته باشد که برای اهداف ما بیش از اندازه کافی است.
برنامه های کامپیوتری برای انجام یک کار مشخص طراحی شده اند. برای برنامه خود ، ما یک کار ساده را انتخاب می کنیم ، از 1 تا 5 را شمارش می کنیم. بدیهی است که هیچ دستور "شمارش" وجود ندارد ، بنابراین اولین قدم این است که کار را به مراحل تقسیم کنید که توسط BYOC-I بسیار قابل انجام است مجموعه دستورالعمل محدود
مرحله 1 حرکت 1 برای ثبت نام مرحله 2 انتقال ثبت نام A برای ثبت نام مرحله 3 اضافه کردن ثبت نام D برای ثبت نام A و ذخیره نتیجه در ثبت نام مرحله 4 حرکت 5 برای ثبت نام مرحله 5 ثبت نام A از ثبت نام E حذف و ذخیره نتیجه در ثبت نام مرحله 6 اگر نتیجه تفریق صفر نبود ، به مرحله 4 برگردید و شمارش را ادامه دهید مرحله 7 اگر نتیجه تفریق صفر بود ، برگردید و از نو شروع کنید
مرحله بعدی این است که این مراحل را به دستورالعمل BYOC-I ترجمه کنید. برنامه های BYOC-I از آدرس 0 و شماره متوالی شروع می شود. آدرس های هدف پرش آخرین بار بعد از اینکه همه دستورالعمل ها در محل قرار گرفتند اضافه می شوند.
آدرس: دستورالعمل - اختصار ؛ توضیحات 0: 00 11 00000001 - MVI A ، 1 ؛ برای ثبت A1 حرکت کنید 1: 01 10 11 000000 - MOV D، A ؛ ثبت A را برای ثبت D2 حرکت دهید: 10 11 10 000 000 - ADD A، D ؛ ثبت D را برای ثبت A اضافه کنید و نتیجه را در ثبت A3 ذخیره کنید: 00 01 00 00000101 - MVI E ، 5 ؛ حرکت 5 ثبت E4: 10 01 11 001 000 - SUB E ، A ؛ ثبت A را از ثبت E کم کنید و ذخیره کنید نتیجه در ثبت E5: 11 0 0 00000010 - JNZ 2 ؛ اگر نتیجه تفریق صفر نبود ، به آدرس 3 برگردید و شمارش را ادامه دهید 6: 11 1 0 00000000 - JMP 0 ؛ اگر نتیجه تفریق صفر بود ، برگردید و از نو شروع کنید
قبل از انتقال برنامه به حافظه ، کد دستور دودویی باید به هگزادسیمال تغییر کند تا با Logisim Hex Editor استفاده شود. ابتدا دستورالعمل را به سه گروه 4 بیتی تقسیم کنید. سپس گروه ها را با استفاده از جدول مرحله 2 به هگزا دسیمال ترجمه کنید. فقط از سه رقم هگزادسیمال آخر (به صورت برجسته در زیر) استفاده می شود.
آدرس - آموزش دودویی - آموزش دودویی تقسیم - آموزش (سحر و جادو) 0 001100000001 0011 0000 0001 - 0x03011 011011000000 0110 1100 0000 - 0x06C02 101110000000 1011 1000 0000 - 0x0B803 000100000101 0001 0000 0101 - 0x01054 100111001000 1001 1100 1000 - 0x09C85 110000000100 1100 0000 0010 - 0x0C026 111000000010 1110 0000 0000 - 0x0E00
زمان انتقال برنامه به حافظه BYOC-I برای آزمایش فرا رسیده است.
مرحله 6: انتقال برنامه به حافظه و آزمایش
با نگاه به مدار Logisim "اصلی" ، بلوک BYOC-I نشان داده شده نماد مدار واقعی کامپیوتر است که در قسمت Explorer در برچسب "BYOC-I" برچسب گذاری شده است. برای وارد کردن یک برنامه به حافظه BYOC-I:
- روی بلوک BYOC-I (که "زیرمجموعه" نامیده می شود راست کلیک کرده و "نشانگر روی و کلیک چپ" را انتخاب کنید "View BYOC-I".
- مدار BYOC-I در محل کار ظاهر می شود. روی نماد "Memory Program" راست کلیک کرده و "Edit Contents.." را انتخاب کنید.
- با استفاده از ویرایشگر Logisim Hex ، کد هگزا دسیمال (فقط پررنگ) را مانند تصویر بالا وارد کنید.
شما اکنون آماده اجرای برنامه هستید. با دوبار کلیک روی "BYOC-I" در قسمت Explorer به مدار اصلی بازگردید. برای شروع ورودی های Run و Reset باید "0" باشند. با استفاده از ابزار Poke ، ابتدا Reset را به "1" و سپس به "0" تغییر دهید. این آدرس اولیه را 0x0000 می کند و مدار BYOC-I را برای اجرا آماده می کند. حالا ورودی Run را روی "1" قرار دهید تا برنامه اجرا شود. (توجه: برای شروع ساعت Logisim شما باید یکبار روی Control-K ضربه بزنید. این ویژگی به شما امکان می دهد ساعت Logisim را متوقف کرده و با ضربه زدن مکرر روی Control-T در برنامه قدم بگذارید. گاهی آن را امتحان کنید!)
ساعت Logisim برای طیف وسیعی از فرکانس ها قابل تنظیم است. همانطور که بارگیری شد 8 هرتز (8 چرخه در ثانیه) است. نحوه طراحی رایانه BYOC-I ، تکمیل هر دستورالعمل چهار چرخه ساعت طول می کشد. بنابراین ، برای محاسبه سرعت BYOC-I ، فرکانس ساعت را بر 4 تقسیم کنید. در 8 هرتز ، سرعت آن 2 دستور در ثانیه است. با کلیک روی "شبیه سازی" در نوار ابزار و انتخاب "فرکانس تیک" می توانید ساعت را تغییر دهید. محدوده ممکن 0.25 هرتز تا 4100 هرتز است. سرعت آهسته در 8 هرتز انتخاب شد تا بتوانید شمارش را در A ثبت کنید.
حداکثر سرعت شبیه سازی BYOC-I (1000 دستورالعمل در ثانیه) در مقایسه با رایانه های مدرن بسیار کند است. نسخه سخت افزاری رایانه BYOC که در کتاب من شرح داده شده است با بیش از 12 میلیون دستور در ثانیه اجرا می شود!
امیدوارم این دستورالعمل برنامه نویسی زبان ماشین را حذف کرده و به شما نحوه عملکرد رایانه ها در ابتدایی ترین سطح خود را ارائه دهد. برای تقویت درک خود ، سعی کنید دو برنامه زیر را کدگذاری کنید.
- برنامه ای بنویسید که از 5 شروع شده و تا 0 شمارش کند (ANS. Count5to0.txt زیر)
- از 2 شروع کنید ، تا 3 بشمارید تا عدد به 7 برسد. می توانید کمی حساب ذهنی انجام دهید ، 8 را بررسی کنید و بدانید که در آنجا فرود می آید و سپس راه اندازی مجدد می شود. برنامه خود را به شکل کلی تری بنویسید که واقعاً آزمایش کند که آیا تعداد "از یک عدد خاص" بیشتر است یا خیر. نکته: بررسی کنید که چه اتفاقی می افتد که یک تفریق مقدار منفی را نشان می دهد ، برای مثال 8 - 9 = -1. سپس با آزمایش منطقی AND آزمایش کنید که آیا MSB در یک عدد 8 بیتی "1" است یا خیر. (ANS. ExceedsCount.txt)
آیا می توانید به مشکلات چالش برانگیز دیگری برای کامپیوتر BYOC-I فکر کنید؟ با توجه به محدودیت های آن ، دیگر چه کاری می تواند انجام دهد؟ تجربیات خود را در [email protected] با من به اشتراک بگذارید. اگر به برنامه نویسی ریزپردازنده ها علاقه دارید ، وب سایت من www.whippleway.com را بررسی کنید.در آنجا من برنامه نویسی ماشین را به پردازنده های مدرن مانند سری ATMEL Mega که در آردوینوس استفاده می شود حمل می کنم.
توصیه شده:
نحوه تنظیم برنامه نویسی به زبان C/C ++: 5 مرحله
نحوه تنظیم برنامه نویسی به زبان C/C ++: C و C ++ زبانهای برنامه نویسی محبوبی هستند که به سرعت دسترسی به فرمول سازی و حل مسائل پیچیده را با حداقل منابع ممکن فراهم می کنند. مسئله یافتن راهی برای کامپایل و اجرایی شدن برنامه است. یکی از گزینه های شما ممکن است
برنامه افزودنی ساده در زبان برنامه نویسی شکسپیر: 18 مرحله
برنامه افزودنی ساده در زبان برنامه نویسی شکسپیر: زبان برنامه نویسی شکسپیر (SPL) نمونه ای از زبان برنامه نویسی باطنی است ، که شاید یادگیری آن جالب و استفاده از آن جالب باشد ، اما در برنامه های کاربردی واقعی بسیار مفید نیست. SPL زبانی است که در آن کد منبع r
تست تست PCB: 6 مرحله
وسایل تست PCB: بیشتر تخته هایی که طراحی می کنم دارای پد های سوراخ دار برای هدر ICSP 6 پین و برخی دیگر دارای پد های سوراخ برای سربرگ سریال هستند. در بسیاری از موارد هیچ سرصفحه ای پس از برنامه ریزی برد استفاده نمی شود. این وسایل تست به جای یک پرمانن استفاده می شود
HC -SR04 VS VL53L0X - تست 1 - استفاده برای برنامه های کاربردی ماشین ربات: 7 مرحله
HC -SR04 VS VL53L0X - تست 1 - استفاده برای برنامه های کاربردی ماشین روبات: این دستورالعمل یک آزمایش آزمایشی ساده (هرچند تا حد امکان علمی) را برای مقایسه اثربخشی دو سنسور معمول فاصله ، که عملکرد فیزیکی کاملاً متفاوتی دارند ، پیشنهاد می کند. HC-SR04 از امواج فراصوت استفاده می کند
تست تست استپر موتور: 3 مرحله
وسایل تست موتور پله ای: من رانندگی با موتورهای پله ای را تجربه نکردم ، بنابراین قبل از طراحی ، چاپ ، مونتاژ و برنامه نویسی ساعت آنالوگ تصحیح خودکار "Antique" (https://www.instructables.com/id/Antique-Auto-Correcting) -Analog-Clock/) با استفاده از موتور پله ای