Агуулгын хүснэгт:

Компьютерийг машин хэлээр кодлох, турших: 6 алхам
Компьютерийг машин хэлээр кодлох, турших: 6 алхам

Видео: Компьютерийг машин хэлээр кодлох, турших: 6 алхам

Видео: Компьютерийг машин хэлээр кодлох, турших: 6 алхам
Видео: И всё таки они кусаются ► 1 Прохождение Resident Evil (HD Remaster) 2024, Арваннэгдүгээр
Anonim
Image
Image

Энэхүү гарын авлагад би компьютерийн програмыг машин хэл дээр хэрхэн кодлох, туршихыг танд үзүүлэх болно. Машины хэл бол компьютерын төрөлх хэл юм. Энэ нь 1 ба 0 -ийн мөрүүдээс бүрддэг тул хүн төрөлхтөн тийм ч амархан ойлгодоггүй. Үүнийг даван туулахын тулд бид програмуудыг эхлээд C ++ эсвэл Java гэх мэт өндөр түвшний хэлээр кодчилдог, дараа нь компьютерын тусгай програмуудыг ашиглан тэдгээрийг ойлгодог 1s болон 0s компьютерт хөрвүүлдэг. Өндөр түвшний хэлээр код бичиж сурах нь гарцаагүй боловч машин хэлний товч танилцуулга нь компьютер хэрхэн ажилладаг талаар үнэ цэнэтэй ойлголт өгч, энэхүү чухал технологийн үнэлэмжийг нэмэгдүүлэх болно.

Машины хэлний програмыг кодлох, туршихын тулд бидэнд машины хэлийг хялбархан ойлгодог компьютер ашиглах шаардлагатай болно. Персонал компьютер нь хэтэрхий нарийн төвөгтэй бөгөөд үүнийг анхаарч үзэх боломжгүй юм. Үүний шийдэл бол хувийн компьютер дээр ажилладаг логик симулятор Logisim -ийг ашиглах явдал юм. Logisim -ийн тусламжтайгаар бид өөрсдийн хэрэгцээнд нийцсэн компьютерийг дуурайж болно. Дээрх видео нь Logisim -ийн тусламжтайгаар бид юу хийж чадах талаар танд ойлголт өгөх болно.

Компьютерийн дизайны хувьд би Kindle цахим номноосоо нэгийг нь өөрчилсөн. Би тэнд тайлбарласан BYOC компьютерийг эхлүүлж, энэ зааварт ашиглах BYOC-I (I зааварчилгааны хувьд) үндсэн загвар болгон хайчилж авлаа.

BYOC-I-ийн машин хэл нь энгийн бөгөөд ойлгоход хялбар. Танд компьютер, програмчлалын талаар тусгай мэдлэг хэрэггүй болно. Шаардлагатай бүх зүйл бол сониуч оюун ухаан, сурах хүсэл юм

Цаашид унших

Механик төхөөрөмж биш байхад бид яагаад "машин" -ыг дүрслэхдээ компьютерийг дүрсэлдэгийг та гайхаж магадгүй юм. Үүний шалтгаан нь түүхэн; Эхний тооцоолох төхөөрөмж нь араа ба дугуйнаас бүрдсэн механик төхөөрөмж байв. Аллан Шерманы бичсэн "Энэ бол бүх араа дарах чимээ байсан …" гэдэг үг нь ердөө ганц хоёр зууны дараа л байсан. Эрт тооцоолох талаар эндээс уншина уу.

Алхам 1: эд ангиудын жагсаалт

Машины хэлний шатлал ба кодууд
Машины хэлний шатлал ба кодууд

Сэлбэгийн жагсаалт богино байна. Зөвхөн эдгээр хоёр зүйлийг шаардах бөгөөд хоёуланг нь үнэгүй татаж авах боломжтой.

  1. "Logisim-win-2.7.1.exe"-Logisim бол түгээмэл бөгөөд ашиглахад хялбар логик симулятор юм. Logisim -ийн ажиллуулж болох файлыг эндээс татаж аваад ширээний компьютер шиг тохиромжтой газарт богино холболт үүсгэнэ үү. Үүнийг эхлүүлэхийн тулд Logisim дүрс дээр хоёр дарна уу. Тэмдэглэл: Logisim энд байрладаг Java Runtime Package -ийг ашигладаг. Та үүнийг татаж авахыг шаардаж магадгүй юм.
  2. BYOC-I-Full.cir "-Доорх Logisim хэлхээний файлыг татаж авна уу.

Logisim-ийг ажиллуулаад "Файл-Нээх" дээр дараад BYOC-I-Full.cir файлыг ачаална уу. Дээрх зураг нь Logisim -ийн ажиллах орчныг харуулж байна. BYOC-I нь дэд хэлхээний блокоор дүрслэгддэг. Reset and Run гэсэн хоёр оролт, BYOC-I регистр болон програмын санах ойд зориулсан арван зургаатын дэлгэцийг гаднаас нь холбосон болно.

BYOC-I програмын санах ой нь A регистрт 1-ээс 5 хүртэл тоологдох энгийн програмаар урьдчилан ачаалагдсан байдаг. Хөтөлбөрийг ажиллуулахын тулд дараах алхмуудыг дагана уу.

Алхам 1 - Poke Tool дээр дарна уу. Курсор нь цохиулах "хуруу" болж өөрчлөгдөх ёстой. Алхам 2 - Дахин тохируулах оролтыг хоёр удаа дарж, "1" болгож, "0" болгож буцаана уу. Энэ нь BYOC -I -ийг дахин тохируулж програмыг 0 хаягаар эхлүүлнэ. 3 -р алхам - "1" болгож өөрчлөхийн тулд Run оролтыг нэг удаа дарна уу. A бүртгэл нь 1 -ээс 5 хүртэл өөрчлөгдсөн тоог харуулах ёстой бөгөөд 4 -р алхам - Хэрэв програм ажиллахгүй бол control -K дарж эхлэх ёстой.

Хэрэв та Logisim -ийн чадавхийг судлахыг хүсвэл Цэсийн мөрөн дэх Help линк дээр дарна уу. Тэндээс та Logisim "Tutorial", "Хэрэглэгчийн гарын авлага", "Номын сангийн лавлах" -ыг үзэх боломжтой. Маш сайн видео танилцуулгыг эндээс олж болно.

Алхам 2: Машины хэлний шатлал ба кодууд

Машины хэлний шатлал ба кодууд
Машины хэлний шатлал ба кодууд

BYOC-I компьютер нь машин хэл дээр бичигдсэн програмууд дээр үндэслэн даалгавар гүйцэтгэдэг. BYOC-I програмууд нь эргээд сайн тодорхойлогдсон дарааллаар хийгдсэн заавруудаас бүрддэг. Заавар бүр нь BYOC-I-ийн янз бүрийн ажиллагааны бүрэлдэхүүн хэсгүүдийг харуулсан тогтмол урттай кодоор хийгдсэн болно. Эцэст нь эдгээр кодууд нь BYOC-I-ийн хэрэгжүүлж буй машин хэлийг бүрдүүлдэг 1 ба 0-ийн мөрүүдээс бүрдэнэ.

Тайлбарын хувьд бид кодуудаас эхэлж програмын түвшинд хүрэх болно. Дараа нь бид энгийн програмыг кодлож, BYOC-I-ийн санах ойд ачаалж, гүйцэтгэх болно.

Кодууд нь тодорхой тооны хоёртын (1 ба 0) цифрүүд эсвэл битүүдээс бүрддэг. Жишээлбэл, доорх хүснэгтэд 4 битийн өргөнтэй кодын боломжтой бүх кодыг (нийт 16) харуулав. Кодыг хажуу тийш харуулав. Аравтын бутархайгаас хоёртын утгаас илүү авсаархан, хоёртын тооноос хөрвүүлэхэд хялбар байдаг тул арван хоёрт утгыг ашиглахад ашигладаг. "0x" угтвар нь дараах тоог арван зургаат буюу товчлолоор "зургаан өнцөгт" гэдгийг мэдэх боломжийг танд олгоно.

Хоёртын - Арван зургаа - Аравтын бутархай0000 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

Кодын өргөн нь хичнээн зүйлийг дүрсэлж болохыг тодорхойлдог. Дээр дурдсанчлан дээрх 4 битийн өргөн код нь 16 хүртэлх зүйлийг илэрхийлж болно (0-ээс 15 хүртэл); өөрөөр хэлбэл 2 удаа 2 -ийг 4 удаа авах буюу 2 -оос 4 -р хүч нь 16 -тай тэнцүү байдаг. N-бит кодын багтаамжийн богино жагсаалт энд байна.

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 нь 0-ээс 255 хүртэлх утгыг хадгалах чадвартай 8 битийн дөрвөн регистртэй. 4 бүртгэлийг тодорхойлоход 2 битийн код хангалттай:

00 F бүртгэл01 E бүртгэл10 D бүртгэл11 A бүртгэл

Тооцооллын код (ccc) BYOC-I нь арифметик/логик дөрвөн үйлдлийг дэмждэг. Ирээдүйд найман тооцооллыг өргөжүүлэхийн тулд 3 битийн кодыг ашиглана.

000 ADD, зориулалтын бүртгэлд 8 битийн хоёр утгыг нэмж, үр дүнг 001 SUB регистрийн аль нэгэнд хадгалж, 8 битийн хоёр утгыг зориулалтын бүртгэлд хасаад үр дүнг 010-011 регистрийн аль нэгэнд хадгална., логик БОЛОН хоёр 8 битийн утгыг зориулалтын бүртгэлд хадгалж, үр дүнг бүртгэлийн аль нэгэнд хадгална101 БУС, логик OR хоёр 8 битийн утгыг зориулалтын бүртгэлд хадгалж, үр дүнг бүртгэлийн аль нэгэнд хадгална110-аас 111 хүртэл, Ирээдүйд ашиглахаар нөөцлөгдсөн болно.

Үсрэх код (j) Үсрэлт нь болзолгүй (j = 1) эсвэл тэг биш тооцооллын үр дүнд (j = 0) хамаарч байгааг харуулсан 1 бит код юм.

Өгөгдөл/Хаягийн код (v… v)/(a… a) 8 битийн өгөгдлийг 00000000-аас 11111111 эсвэл 0-ээс 255 аравтын утгыг илэрхийлсэн тодорхой зааварт оруулах боломжтой. Энэхүү өгөгдөл нь 8 битийн өргөнтэй бөгөөд BYOC-I-ийн 8 битийн бүртгэлд хадгалагдах боломжтой. Аравтын арифметикийн хувьд бид тэргүүлэх тэгийг харуулдаггүй. Компьютерийн арифметикийн тусламжтайгаар бид тэргүүлэх тэгүүдийг харуулдаг боловч тэдгээр нь утгад нөлөөлдөггүй. 00000101 нь тоон утгаараа 101 эсвэл 5 аравтын бутархай юм.

Санал болгож буй лавлагаа

Хоёртын тэмдэглэгээ - https://learn.sparkfun.com/tutorials/binaryHexadecimal Notation -

Цаашид унших

Процессыг удирдахын тулд кодыг ашиглах санаа эрт дээр үеэс эхлэлтэй. Сонирхолтой жишээ бол Jacquard Loom юм. Автомат автомат станцыг модон картуудын гинжээр хянаж, нүх өрөмдөж, нэхэх зориулалттай янз бүрийн өнгийн утаснуудын кодыг төлөөлдөг байв. Би анх удаагаа Шотландад өнгөлөг tartan хийхэд ашигладаг байсныг харсан. Jacquard Looms -ийн талаар эндээс уншина уу.

Алхам 3: BYOC-I зааврын анатоми

BYOC-I зааврын анатоми
BYOC-I зааврын анатоми

BYOC-I-ийн кодыг харгалзан бид дараагийн түвшин болох зааварчилгаа руу шилждэг. BYOC-I-ийн зааврыг бий болгохын тулд бид кодыг зааврын дагуу тодорхой дарааллаар, тодорхой байршилд байрлуулдаг. Бүх кодууд бүх зааварт байдаггүй, гэхдээ тэдгээр нь тодорхой байршил эзэлдэг.

MVI зааврын төрөлд хамгийн их бит шаардагддаг, нийт 12 ширхэг. Зааварчилгааны үгийг 12 бит урт болгосноор бид бүх зааврыг багтаасан болно. Ашиглаагүй ("хамаагүй" гэж нэрлэдэг) битүүдэд 0 гэсэн утгыг өгнө. Энд BYOC-I зааварчилгааны багц байна.

  1. Шууд зөөх (MVI) - 00 dd vvvvvvvvФункц: 8 битийн өгөгдлийн утга V = vvvvvvvv -ийг очих регистр рүү шилжүүлэх dd. Гүйцэтгэсний дараа dd регистр нь vvvvvvvv гэсэн утгатай болно. Товчлол: MVI R, V, энд R нь A, D, E, эсвэл F. байна.
  2. Бүртгэлийг Бүртгүүлэх рүү шилжүүлэх (MOV) - 01 dd ss 000000Function: Өгөгдлийн эх регистрийн ss -ээс тодорхойлолтын регистр dd руу зөөх. Гүйцэтгэсний дараа хоёр бүртгэл хоёулаа эх бүртгэлтэй ижил утгатай байна. Товчлол: MOV Rd, Rs, энд Rd бол очих регистр A, D, E, эсвэл F ба Rs нь эх регистр A, D, E, эсвэл F. Жишээ нь: 01 11 01 000000 - MOV A, E - Утга шилжүүлэх E бүртгэлд А бүртгүүлэх.
  3. Тооцооллыг бүртгүүлэхийн тулд бүртгүүлэх (RRC) - 10 dd ss ccc 000 Функц: Эх сурвалжийн бүртгэл ss болон очих регистр dd ашиглан тогтоосон тооцоолол ccc -ийг хийж, үр дүнг очих регистрт хадгална. Товчлол: ADD Rd, Rs (ccc = 000 Rd + Rs хадгалагдсан Rd); SUB Rd, Rs (ccc = 001 Rd - Rd -д хадгалагдсан Rs); AND Rd, Rs (ccc = 100 Rd ба Rs Rd -д хадгалагдсан); OR Rd, Rs (ccc = 101 Rd OR Rs Rd -д хадгалагдсан). Жишээ: 10 00 11 001 000 - SUB F, A - F регистрийн үр дүнг F бүртгэлээс A регистрийн утгыг хасна уу.
  4. Янз бүрийн заавар (JMP) руу үсрэх (JMP) - 11 j 0 aaaaaaaa Функц: Гүйцэтгэлийг aaaa aaaa (a) хаяггүй болзолгүйгээр (j = 1) -11 1 0 aaaaaaaa Товчлол: JMP L, энд L нь аааа аааа Жишээ нь: 11 1 0 00001000 - JMP 8 - Гүйцэтгэлийг 8 хаягаар өөрчлөх 0 00000100 JNZ 4 Хэрэв сүүлчийн тооцоо тэг биш утгатай бол гүйцэтгэлийг 4 хаягаар солино.

Зааварчилгааны үгийн битүүдийг зүүн тийш (хамгийн чухал битийн MSB) баруун тийш (хамгийн бага ач холбогдолтой бит LSB) 11 -ээс 0 хүртэл дугаарлана. Кодуудын тогтсон дараалал, байршил дараах байдалтай байна.

Битүүд-Код11-10 Зааврын төрөл9-8 Очих газрын бүртгэл7-6 Эх сурвалжийн бүртгэл5-3 Тооцоолол: 000-нэмэх; 001 - хасах; 100 - логик ба; 101 - логик OR7-0 v… v ба a… a тогтмол утга (0 -ээс 255 хүртэл)

Зааварчилгааны багцыг дээрх зураг дээр нэгтгэн харуулав. Заавар бүр дэх кодуудын бүтэцтэй, эмх цэгцтэй харагдах байдлыг анхаарч үзээрэй. Үр дүн нь BYOC-I-ийн илүү энгийн загвар бөгөөд хүний ойлгоход хялбар байдаг.

Алхам 4: Компьютерийн зааврыг кодлох

Компьютерийн зааврыг кодлох
Компьютерийн зааврыг кодлох

Хөтөлбөрийн түвшинд шилжихийн өмнө дээр дурдсан BYOC-I зааварчилгааны багцыг ашиглан зарим жишээг зааж өгье.

1. 1 утгыг А бүртгүүлэхийн тулд шилжүүлээрэй. BYOC-I регистрүүд нь 0-ээс 255 хүртэлх утгыг хадгалах боломжтой. Энэ тохиолдолд А регистр нь зааврыг гүйцэтгэсний дараа 1 (00000001 binary) утгатай байх болно.

Товчлол: MVI A, 1 Шаардлагатай кодууд: MVI төрөл - 00; Очих газрын бүртгэл А - 11; Утга - 00000001 Зааварчилгаа: 00 11 00000001

2. А регистрийн агуулгыг D бүртгүүлэхийн тулд шилжүүлээрэй. Гүйцэтгэсний дараа хоёр бүртгэл хоёулаа анх А регистрт байх утгатай болно.

Товчлол: MOV D, A (Санаж байна уу, очих газар нь жагсаалтын эхний, эх сурвалж нь жагсаалтын хоёрдугаарт байна) Шаардлагатай кодууд: Type MOV - 01; Очих газрын бүртгэл D - 10; Эх сурвалжийн бүртгэл А - 11 Зааварчилгааны үг: 01 10 11 000000

3. Д бүртгэлийн агуулгыг нэмж А бүртгэлд оруулаад А регистрт хадгална. Гүйцэтгэсний дараа А регистрийн утга нь А регистр ба Д регистрийн анхны утгын нийлбэр болно.

Товчлол: ADD A, D (Үр дүнг очих газрын бүртгэлд хадгална) Шаардлагатай кодууд: RRC төрөл - 10; Очих газрын бүртгэл А - 11; Эх сурвалжийн бүртгэл D - 10; Тооцооллын нэмэх - 000 Зааварчилгааны үг: 10 11 10 000 000 (ccc эхнийх нь 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 00000000

Машины кодчилол нь нэлээд уйтгартай боловч энэ нь тийм ч хэцүү биш гэдгийг та харж байна. Хэрэв та машиныг жинхэнэ утгаар нь кодчилдог байсан бол угсрагч гэж нэрлэгддэг компьютерийн програмыг ашиглан товчлолоос (угсрах код гэж нэрлэдэг) машины код руу орчуулах байсан.

Алхам 5: Компьютерийн програмын анатоми

Компьютерийн програмын анатоми
Компьютерийн програмын анатоми

Компьютерийн програм гэдэг нь жагсаалтын эхнээс эхлэн компьютерийн гүйцэтгэдэг заавруудын жагсаалт бөгөөд жагсаалтыг дуустал нь үргэлжлүүлнэ. JNZ, JMP гэх мэт зааварчилгаа нь дараа нь гүйцэтгэх зааврыг өөрчилж болно. Жагсаалтанд байгаа заавар бүр 0-ээс эхлэн компьютерийн санах ойд нэг хаягийг эзэлдэг. BYOC-I санах ой нь 256 зааврын жагсаалтыг багтаах боломжтой бөгөөд энэ нь бидний зорилгод хангалттай байх болно.

Компьютерийн програмууд нь тодорхой даалгаврыг гүйцэтгэхэд зориулагдсан болно. Манай хөтөлбөрийн хувьд бид 1-ээс 5 хүртэл тоолох энгийн даалгаврыг сонгох болно. Мэдээжийн хэрэг "тоолох" заавар байхгүй тул эхний алхам бол ажлыг BYOC-I-ийн зохицуулж чадах алхам болгон хуваах явдал юм. хязгаарлагдмал зааврын багц.

Алхам 1 Бүртгүүлэхийн тулд 1 рүү шилжих AStep 2 А бүртгэлийг зөөх DStep 3 А бүртгэлийг бүртгэхийн тулд D бүртгэлийг нэмж, үр дүнг бүртгэлд хадгалах AStep 4 Эстеп 5 -ийг бүртгүүлэхийн тулд 5 -р шилжих ба E бүртгэлээс A бүртгэлийг хасах ба үр дүнг EStep 6 бүртгэлд хадгалах хасах үр дүн тэг биш байсан бол 4 -р алхам руу буцаж очоод үргэлжлүүлэн тоолоорой 7 -р алхам Хэрэв хасах үр дүн тэг байсан бол буцаж очоод дахин эхлүүлнэ үү.

Дараагийн алхам бол эдгээр алхмуудыг BYOC-I заавар болгон орчуулах явдал юм. BYOC-I хөтөлбөрүүд 0 хаягаар эхэлж, дараалан дугаарлана. Бүх заавар бэлэн болсны дараа зорилтот хаягийг хамгийн сүүлд нэмж оруулна.

Хаяг: Заавар - Товчлол; Тодорхойлолт0: 00 11 00000001 - MVI A, 1; A1 -ийг бүртгүүлэхийн тулд 1 -ийг зөөнө үү: 01 10 11 000000 - MOV D, A; А регистрийг D2: 10 11 10 000 000 - ADD A, D руу бүртгүүлнэ үү.; А бүртгэлийг бүртгүүлэхийн тулд D бүртгэлийг нэмж, үр дүнг A3 бүртгэлд хадгална уу: 00 01 00 00000101 - MVI E, 5; 5 бүртгэлийг зөөх E4: 10 01 11 001 000 - SUB E, A; А регистрийг Е бүртгэлээс хасаад хадгална уу. үр дүнг E5 бүртгэлд оруулна уу: 11 0 0 00000010 - JNZ 2; Хэрэв хасах үр дүн тэг биш байсан бол 3 -р хаяг руу буцаж ороод тоолж үргэлжлүүлээрэй 6: 11 1 0 00000000 - JMP 0; Хэрэв хасах үр дүн тэг байсан бол буцаж очоод дахин эхлүүлнэ үү.

Програмыг санах ойд шилжүүлэхийн өмнө хоёртын зааварчилгааны кодыг арван зургаа болгож өөрчлөх шаардлагатай бөгөөд үүнийг Logisim Hex засварлагчтай хамт ашиглах ёстой. Нэгдүгээрт, зааврыг тус бүр 4 битийн гурван бүлэгт хуваа. Дараа нь 2 -р алхам дээрх хүснэгтийг ашиглан бүлгүүдийг арван зургаат орон руу хөрвүүл.

Хаяг - Хоёртын зааварчилгаа - Хоёртын хуваах заавар - Заавар (Hex) 0 001100000001 0011 0000 0001 - 0x03011 011011000000 0110 1100 0000 - 0x06C02 101110000000 1011 1000 0000 - 0x0B803 000100000101 0001 0000 0101 - 010011000000000000000000000000000000000000000000000000 111000000010 1110 0000 0000 - 0x0E00

Хөтөлбөрийг туршихын тулд BYOC-I-ийн санах ойд шилжүүлэх цаг болжээ.

Алхам 6: Хөтөлбөрийг санах ойд шилжүүлэх, турших

Хөтөлбөрийг санах ойд шилжүүлэх, турших
Хөтөлбөрийг санах ойд шилжүүлэх, турших
Хөтөлбөрийг санах ойд шилжүүлэх, турших
Хөтөлбөрийг санах ойд шилжүүлэх, турших

Logisim "үндсэн" хэлхээг харахад BYOC-I блок нь Explorer панел дээр "BYOC-I" гэж бичигдсэн компьютерийн бодит хэлхээний тэмдэг юм. BYOC-I санах ойд програм оруулахын тулд:

  1. BYOC-I блокыг ("дэд хэлхээ" гэж нэрлэдэг) хулганы баруун товчийг дараад "хулганы баруун товчийг дараад" BYOC-I харах "гэснийг сонгоно уу.
  2. BYOC-I хэлхээ нь ажлын хэсэгт гарч ирнэ. "Програмын санах ой" тэмдэг дээр хулганы баруун товчийг дараад "Агуулгыг засах.." -г сонгоно уу.
  3. Logisim Hex Editor -ийг ашиглан дээр үзүүлсэн шиг арван зургаатын кодыг (зөвхөн тодоор бичнэ үү) оруулна уу.

Та одоо програмыг ажиллуулахад бэлэн байна. Explorer самбар дээрх "BYOC-I" дээр давхар товшиж үндсэн хэлхээ рүү буцна уу. Ажиллуулах ба дахин тохируулах оролтыг эхлүүлэхийн тулд "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 Гц -ийн удаан хурдыг сонгосон тул тооллогыг А бүртгэлээс үзэх боломжтой байв.

BYOC-I симуляцийн хамгийн дээд хурд (секундэд ~ 1000 заавар) нь орчин үеийн компьютеруудтай харьцуулахад маш удаан байдаг. Миний номонд тайлбарласан BYOC компьютерийн техник хангамжийн хувилбар нь секундэд 12 сая гаруй зааварчилгааг гүйцэтгэдэг!

Энэхүү зааварчилгаа нь машины хэлний програмыг задалж, компьютер хамгийн энгийн түвшинд хэрхэн ажилладаг талаар ойлголт өгсөн гэж найдаж байна. Ойлгохын тулд доорх хоёр програмыг кодлохыг хичээгээрэй.

  1. 5 -аас эхэлж 0 хүртэл тоолох програм бич. (ANS. Count5to0.txt доор)
  2. 2 -оос эхлэн тоог 7 -оос хэтрүүлэх хүртэл 3 -аар тоолно уу. Та жаахан сэтгэцийн арифметик хийж болно, тэнд буух болно гэдгийг мэдэж 8 байгаа эсэхийг шалгаад дахин эхлүүлнэ үү. Тодорхой тооноос "давсан" эсэхийг шалгадаг илүү ерөнхий хэлбэрээр програмаа бичээрэй. Зөвлөгөө: хасах нь сөрөг утгатай болоход юу тохиолдохыг судалж үзээрэй, жишээ нь 8 - 9 = -1 гэж хэлээрэй. Дараа нь логик AND дээр туршиж үзээд 8 битийн тоон дахь MSB нь "1" эсэхийг шалгаарай. (ANS. ExendsCount.txt)

BYOC-I компьютерын хувьд өөр хүндрэлтэй асуудлуудын талаар та бодож чадах уу? Хязгаарлагдмал байдлаас шалтгаалан өөр юу хийж чадах вэ? [email protected] хаягаар надтай туршлагаа хуваалцаарай. Хэрэв та микропроцессорыг кодлох сонирхолтой байгаа бол миний www.whippleway.com вэбсайтыг үзээрэй. Тэнд би машины кодчилолыг Arduinos -д ашигладаг ATMEL Mega цуврал гэх мэт орчин үеийн процессоруудад дамжуулдаг.

Зөвлөмж болгож буй: