Mündəricat:

Bir kompüteri maşın dilində kodlayın və sınayın: 6 addım
Bir kompüteri maşın dilində kodlayın və sınayın: 6 addım

Video: Bir kompüteri maşın dilində kodlayın və sınayın: 6 addım

Video: Bir kompüteri maşın dilində kodlayın və sınayın: 6 addım
Video: Installing Anaconda for Windows 10! 2024, Iyul
Anonim
Image
Image

Bu Təlimat kitabında, kompüter proqramını maşın dilində necə kodlaşdıracağınızı və sınayacağınızı sizə göstərəcəyəm. Maşın dili kompüterlərin ana dilidir. 1s və 0s simlərindən ibarət olduğu üçün insanlar tərəfindən asan başa düşülmür. Bunun öhdəsindən gəlmək üçün əvvəlcə proqramları C ++ və ya Java kimi yüksək səviyyəli bir dildə kodlayırıq və sonra onları başa düşdüyümüz 1s və 0s kompüterlərinə çevirmək üçün xüsusi kompüter proqramlarından istifadə edirik. Yüksək səviyyəli bir dildə kod öyrənmək, əlbəttə ki, heç bir şey deyil, ancaq maşın dilinə qısa bir giriş, kompüterlərin necə işlədiyinə dair dəyərli fikirlər verə bilər və bu çox vacib texnologiyanın təqdirini artıra bilər.

Bir maşın dili proqramını kodlaşdırmaq və sınamaq üçün maşın dili asanlıqla başa düşülən bir kompüterə daxil olmalıyıq. Fərdi kompüterlər düşünmək üçün çox mürəkkəbdir. Çözüm, fərdi kompüterdə çalışan Logisim məntiq simulyatorundan istifadə etməkdir. Logisim ilə ehtiyaclarımıza cavab verən bir kompüter simulyasiya edə bilərik. Yuxarıdakı video, Logisim ilə nələr edə biləcəyimizə dair bir fikir verir.

Kompüter dizaynı üçün Kindle e -kitabımdan öz kompüterinizi qurun - Scratchdan uyğunlaşdırdım. Orada təsvir olunan BYOC kompüteri ilə başladım və bu Təlimat kitabında istifadə edəcəyimiz əsas BYOC-I (Təlim oluna bilən üçün) qədər kəsdim.

BYOC-I-nin maşın dili sadə və başa düşüləndir. Kompüter və ya proqramlaşdırma haqqında xüsusi biliklərə ehtiyacınız olmayacaq. Tələb olunanların hamısı maraqlanan bir ağıl və öyrənmək istəyidir

Əlavə Oxu

Mexaniki bir cihaz olmadıqda niyə kompüteri təsvir etmək üçün "maşın" dan istifadə etdiyimizi düşünə bilərsiniz. Səbəb tarixi; ilk hesablama cihazları dişli və təkərlərdən ibarət mexaniki idi. Allan Sherman-ın "Bütün dişlilər bir-birinin ardınca gedirdi …" lirikası yalnız bir-iki əsrdən sonra idi. Erkən hesablama haqqında daha çox oxuyun burada.

Addım 1: Parça siyahısı

Maşın Dil Hiyerarşisi və Kodları
Maşın Dil Hiyerarşisi və Kodları

Parçaların siyahısı qısadır. Yalnız bu iki maddə tələb olunur, hər ikisi pulsuz olaraq endirilə bilər:

  1. "Logisim-win-2.7.1.exe"-Logisim məşhur və istifadəsi asan bir məntiq simulyatorudur. Buradan Logisim icra faylını yükləyin və sonra masaüstünüz kimi əlverişli bir yerdə qısa yol yaradın. Başlatmaq üçün Logisim simgesini iki dəfə vurun. Qeyd: Logisim burada yerləşən Java Runtime Paketini istifadə edir. Yükləməyiniz xahiş oluna bilər.
  2. BYOC-I-Full.cir "-Aşağıdakı Logisim dövrə faylını yükləyin.

Logisim-i işə salın, sonra "Fayl-Aç" düyməsini basın və BYOC-I-Full.cir faylını yükləyin. Yuxarıdakı şəkil Logisim iş mühitini göstərir. BYOC-I alt dövrə bloku ilə təmsil olunur. Sıfırla və Çalışdır və BYOC-I-nin qeydləri və proqram yaddaşı üçün onaltılı displeylər xaricdən bağlıdır.

BYOC-I proqram yaddaşı A reyestrində 1-dən 5-ə qədər sayılan sadə bir proqramla əvvəlcədən yüklənir. Proqramı yerinə yetirmək (Çalıştırmaq) üçün bu addımları izləyin.

Addım 1 - Poke Alətini vurun. Kursor sancan "barmağa" keçməlidir. Addım 2 - Sıfırlama girişini iki dəfə vurun, bir dəfə "1" və yenidən "0" olaraq dəyişdirin. Bu, proqramı 0 ünvanına başlamaq üçün BYOC -I -ni sıfırlayır. Addım 3 - "1" olaraq dəyişdirmək üçün Çalıştırma girişini bir dəfə sıxın. A reyestri 1 -dən 5 -ə qədər dəyişən və sonra təkrarlanan sayını göstərməlidir. Addım 4 - Proqram icra edilmirsə, control -K düyməsini basın və başlamalıdır.

Logisim -in imkanlarını araşdırmaq istəyirsinizsə, Menyu Çubuğundakı Yardım bağlantısını vurun. Oradan Logisim "Dərsliyi", "İstifadəçi Bələdçisi" və "Kitabxana İstinadı" nı araşdıra bilərsiniz. Mükəmməl bir video təqdimatı burada tapa bilərsiniz.

Addım 2: Maşın Dil Hiyerarşisi və Kodları

Maşın Dili İerarxiyası və Kodları
Maşın Dili İerarxiyası və Kodları

BYOC-I kompüteri maşın dilində yazılmış proqramlar əsasında vəzifələri yerinə yetirir. BYOC-I proqramları, öz növbəsində, yaxşı müəyyən edilmiş ardıcıllıqla yerinə yetirilən təlimatlardan ibarətdir. Hər bir təlimat BYOC-I-nin müxtəlif əməliyyat komponentlərini təmsil edən sabit uzunluq kodlarından hazırlanmışdır. Nəhayət, bu kodlar BYOC-I-nin əslində icra etdiyi maşın dilini təşkil edən 1s və 0s simlərindən ibarətdir.

İzahat olaraq, kodlarla başlayacağıq və proqram səviyyəsinə qədər işləyəcəyik. Sonra sadə bir proqramı kodlaşdıracağıq, BYOC-I yaddaşına yükləyəcəyik və icra edəcəyik.

Kodlar qısacası sabit saylı ikili (1 və 0) rəqəmlərdən və ya bitlərdən ibarətdir. Məsələn, aşağıdakı cədvəldə 4 bit genişlikdə bir kod üçün bütün mümkün kodları (hamısı 16) göstərir. Yan tərəfdə göstərilən kod onaltılı (baza 16) və ondalık ekvivalentdir. Hexadecimal, ikilikdən daha kompakt olduğu üçün ikili dəyərlərdən bəhs etmək üçün istifadə olunur və onluqdan ikilikdən çevrilməsi daha asandır. "0x" prefiksi, aşağıdakı nömrənin onaltılı və ya qısaca "hex" olduğunu bilməyinizə imkan verir.

İkili - Onaltılı - Ondalık0000 0x0000 00001 0x0001 10010 0x0002 20011 0x0003 30100 0x0004 40101 0x0005 50111 0x0007 71000 0x0008 81001 0x0009 91010 0x000A 101011 0x000B 111100 0x000C 1211011 0x000C 1211011 0x000C 1211011 0x000C

Kodun genişliyi, neçə maddənin təmsil oluna biləcəyini təyin edir. Qeyd edildiyi kimi, yuxarıdakı 4 bitlik geniş kod 16-ya qədər (0-dan 15-ə qədər) məhsulu təmsil edə bilər; yəni 2 dəfə 2 dəfə 4 dəfə və ya 2 ilə 4 arasında olan güc 16 -ya bərabərdir. Ümumiyyətlə, təqdim olunan maddələrin sayı 2 -ci gücə yüksəldilir. Burada n-bit kod tutumlarının qısa siyahısı verilmişdir.

n - Əşyaların sayı1 22 43 84 165 326 647 1288 256

BYOC-I kompüter kodunun genişliyi, kodla təmsil olunacaq maddələrin sayına uyğun olaraq seçilir. Məsələn, dörd Təlimat Tipi var, buna görə 2 bitlik geniş bir kod uyğun gəlir. Burada hər birinin qısa izahı olan BYOC-I kodları var.

Təlimat Tip Kodu (tt) Dörd növ təlimat var: (1) MVI - 8 bitlik sabit bir dəyəri dərhal yaddaş qeydinə köçürün. Yaddaş reyestri, hesablama üçün istifadə ediləcək məlumatları saxlayan bir cihazdır, (2) MOV - Məlumatları bir qeyddən digərinə köçürün, (3) RRC - Qeydiyyatdan -qeydə hesablama aparın və (4) JMP - Get növbəti təlimata davam etmək əvəzinə fərqli bir təlimata keçin. Qəbul edilən BYOC-I Təlimat Tip Kodları aşağıdakılardır:

00 MVI01 MOV10 RRC11 JMP

Qeyd Kodu (dd və ss) BYOC-I-də 0-dan 255-ə qədər dəyərləri saxlaya bilən 4 ədəd 8 bitlik qeyd var. Dörd qeydin təyin edilməsi üçün 2 bitlik kod kifayətdir:

00 F qeyd01 E qeyd10 D qeydiyyat11 A qeyd

Hesablama Kodu (ccc) BYOC-I dörd hesab/məntiq əməliyyatını dəstəkləyir. Gələcəkdə səkkiz hesablamaya genişləndirmək üçün 3 bit kod istifadə olunur:

000 ADD, təyin edilmiş qeydlərə iki 8 bitlik dəyər əlavə edin və nəticəni 001 SUB qeydlərindən birində saxlayın, təyin olunmuş qeydlərdə iki 8 bit dəyərini çıxarın və nəticəni 010-011 qeydlərindən birində saxlayın Gələcək istifadə üçün ayrılmışdır100 VƏ, məntiqi VƏ təyin edilmiş qeydlərdə iki 8 bitlik dəyər və nəticəni qeydlərdən birində saxla101 YA DA məntiqi olaraq iki 8 bitlik dəyərləri təyin edilmiş qeydlərdə saxla və nəticəni qeydlərin birində saxla110 ilə 111, Gələcək istifadə üçün qorunur.

Jump Code (j) Sıçrayışın qeyd-şərtsiz olduğunu (j = 1) və ya sıfır olmayan bir hesablama nəticəsi ilə şərtləndiyini (j = 0) göstərən 1 bitlik kod.

Məlumat/Ünvan Kodu (v… v)/(a… a) 8 bitlik məlumatlar 00000000-dən 11111111-ə və ya 0-dan 255-ə qədər olan rəqəmləri əks etdirən müəyyən təlimatlara daxil edilə bilər. Bu məlumatlar BYOC-I-nin 8 bitlik qeydlərində saxlanılması üçün 8 bit genişliyindədir. Ondalık arifmetiklə aparıcı sıfırlar göstərmirik. Kompüter aritmetikası ilə aparıcı sıfırları göstəririk, lakin onlar dəyərə təsir etmir. 00000101 ədədi eyni 101 və ya 5 ondalıkdır.

Təklif olunan İstinadlar

İkili Qeyd - https://learn.sparkfun.com/tutorials/binaryHexadecimal Notation -

Əlavə Oxu

Bir prosesi idarə etmək üçün kodlardan istifadə etmək fikri çox uzağa gedib çıxır. Maraqlı bir nümunə Jacquard Loomdur. Avtomatlaşdırılmış dəzgah, toxuculuq üçün müxtəlif rəngli ipliklərin kodlarını əks etdirən deliklərin qazıldığı taxta kartlar zənciri ilə idarə olunurdu. Birincisini Şotlandiyada gördüm ki, burada rəngli tartanlar hazırlanırdı. Jacquard Looms haqqında daha çox oxuyun.

Addım 3: BYOC-I Təlimatlarının Anatomiyası

BYOC-I Təlimatlarının Anatomiyası
BYOC-I Təlimatlarının Anatomiyası

BYOC-I kodlarını nəzərə alaraq növbəti səviyyəyə, təlimatlara yüksəlirik. BYOC-I üçün təlimat yaratmaq üçün kodları təlimat daxilində müəyyən edilmiş qaydada və müəyyən yerlərdə yerləşdiririk. Bütün kodlar bütün təlimatlarda görünmür, ancaq göründükdə müəyyən bir yeri tuturlar.

MVI təlimat növü ən çox bit tələb edir, hamısı 12. Təlimat sözünü 12 bit uzunluğunda etməklə bütün təlimatları yerinə yetiririk. İstifadə edilməyən ("fərq etməz" adlanan) bitlərə 0 dəyəri verilir. İşdə BYOC-I Təlimat Seti.

  1. Dərhal Move (MVI) - 00 dd vvvvvvvvFunction: 8 bitlik məlumat dəyərini V = vvvvvvvv təyinat qeydinə dd köçürün. İcra edildikdən sonra, dd register vvvvvvvv dəyərinə sahib olacaq. Qısaltma: MVI R, V burada R A, D, E və ya F.dir.
  2. Qeydiyyatı Qeydiyyata Daşı (MOV) - 01 dd ss 000000Function: Məlumatları mənbə reyestrindən ss təyinat qeydinə keçir. İcra edildikdən sonra hər iki qeyd mənbə reyestri ilə eyni dəyərə malikdir. Qısaltma: MOV Rd, Rs, burada Rd A, D, E və ya F və Rs mənbə qeydidir A, D, E və ya F. Misal: 01 11 01 000000 - MOV A, E - Dəyəri köçürün. E qeydində A qeyd etmək üçün.
  3. Hesablamanı Qeydiyyatdan Keçmək üçün Qeydiyyatdan Keç (RRC) - 10 dd ss ccc 000 Funksiya: Mənbə reyestri ss və təyinat dd istifadə edərək təyin edilmiş hesablama cccini yerinə yetirin, sonra nəticəni təyinat reyestrində saxlayın. Qısaltmalar: ADD Rd, Rs (ccc = 000 Rd + Rs saxlanılır Rd); SUB Rd, Rs (ccc = 001 Rd - Rd -də saxlanılan Rs); AND Rd, Rs (ccc = 100 Rd AND Rs Rd -də saxlanılır); OR Rd, Rs (ccc = 101 Rd OR Rs Rd -də saxlanılır). Nümunə: 10 00 11 001 000 - SUB F, A - F reyestrindəki nəticə ilə A reyestrindəki dəyəri F reyestrindən çıxarın.
  4. Fərqli Təlimata Keç (JMP) - 11 j 0 aaaaaaaaFunksiya: İcranı aaaa aaaa (a) ünvanında yerləşən fərqli bir təlimata dəyişdirin Şərtsiz (j = 1) -11 1 0 aaaaaaaa Qısaltma: JMP L burada L ünvanı aaaa aaaa Misal: 11 1 0 00001000 - JMP 8 - İcranı 8 ünvanına dəyişin. (B) Şərti olaraq (j = 0) əvvəlki hesablama sıfır nəticə vermədikdə - 11 0 0 aaaaaaaa Qısaltma: JNZ L burada L ünvan aaaa aaaa. Məsələn: 11 0 0 00000100 JNZ 4 Son hesablama sıfır olmayan bir dəyər verərsə, icranı 4 ünvanına dəyişdirin.

Təlimat söz bitləri soldan (ən əhəmiyyətli bit MSB) sağa (ən az əhəmiyyətli bit LSB) 11 -dən 0 -a qədər nömrələnir. Kodların sabit qaydası və yerləri belədir:

Bitlər-Kod11-10 Təlimat Tipi 9-8 Təyinat Qeydiyyatı7-6 Mənbə Qeydiyyatı5-3 Hesablama: 000-əlavə et; 001 - çıxarmaq; 100 - məntiqi VƏ; 101 - məntiqi OR7-0 Sabit dəyər v… v və a… a (0 ilə 255 arasında)

Təlimat dəsti yuxarıdakı şəkildə ümumiləşdirilmişdir. Hər bir təlimatda kodların quruluşlu və nizamlı görünüşünə diqqət yetirin. Nəticə BYOC-I üçün daha sadə bir dizayndır və təlimatları insanın başa düşməsini asanlaşdırır.

Addım 4: Kompüter Təlimatının Kodlaşdırılması

Kompüter təlimatlarının kodlaşdırılması
Kompüter təlimatlarının kodlaşdırılması

Proqram səviyyəsinə keçməzdən əvvəl yuxarıdakı BYOC-I Təlimat Setindən istifadə edərək bəzi nümunə təlimatlar quraq.

1. 1 dəyərini A qeyd etmək üçün hərəkət etdirin. BYOC-I qeydləri 0-dan 255-ə qədər dəyərləri saxlaya bilər. Bu halda, A reyestri təlimatın icrasından sonra 1 (00000001 binary) dəyərinə malik olacaq.

Qısaltma: MVI A, 1 Kodlar Lazımdır: Type MVI - 00; Təyinat Qeydiyyatı A - 11; Dəyər - 00000001 Təlimat Sözü: 00 11 00000001

2. A registrinin məzmununu D qeyd etmək üçün köçürün. İcra edildikdən sonra hər iki qeyd də əvvəlcə A reyestrində olacaq.

Qısaltma: MOV D, A (Unutmayın, təyinat siyahıda birinci və mənbədir) Lazım olan kodlar: MOV yazın - 01; Hedef Qeydiyyatı D - 10; Mənbə Qeydiyyatı A - 11 Təlimat Sözü: 01 10 11 000000

3. D reyestrinin məzmununu A qeyd etmək və A reyestrində saxlamaq üçün əlavə edin. İcra edildikdən sonra A reyestrinin dəyəri A reyestri və D qeydinin ilkin dəyərinin cəmi olacaqdır.

Qısaltma: ADD A, D (Nəticə təyinat qeydində saxlanılır) Lazım olan kodlar: RRC növü - 10; Təyinat Qeydiyyatı A - 11; Mənbə Qeydiyyatı D - 10; Hesablama Əlavə - 000 Təlimat Sözü: 10 11 10 000 000 (ccc birinci 000 - əlavə et)

4. Ünvana sıfırdan keçin 3. Son hesablamanın nəticəsi sıfır olmadıqda, icra göstərilən ünvandakı təlimata dəyişəcək. Sıfır olarsa, icra aşağıdakı təlimatla davam edir.

Qısaltma: JNZ 3Kodlar Lazımdır: Tip JMP - 11; Atlama növü - 0; Ünvan - 00000003 Təlimat Sözü: 11 0 0 00000003 (Atlama növü birinci 0)

5. 0 ünvanına qeyd -şərtsiz keçin. İcra edildikdən sonra icra edilən ünvandakı təlimata dəyişiklik edir.

Qısaltma: JMP 0Kod Tələb olunur: JMP yazın - 11; Atlama növü - 1; Ünvan - 00000000 Təlimat Word; 11 1 0 00000000

Maşın kodlaşdırması bir qədər yorucu olsa da, bunun qeyri -mümkün qədər çətin olmadığını görə bilərsiniz. Maşın kodlaşdırmağı real olaraq yerinə yetirsəydiniz, qısaltmadan (montaj kodu adlanır) maşın koduna çevirmək üçün assembler adlı bir kompüter proqramından istifadə edərdiniz.

Addım 5: Kompüter Proqramının Anatomiyası

Kompüter proqramının anatomiyası
Kompüter proqramının anatomiyası

Bir kompüter proqramı, siyahının əvvəlindən başlayaraq siyahının sonuna qədər davam edən kompüterin icra etdiyi təlimatların siyahısıdır. JNZ və JMP kimi təlimatlar sonradan hansı təlimatın yerinə yetiriləcəyini dəyişə bilər. Siyahıdakı hər bir təlimat kompüterin yaddaşında 0-dan başlayaraq tək bir ünvanı tutur. BYOC-I yaddaşı, məqsədlərimiz üçün kifayət qədər olan 256 təlimatın siyahısını tuta bilər.

Kompüter proqramları müəyyən bir işi yerinə yetirmək üçün hazırlanmışdır. Proqramımız üçün 1-dən 5-ə qədər saymaqla sadə bir vəzifə seçəcəyik. Aydındır ki, "sayma" təlimatı yoxdur, buna görə də ilk addım vəzifəni BYOC-I-nin çox həll edə biləcəyi addımlara bölməkdir. məhdud təlimat dəsti.

Addım 1 Qeyd etmək üçün 1 hərəkət edin AStep 2 Qeyd etmək üçün A qeydini köçürün DStep 3 A qeyd etmək üçün D qeydini əlavə edin və nəticəni registrdə saxlayın AStep 4 E 5 addımını qeyd etmək üçün 5 hərəkət edin E qeydindən A qeydini çıxarın və nəticəni EStep 6 qeydində saxlayın çıxma nəticəsi sıfır deyildi, 4 -cü addıma qayıdın və saymağa davam edin 7 -ci addım, əgər çıxma nəticəsi sıfır idisə, geri qayıdın və yenidən başlayın

Növbəti addım bu addımları BYOC-I təlimatlarına çevirməkdir. BYOC-I proqramları ardıcıl olaraq 0 ünvanından və nömrədən başlayır. Bütün təlimatlar yerinə yetirildikdən sonra atlama hədəf ünvanları son olaraq əlavə olunur.

Ünvan: Təlimat - Qısaltma; Təsvir0: 00 11 00000001 - MVI A, 1; A1 qeyd etmək üçün 1 hərəkət edin: 01 10 11 000000 - MOV D, A; D2 qeyd etmək üçün A reyestrini köçürün: 10 11 10 000 000 - ADD A, D; A qeyd etmək üçün D qeydini əlavə edin və nəticəni A3 reyestrində saxlayın: 00 01 00 00000101 - MVI E, 5; 5 qeyd E4: 10 01 11 001 000 - SUB E, A; A reyestrini E reyestrindən çıxarın və mağazanı saxlayın E5 reyestrində nəticə: 11 0 0 00000010 - JNZ 2; Çıxarma nəticəsi sıfır deyilsə, 3 ünvanına qayıdın və saymağa davam edin 6: 11 1 0 00000000 - JMP 0; Çıxarma nəticəsi sıfır idisə, geri qayıdın və yenidən başlayın

Proqramı yaddaşa köçürməzdən əvvəl, Logisim Hex Redaktorunda istifadə etmək üçün ikili təlimat kodunu onaltılıq olaraq dəyişdirmək lazımdır. Əvvəlcə təlimatı hər biri 4 bit olan üç qrupa bölün. Daha sonra 2 -ci addımdakı cədvəldən istifadə edərək qrupları onaltılıq rəqəmə çevirin.

Ünvan - İkili Təlimat - İkili Bölmə Təlimatı - Təlimat (Hex) 0 001100000001 0011 0000 0001 - 0x03011 011011000000 0110 1100 0000 - 0x06C02 101110000000 1011 1000 0000 - 0x0B803 000100000101 0001 0000 0101 - 1000000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000duksuli0000000000000000000000000000000000000000001 111000000010 1110 0000 0000 - 0x0E00

Proqramı test etmək üçün BYOC-I yaddaşına köçürməyin vaxtı gəldi.

Addım 6: Proqramı Yaddaşa və Testə köçürmək

Proqramı Yaddaşa və Testə köçürmək
Proqramı Yaddaşa və Testə köçürmək
Proqramı Yaddaşa və Testə köçürmək
Proqramı Yaddaşa və Testə köçürmək

Logisim "əsas" sxeminə baxdıqda, göstərilən BYOC-I bloku, Explorer bölməsindəki "BYOC-I" etiketli faktiki kompüter dövrəsinin simvoludur. Bir proqramı BYOC-I yaddaşına daxil etmək üçün:

  1. BYOC-I blokunu sağa vurun ("alt dövrə" adlanır) və (üzərinə gedin və sol klikləyin) "BYOC-I Görün" seçin.
  2. BYOC-I dövrəsi İş Sahəsində görünəcək. "Proqram Yaddaşı" simgesini sağ vurun və "Məzmunu Düzenle.." seçin.
  3. Logisim Hex Redaktorundan istifadə edərək yuxarıda göstərildiyi kimi onaltılı kodu (yalnız qalın) daxil edin.

İndi proqramı icra etməyə hazırsınız. Explorer bölməsində "BYOC-I" düyməsini iki dəfə tıklayaraq əsas dövrə qayıdın. İşlətmə və Sıfırlama girişləri başlamaq üçün "0" olmalıdır. Poke Alətindən istifadə edərək əvvəlcə Sıfırlamanı "1" olaraq dəyişdirin və sonra "0" a qaytarın. Bu, başlanğıc ünvanını 0x0000 edir və BYOC-I sxemini icra üçün hazırlayır. İndi Run girişini "1" ə vurun və proqram icra olunacaq. (Qeyd: Logisim saatını işə salmaq üçün Control-K düyməsini bir dəfə vurmalısınız. Bu, Logisim saatını dayandırmağa və Control-T düyməsinə dəfələrlə toxunaraq bir proqrama keçməyə imkan verən bir xüsusiyyətdir. Bəzən cəhd edin!)

Logisim saatı geniş bir tezlik diapazonu üçün tənzimlənir. Yükləndiyi kimi 8 Hz -dir (saniyədə 8 dövr). BYOC-I kompüterinin dizayn tərzi, hər bir təlimatın yerinə yetirilməsi üçün dörd saat dövrü tələb edir. Beləliklə, BYOC-I sürətini hesablamaq üçün saat tezliyini 4-ə bölün. 8 Hz-də onun sürəti saniyədə 2 təlimatdır. Alətlər çubuğundakı "Simulyasiya" düyməsini basaraq və "İşarə tezliyi" ni seçərək saatı dəyişə bilərsiniz. Mümkün diapazon 0,25 ilə 4100 Hz arasındadır. A registrindəki sayımı izləyə bilmək üçün 8 Hz -də yavaş sürət seçildi.

BYOC-I simulyasiyasının maksimum sürəti (saniyədə ~ 1000 təlimat) müasir kompüterlərlə müqayisədə çox yavaşdır. Kitabımda təsvir olunan BYOC kompüterinin hardware versiyası saniyədə 12 milyondan çox təlimat yerinə yetirir!

Ümid edirəm ki, bu Təlimat, maşın dili proqramlaşdırma sistemini ləğv etdi və kompüterlərin ən əsas səviyyədə necə işlədiyini anladı. Anlamaq üçün aşağıdakı iki proqramı kodlaşdırmağa çalışın.

  1. 5 -dən başlayan və 0 -a qədər sayılan bir proqram yazın. (ANS. Aşağıda Count5to0.txt)
  2. 2 -dən başlayaraq sayı 7 -dən çox olana qədər 3 ilə sayın. Bir az zehni arifmetik edə bilərsiniz, ora düşəcəyini bilərək 8 -i yoxlayın və yenidən başladın. Proqramınızı daha çox ümumi bir şəkildə yazın ki, bu sayın müəyyən bir rəqəmi "aşdığını" yoxlasın. İpucu: Çıxarış mənfi bir dəyər verəndə nə olacağını araşdırın, məsələn 8 - 9 = -1 deyin. Sonra 8 bitlik bir rəqəmdəki MSB-nin "1" olub olmadığını yoxlamaq üçün məntiqi VE ilə sınaq keçirin. (ANS. ExountsCount.txt)

BYOC-I kompüteri üçün digər çətin problemləri düşünə bilərsinizmi? Məhdudiyyətləri nəzərə alsaq, daha nə edə bilər? Təcrübələrinizi mənimlə [email protected] ünvanında paylaşın. Mikroprosessorların kodlaşdırılması ilə maraqlanırsınızsa, www.whippleway.com veb saytına baxın. Orada Arduinosda istifadə olunan ATMEL Mega seriyası kimi müasir prosessorlara maşın kodlaşdırma aparıram.

Tövsiyə: