Агуулгын хүснэгт:
- Алхам 1: Өөрчлөлтүүд + схемүүдийн хурдан тойм
- Алхам 2: CPU, санах ой ба санах ойн хяналт
- Алхам 3: Системийн статусын LED
- Алхам 4: Оролт ба гаралт
- Алхам 5: Оролт, гаралтыг дахин тохируулж дуусгах
- Алхам 6: Програмчлал
Видео: Z80 компьютерийг дахин үзэх: 6 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Өмнө нь би Z80 дээр суурилсан компьютер хэрхэн бүтээх талаар гарын авлага бичсэн бөгөөд хэлхээг аль болох хялбар байдлаар бүтээсэн бөгөөд үүнийг аль болох хялбар бүтээх боломжтой болгосон. Би бас энгийн ойлголтыг ашиглан жижиг програм бичсэн. Энэ загвар нь маш сайн ажилласан, гэхдээ би үүнд сэтгэл хангалуун байсангүй. Би програмыг ажиллуулах явцад програмчлахыг зөвшөөрсөн програмыг дахин бичиж эхлэв. Энэ нь кодын хэсгүүдийг EEPROM -д зориулахгүйгээр туршиж үзэхийг зөвшөөрсөн бөгөөд энэ нь эргээд EEPROM -ийг дахин програмчлахыг шаардах болно. Энэ нь надад хөгжилтэй санаа мэт санагдсангүй. Дараа нь би санах ойн орон зайг бодож эхлэв. Хэрэв би тоног төхөөрөмжийн хэсэг (IO голдуу) интерфэйс хийхийг хүсч байвал кодын хэсэг нь системд байгаа санах ойн хэмжээнээс давж магадгүй юм. Дизайн нь зөвхөн хаягийн автобусны доод байтыг ашигласан бөгөөд дараа нь ROM болон RAM хоорондын зайг сонгохдоо өндөр байтын доод хэсгийг ашигласан гэдгийг санаарай. Энэ нь надад ердөө 253 байт орон зай байсан гэсэн үг юм. Та яагаад 256 биш 253 гэж асууж магадгүй юм. Энэ нь миний шинэ код бичсэн програмын төгсгөлд гурван байтын өгөгдлийг оруулсан тул би үүнийг шинэ загвар дээр ажиллахаар өөрчилсөн тул үүнийг дараа нь авч үзэх болно).
n
Би өөр юу болоод байгааг харахын тулд хуучин схемүүдээ эргэж харлаа. Би санах ой сонгох хэлхээний жижиг алдааг олж харсан бөгөөд үүнийг тэнд очиход би арилгах болно. Хялбаршуулсан хувилбар: бүх бичих хүсэлт нь үргэлж RAM дээр тавигддаг байсан ч гэсэн биелүүлэх болно. Энэ нь санаа зовох зүйл биш байж магадгүй ч би энэ удаад үүнийг зөв хийхийг хүссэн юм. Үүнтэй холбогдуулан би шинэ схем зурж эхлэв. Энэ хуудсанд хавсаргасан хоёр зураг нь бодит хэлхээний өмнө ба хойно байна. Би спагетти утсыг маш их цэвэрлэсэн, инээдтэй биш байна.
n
Хэрэв та миний анхны мэдүүлгийг дагасан бөгөөд үүнийг дагахаар төлөвлөж байгаа бол та намайг үзэн ядах болно. Хэрэв та шинээр эхэлж байгаа бол азтай байна. Жагсаалтанд байгаа хэсгүүдийг (эсвэл түүнтэй адилтгах) аваад зүгээр л дагаж мөрдөөрэй.
Хангамж:
LM7805 - 5 вольтын зохицуулагч Z80 - CPU; AT28C64B - EEPROM системийн тархи. Компьютерийн firmware IDT6116SA - SRAM -д ашигладаг "байнгын" өгөгдөл хадгалах газар; хэрэглэгчийн код болон ерөнхий өгөгдлийг хадгалахад ашигладаг оролтын чип болгон ашигладаг74LS273 - Octal D -Latch with /MR; гаралтын чипTLC59211 - LED драйверын чип (74LS273 нь LED -ийг жолоодох чадвартай тул үүнийг дангаар нь гаргадаггүй) MC14572 - Энэ бол "Line Driver" чип боловч үүнийг санах ойн хяналтын логикийн хувьд төгс төгөлдөр гэж үзсэн. Энэ нь 4 инвертертэй бөгөөд 74LS32 - Quad OR gateCD4001 - Quad NOR gateCD4040 - 12 үе шаттай долгионы тоолууртай NAND ба NOR хаалгатай; Зурагдсан боловч хэрэгжүүлээгүй цаг хуваагч (системийг удаан цагийн хурдаар ажиллуулахад зориулагдсан) 2 10K Ом резистор - Нэгийг 555 таймерын хэлхээнд ашигладаг тул хүссэн утгаа ашиглаарай 4 1K Ом эсэргүүцэл - Нэгийг нь 555 таймерын схем, тиймээс хүссэн зүйлээ ашиглаарай. Өөр нэг нь LED жолоодоход хэрэглэгддэг тул хэрэв та хүсвэл 8x330 Ом резистор 8x10K Ом резистор автобус 11 LED - Гурван системийг системийн төлөв байдалд ашигладаг бол бусад найман нь гаралт юм. 8 -ийн хувьд би бар график дэлгэц ашигласан (HDSP -4836) 4 Конденсатор - LM7805 -ийг хоёр ашигладаг; 0.22uF ба 0.1uF. Нэг нь 555 таймерд зориулагдсан тул зөв гэж бодож байгаа зүйлээ ашиглаарай. Сүүлийнх нь асаалтыг дахин тохируулах явдал юм; 100uF2 N. O. Товчлуурын товчлуурууд - Нэгийг оролтонд, нөгөөг нь дахин тохируулахад ашигладаг 8 SPST DIP Switch - Өгөгдлийн оролт; Би Piano Key styleWire ашигладаг байсан. Маш олон утас
n
ТАЙЛБАР: MC14572 -ийн нүхний хувилбар хуучирсан боловч SMD хувилбар идэвхтэй хэвээр байгаа ("шинэ дизайны хувьд биш" гэсэн статус ч байхгүй) тул та үүнийг ашиглахын тулд хэлхээний самбар худалдаж авах шаардлагатай болж магадгүй юм. MC14572 -ийн оронд хоёр дахь 74LS32 -ийг ашиглаж болно (өмнөх ible -ийн "санах ойн сонголт хэлхээ" -ийг үзнэ үү)
Алхам 1: Өөрчлөлтүүд + схемүүдийн хурдан тойм
Схемийг хэрхэн унших вэ: Чип рүү чиглэсэн сум бол оролт: Оролт> -Чипээс харсан сум бол гаралт: Гаралт <-Автобуснууд сумны оронд шугам ашигладаг: Автобус |-
n
Ихэнх чипүүдийг яг нарийн зүүгээр нь зурсан байдаг. Эдгээр чипс дээр бага зэрэг дүрсэн байна. Ихэнх чипүүд нь зүү дугаар, шошготой байдаг. Тэднийг уншихад жаахан хэцүү байж магадгүй юм. Миний харандаа бүдгэрч эхлэв.
n
Цахилгаан хэлхээний холболтын хувьд шинэ дизайны зохион байгуулалт нь анхны хувилбараасаа ихэвчлэн өөрчлөгддөггүй. Би хаягийн доод хэсгийг дээд байт руу дурсамж руу холбож, дараа нь RAM/ROM сонгохдоо дээд зүсэлтийн доод хэсгийг (A12) ашигласан. Энэ нь ROM зай нь 0000-00FF-аас 0000-0FFF хүртэл явсан гэсэн үг юм. Хонины орон зай 0100-01FF-ээс 1000-1FFF хүртэл явсан. Би бас санах ойн хяналтын логикийг илүү сайн загвараар сольж, хоёр шинэ статусын LED (мөн зарим цавуу логик) нэмсэн. Би бас цаг хуваах хэлхээг зурсан (гэхдээ утсаа холбоогүй). Энэ нь хоёр функцийг гүйцэтгэх ёстой байв. Тодорхой үүрэг бол цагийн давтамжийг доош хуваах явдал юм. Нөгөө функц нь PWM (Pulse Width Modulation) зориулалттай, учир нь 555 нь 50% -ийн ажлын мөчлөгтэй долгион үүсгэдэггүй. Энэ хэлхээний хувьд энэ нь тийм ч чухал биш боловч хэрэв та хэдэн LED хөтлөхийн тулд цагийг ашиглахыг хүсч байвал үр нөлөөг нь анзаарах болно (нэг (LED) нь нөгөөгөөсөө бүдэг байх болно). Үлдсэн хэлхээ нь үндсэндээ өөрчлөгдөөгүй байна.
Алхам 2: CPU, санах ой ба санах ойн хяналт
Энэ бол миний өмнөх хувилбарыг уншигчид намайг үзэн яддаг хэсэг юм. Анхны бүтээцэд би зүгээр л утсыг холбоход бага зэрэг асуудал үүсгэж магадгүй юм шиг хэсгүүдийг самбар дээр шидсэн. Үр дүн нь хэн нэгэн дээр спагетти тавьчихсан, "утас!" Би үүнийг жаахан цэвэрлэхийг хүсч байсан тул эхлээд CPU, RAM, ROM -ээс бусад бүх зүйлийг хуулж эхлэв. Би бараг бүх оролтын хэлхээ, гаралтын хэлхээ, цавууны логикийг татаж авлаа. Үүнийг хийх нь намайг бараг л гомдоосон, гэхдээ энэ нь зайлшгүй шаардлагатай байсан. Би бүх өгөгдлийн холболтыг хэвээр үлдээж, хаягийн автобусны доод байтыг орхисон. Дараа нь би хаягийн автобусны дараагийн дөрвөн битийг (A8-A11) ROM чиптэй холбосон. Дахин програмчлахад хялбар болгохын тулд би энэ удаа чипийг тойрч гарахыг анхаарав. Би бас хаягийн холболтыг RAM чип рүү оруулав.
n
Ийм байдлаар би санах ойн хяналтын логикийг холбох хэрэгтэй болсон. Анхны схемд би процессорын /MREQ шугамыг /CE -тэй хоёр санах ойн чип рүү шууд холбож, дараа нь RAM /WE руу холбосон. Дараа нь би CPU /RD ба /MREQ -ийг логикоор эсвэл хамтад нь A9 -тэй холбож өгсөн. Үндсэндээ үүнийг бүх санах ойн хүсэлт RAM болон ROM хоёуланг нь идэвхжүүлсэн байхаар тохируулсан боловч A9 нь аль чип /OE -ийг сонгосон болохыг сонгоход ашиглагджээ. Энэ нь зүгээр байсан, учир нь санах ойн хүсэлт гаргах хүртэл чипүүд идэвхгүй хэвээр үлдэх бөгөөд унших хүсэлтийн явцад зөвхөн нэг /OE идэвхтэй байх болно. Энэ нь хөндлөн гарахаас сэргийлсэн боловч эвгүй нюанс бий болгосон. A9 -ийг зөвхөн аль чип өгөгдөл гаргадаг болохыг тодорхойлоход ашигладаг байсан бөгөөд CPU нь RAM /WE зүү рүү шууд нэвтрэх боломжтой байсан тул бичих бүх хүсэлт биелэгдэх болно. ROM -ийн хувьд энэ нь зүгээр байсан, учир нь түүний бичих горимыг 5В тэжээлд шууд холбож өгдөг. Гэхдээ RAM -ийг A9 -ээс үл хамааран бичих болно. Энэ нь ROM зайны байршлыг бичих оролдлого нь RAM орон зайд ижил байршилд бичигдэх болно гэсэн үг юм.
n
Үүний нэг шийдэл бол хяналтын логикийг дахин утастай болгох бөгөөд ингэснээр CPU нь чипс /OE ба WE тээглүүр рүү шууд нэвтрэх боломжтой бөгөөд дараа нь MREQ ба A12 ашиглан аль чип /CE -ийг жолоодохыг сонгох болно. Би энэ санаагаар явсан боловч анхны загвар шиг дөрвөн NOR хаалга, инвертер ашиглахын оронд даалгаварт тохирсон эвгүй жижиг чип олсон. Би зөвхөн чипт байгаа логик хаалгыг ашигладаг хэлхээг бий болгох ёстой байсан, гэхдээ энэ нь хангалттай хялбар байсан. A12 нь NAND хаалга ба NOR хаалга руу шууд дамждаг. /MREQ нь NOR хаалга руу орж, түүний магтаалыг NAND хаалга руу оруулна. NAND хаалга нь RAM -ийг /CE жолоодоход ашигладаг бөгөөд NOR гаралт нь урвуу болж ROM /CE жолоодоход ашиглагддаг. Энэ нь аль чипийг сонгохоос өмнө /MREQ бага байх ёстой бөгөөд ингэснээр A12 аль хувилбарыг сонгохоо сонгох болно. Энэ тохиргоог хийснээр одоо ROM руу бичих аливаа хүсэлт юу ч хийхгүй болно. Энэ нь хоёулангийнх нь оронд зөвхөн нэг чип идэвхтэй байдаг тул эрчим хүч хэмнэдэг. Логик чипийн хувьд бидний дотор ашиглагдаагүй хоёр инвертер байгаа хэвээр байна. Нэг нь дараа нь дасах болно, гэхдээ бид тийшээ очиход бид тийшээ очих болно.
Алхам 3: Системийн статусын LED
Энэ төслийг эхлүүлэхийн өмнө би тодорхой IC -тэй холбогдохыг оролдож байсан боловч надад асуудал тулгарч байсан. Юу болж байгааг сайн мэдэхгүй байгаа тул би эргэн тойрондоо шалгахын тулд LED бэхэлгээг ашигласан (резистор суурилуулсан угсралтын нэг нь). Үүнийг хийснээр надад өнөөг хүртэл ашиглагдаж байсан дурсамжийн санаа төрсөн юм. Үүнийг өмнө нь байсан оролтын LED -тэй хамт ашиглах ёстой байсан. Оролтын LED нь /WAIT дохионы үүсгүүрт холбогдсон бөгөөд энэ нь систем оролтыг хүлээж байгааг харуулж байна (би тийшээ очих болно, санаа зоволтгүй). Би IO бичихийг зааж өгөх LED нэмэх талаар бодож байсан боловч гаралтын LED -ууд өөрчлөгдөж байгаа нь үүний гайхалтай үзүүлэлт болно гэж би бодсон. Үүнийг бодоод үзвэл би одоо хүртэл нэмж болно. Гэсэн хэдий ч санах ойг уншиж, бичиж байгаа эсэхийг мэдэх нь надад ашигтай гэж бодож байна. За, энэ нь ямар ч байсан програмын дибаг хийхэд хэрэгтэй. Хөтөлбөрөө ажиллуулах гэж оролдохдоо би үүнийг маш их ашигласан: “Яагаад санах ойд бичээд байгаа юм бэ? Үүнийг хараахан хийх ёсгүй!"
n
Эдгээр LED -ийг хянахын тулд би дөрвөлжин NOR хаалгыг ашигласан. Би бүх хаалгыг ашигласан. Статусын дохиог үүсгэхэд ердөө хоёрыг ашигласан боловч чип нь LED асаах хүч чадалгүй байдаг. Тэд маш их хүчийг шингээх чадвартай тул би бусад хоёр NOR хаалгыг инвертер болгон ашиглаж, LED -ийг ийм байдлаар холбосон. Нэг LED нь уншихыг зааж өгөхөд, нөгөөг нь бичихэд ашигладаг бөгөөд унших, бичих хүсэлт нэгэн зэрэг гардаггүй тул би хоёр LED -д зөвхөн нэг эсэргүүцэл ашиглах замаар зугтаж чадсан юм. Декодлох шаардлагатай дохионуудын хувьд энэ нь бас хангалттай хялбар байсан. Би санах ой унших бүх хүсэлтийг зааж өгөхийг хүссэн тул эхний NOR хаалга нь оролт дээр /MREQ ба /RD -тэй байсан. Бичих статус нь арай илүү төвөгтэй байсан ч яг адилхан хялбар байсан. Би /MREQ -ийг нэг оролт болгон ашигласан хэвээр байгаа боловч /WR -ийг нөгөөгөөр нь ашиглах нь зайлсхийхийг хүсч байсан жижиг ялгааг үүсгэж болзошгүй юм. Энэ нь БҮХ бичих хүсэлтийг зааж өгөх болно. Би үнэхээр туулсан хүмүүсийг л хүсч байсан. Тэгэхээр би үүнийг яаж хийх байсан бэ? Зөвхөн RAM -ийг бичихийн тулд би системийг хэрхэн тохируулсныг санаж байна уу? Би RAM /CE -ийг NOR хаалганы өөр оролт болгон ашигласан. Энэ нь RAM -ийг сонгож бичих хүсэлт гаргах үед л LED асна гэсэн үг юм. LED өнгөний хувьд би унших заалт болгон улбар шарыг сонгосон (гэхдээ би зөвхөн шар өнгөтэй байсан), бичих заагчаар улаан өнгийг сонгосон.
Алхам 4: Оролт ба гаралт
Өмнөх алхам дээр би бусад бүрэлдэхүүн хэсгүүдийг самбар дээр нэмж оруулсан болохыг анзаарсан байх. Би орон зайг нөөцөлж байсан тул би хүссэн хэсгийг нь санамсаргүйгээр байрлуулахгүй байсан (ингэснээр би энэ бүрэлдэхүүн хэсгийн шинэ байршлыг олох хэрэгтэй болно). Намайг оролтын унтраалгуудыг орхиод цахилгаан тэжээлийн шугам руу залгасан болохыг та анзаарсан байх. Анхны байршил нь хамгийн тохиромжтой газар гэж би шийдсэн бөгөөд гаралтын LED -ийг ойролцоо (дээр) байрлуулахаар шийдсэн. Баарны дэлгэцийн баруун талд оролтын түгжээ байна. Үүний дээр гаралтын түгжээ, зүүн талд нь LED драйвер байна. Би дэлгэцийг драйвертай холбож эхэлсэн бөгөөд үүнийг хийх нь хамгийн хялбар байсан. Дараа нь би унтраалгыг оролтын түгжээний оролтын талд холбосон. Дараа нь би гаралтын түгжээний гаралтыг LED драйвертай холбосон. Энэ нь утас залгах нь эвгүй захиалга мэт санагдаж болох ч энэ нь тодорхой шалтгаантай байсан юм. Гаралтын түгжээний оролт нь өгөгдлийн автобус болон оролтын түгжээний гаралттай холбогдсон байх ёстой. Энэ санаа нь миний хийсэн оролтын түгжээний гаралтыг гаралтын түгжээний оролттой холбох явдал байв. Дараа нь миний хийх ёстой зүйл бол энэ замбараагүй байдлыг өгөгдлийн автобусанд холбох явдал байв. Эдгээр холболтууд бие махбодийн хувьд хаашаа явсан нь хамаагүй, учир нь тэд бүгд цахилгаанаар холбогдсон байх болно. Компьютер одоо бараг дуусч байна.
Алхам 5: Оролт, гаралтыг дахин тохируулж дуусгах
Уучлаарай, энэ алхамд ямар ч зураг алга. Зураг авахын тулд өмнөх алхамыг үзнэ үү.
n
Өмнөх алхмын сүүлийн зурган дээр би ногоон товчлууртай, өөр логик чип суулгасан болохыг та анзаарсан байх. Чип бол OR хаалга юм. /WAIT дохиог үүсгэхэд хоёр хаалгыг ашигладаг. За, нэг нь процессороос OR-ing /IORQ ба /RD ашиглан дохио үүсгэдэг. Гаралтыг хоёрдахь хаалга руу оруулна, эсвэл OR товчлуурыг дахин дарна. Товчлуур нь хаалганы оролтыг өндөр болгож, гаралтыг өндөр болгодог. Энэ гаралт нь процессор /WAIT зүү рүү тэжээгддэг. Дараагүй үед резистор нь оролтыг бага байлгадаг. Би эхлээд 10K эсэргүүцэл ашигладаг байсан боловч LS32 нь оролтонд хүчдэл өгдөг байсан. Резистор үүнийг хангалттай доошлуулаагүй тул би үүнийг 1K -ээр солих шаардлагатай болсон. Ямар ч байсан, IO унших хүсэлт гаргахад эхний болон хоёр дахь OR хаалга нь процессорыг хүлээхийг хэлдэг гэсэн санаа юм. Оролтын унтраалгыг хүссэн зүйлдээ тохируулсны дараа та товчлуурыг дарахад CPU нь хүлээлтийн нөхцлөөс гарна. Ногоон "оролт" LED -ийг би өмнө нь хэлж байсан шиг утастай болгосон тул /WAIT зүү буурахад гэрэл асдаг.
n
Гэхдээ бид хараахан дуусаагүй байна. Оролтын флип нь өгөгдлийн оролт хүчин төгөлдөр болсон үед түүнийг CPU -д оруулах ёстой гэдгийг мэдэгдэх дохио хэрэгтэй. Энэ цагийн зүү нь өндөр идэвхтэй байна. Өмнө нь бид үүнийг товчлууртай холбосон. Энэ нь хүчин төгөлдөр сонголт хэвээр байгаа боловч энэ удаад би үүнийг хоёр дахь OR хаалганы адил гаралт дээр тавихаар шийдлээ. Энэхүү IC нь жолоодох шаардлагатай /OE зүүтэй. Хэрэв энэ нь өндөр байх юм бол автобусанд хэзээ ч мэдээлэл оруулахгүй. Хэрэв нам дор байвал автобус үргэлж жолоодож байх болно. Үүнийг засахын тулд би гурав дахь OR хаалгыг ашигласан. Оролтууд нь /IORQ ба /RD бөгөөд гаралт нь түгжээний /OE руу шууд ордог.
n
Мөн гаралтын түгжээнд цагийн зүү хэрэгтэй болно. Дахин хэлэхэд энэ нь өндөр идэвхтэй байна. Миний схемд би /IORQ ба /WR ашиглан зүүг хөдөлгөж буй дөрөв дэх OR хаалгыг зурсан. Энэ нь цагийн зүүг бичих хүсэлт гаргах хүртэл өндөр байлгаж, дараа нь нам, дараа нь дахин өндөр болно гэсэн үг юм. Мэдээллийн автобус бичих оролдлого хийсний дараа тэр даруй хүчин төгөлдөр өгөгдөлтэй байх байсан ч энэ нь зүгээр байх байсан байх, гэхдээ инженерийн үүднээс авч үзвэл хогны хийц байсан. Эцсийн зураг авах хүртэл би энэ алдааг анзаарсангүй, гэхдээ би энэ холболтыг тасалж, дараа нь санах ойн хяналтын логикоос OR хаалганы гаралтыг ашиглагдаагүй инверторуудын аль нэгэнд өгч, гаралтыг нь цагны зүү рүү холбосон.. Би мөн схемийг засаж, өөр алдаа гаргасан. Би ч бас үүнийг зассан.
n
Энэ бүгдийг хийж дуусгасны дараа надад маш бага ажил хийх шаардлагатай байсан: дахин тохируулах хэлхээ. Би самбар дээр товчлуур нэмж, нэг талыг нь барихын тулд 10K эсэргүүцэл ашигласан. Нөгөө тал нь шууд газар руу явдаг. Өндөр тал нь /RESET зүү (CPU ба гаралтын түгжээ) бүхий чип бүрт очсон /RESET гаралт юм. Асаах тохиргоог хийхийн тулд би /RESET гаралтанд конденсатор нэмсэн. Энэхүү санаа нь том утга бүхий резистор нь харьцангуй том конденсаторыг аажмаар цэнэглэж, /RESET тээглүүрийг бага зэрэг цагийн циклд барихад хүргэдэг (CPU -д дөрвөн цагийн цикл хэрэгтэй). Энэ хэлхээний сөрөг тал нь юу болохыг та аль хэдийн таамаглаж магадгүй юм. Энэ нь ижил хувилбартай тул өмнөх хувилбартай ижил сөрөг байна. Товчлуурыг дарахад конденсатор нь товчлуураар дамждаг. Энэ нь таг болон товчлуурт хоёуланд нь хортой тул хэрэв та бүтээн байгуулалтаа арай илүү тогтвортой болгохыг хүсч байвал үүнийг дахин төлөвлөхийг хүсч болно. Би monostable горимд тохируулсан өөр 555 таймерын талаар бодож байсан. Гэхдээ үүгээр компьютерийн хэлхээ дууссан байна. Заа. Одоо үүнийг програмчлах шаардлагатай байна.
Алхам 6: Програмчлал
Энэ зүйлийг програмчлах нь хар дарсан зүүд байв. Би Arduino EEPROM програмист бүтээсэн. Энэ нь ажиллахгүй байсан. Би өөр хүний дизайн, кодчилол дээр үндэслэн өөр нэгийг барьсан. Ажилласангүй. Би хаяг, өгөгдлийн байтыг гараар тохируулах туршиж үзсэн арга руу буцаж орлоо. Би ямар нэгэн байдлаар үүнийг үймүүлэв. Би дахин оролдсон боловч буруу ойлгосон хэвээр байна. Би дахиад буцаж очоод ганц байтаар унтарсан болохыг олж мэдээд үүнийг засч залруулаад эцэст нь ажиллав, Бурханд талархаж байна.
n
Бодит хөтөлбөрийн хувьд энэ нь маш нарийн төвөгтэй бөгөөд дагахад хэцүү мэт харагдаж байна, гэхдээ тийм биш юм. Энэ бол үнэхээр энгийн зүйл юм. Үүний тал хувь нь эргэн тойрон дахь тоонуудыг хуулж байна. Нөгөө талыг нь 16 бит математик, нөхцөлт үсрэлт, бүр илүү олон тоог хуулах зэргээр хуваалцдаг. Тиймээс үүнийг даван туулж, энэ нь хэрхэн ажилладаг талаар танд хэлье.
n
Эхлүүлэх нь програмыг ашиглахын тулд бүртгэлийн зарим утгыг тохируулдаг. Хөтөлбөрийн давталт нь арай илүү төвөгтэй боловч тийм ч их биш юм. Нэгдүгээрт, энэ нь 00 порт дээрх A регистрийн оролтыг хүлээн авдаг. Дараа нь E регистр нь санах ойд бичигддэг. Эхний хоёр гогцоонд E регистр нь хог хаягдал өгөгдлийг агуулдаг тул бид үүнийг бичих боломжгүй тул ROM -ийн сүүлийн хоёр байт руу бичихийг оролддог; дараа нь хаягийн заагч (IY) нэмэгдэнэ. D -д хадгалагдсан утгыг E руу шилжүүлж дараа нь бичнэ. Дараа нь A -г D, L -д, E -ийг H. руу хуулна. Энэ нь утгыг харьцуулж, хасах, ZF (тэг туг) шалгах замаар хийгддэг. Харьцуулсан анхны утгыг В, С регистрүүдэд хадгалдаг. В ба С-ийг МЭӨ 16 битийн нэг бүртгэл гэж үздэг. Хэрэв утгууд ижил байвал програм нь RAM -ийн орон зай руу шууд ордог бөгөөд хэрэглэгчийн код оршин суудаг гэж үздэг. Хэрэв МЭӨ код таарахгүй байвал HL -ийг D ба E -ийн анхны утгуудаар дахин ачаалж, МЭӨ -тэй ижил аргаар SP -ийн утгатай дахин харьцуулна. Хэрэв энэ нь таарч байвал ижил үр дүнтэй боловч санах ойд гурван нэмэлт байт бичигдсэн болно. Байтууд нь CPU -ийг програмынхаа эхэн үе рүү буцахад хүргэдэг код юм (програм хангамжийг дахин тохируулах). Хэрэв хоёрдахь харьцуулалт таарахгүй байсан бол програм нь хэрэглэгчээс ямар үнэ цэнийг олж авах хүртэл эргэдэг.
n
LD SP, EDBFH; exe код (үсрэлтийг нэмнэ)
n
LD IY, FFEH; код хадгалах анхны санах ойн заагч
n
LD BC, EDC3H; exe код (давталт байхгүй)
n
гогцоо; Ассемблерын удирдамж тул энэ хэсэг санах ойд хаана байрладаг болохыг бид мэдэх шаардлагагүй болно
n
A, (00H); програмын өгөгдлийг авах
n
LD (IY+00H), E; E нь хадгалагдах кодыг агуулдаг
n
INC IY; санах ойн дараагийн байршил руу шилжих
n
LD E, D; ld D руу E
n
LD D, A; ld A руу D
n
LD H, E; ld E to H
n
LD L, D; ld D руу L
n
OR A; зөөх тугийг дахин тохируулах
n
SBC HL, BC; exe кодыг 2 оруулсан бол 0 буцаана
n
JP Z, 1000H; Хэрэв тийм бол програм руу очоод ажиллуулна уу
n
LD H, E; Үгүй бол эдгээрийг зохих утга болгон сэргээнэ үү
n
LD L, D.
n
OR A; Эхний хасах нь зөөвөрлөх туг тохируулсан байж магадгүй юм. Үүнийг цэвэрлэ
n
SBC HL, SP; exe кодыг 1 оруулсан бол 0 буцаана
n
JP NZ, давталт; Үгүй бол процедурыг давтана (утга авахаас эхэлнэ)
n
LD (IY+00H), C3H; Үгүй бол хэрэглэгчийн програмын төгсгөлд үсрэх кодыг оруулна уу
n
LD (IY+01H), 00H; үсрэлт нь үндсэндээ програм хангамжийг дахин тохируулах үүргийг гүйцэтгэдэг
n
LD (IY+02H), 00H; Бүртгэлийг өөрчилсөн тохиолдолд энэ нь бүрэн шинэчлэлт юм
n
JP 1000H; хэрэглэгчийн програм руу шилжих, ажиллуулах
Зөвлөмж болгож буй:
Дахин боловсруулсан болон дахин ашигласан материалаар хийсэн чанга яригч: 6 алхам
Дахин боловсруулсан болон дахин ашигласан материалаар хийсэн чанга яригч: " Хөгжим бол хүн төрөлхтний түгээмэл хэл юм. &Quot;-Хенри Вадсворт Лонгфеллоу Дахин боловсруулсан болон дахин ашигласан материалыг ашиглан чанга яригч хийх гайхалтай аргыг энд оруулав. Мөн хамгийн сайхан хэсэг нь тэд надад нэг ч төгрөг зарцуулаагүй. Энэхүү практик дахь бүх зүйл
Хуучин компьютерийг DIY цахилгаан хангамжаар дахин боловсруулах: 7 алхам
DIY цахилгаан хангамжийг хуучин компьютерийг дахин боловсруулах. Цахим төслүүддээ зориулж семинараа бэлдэж байна. Шилдэг бус хэвлэл мэдээллийн хэрэгсэл
Компьютерийг хянахын тулд хуучин зөөврийн компьютерын мэдрэгч самбарыг дахин ашиглаарай! 11 алхам (зурагтай)
Компьютерийг удирдахын тулд хуучин зөөврийн компьютерын мэдрэгч самбарыг дахин ашиглаарай !: PS/2 зөөврийн компьютерын мэдрэгчтэй самбар нь микроконтроллертой хамт хэрэглэгддэг хамгийн гайхалтай хэрэглэгчийн интерфэйс төхөөрөмжүүдийн нэг юм. Хуруугаа гулсуулж, тогших нь хөдөлгөөнийг удирдахад маш энгийн бөгөөд хөгжилтэй байдлаар нөлөөлж чадна. Энэхүү зааварчилгаанд нэгийг нэгтгэж үзье
ESP8266 төхөөрөмжтэй компьютерийг алсаас унтраах эсвэл дахин эхлүүлэх: 10 алхам (зурагтай)
ESP8266 төхөөрөмжтэй компьютерийг алсаас унтраах эсвэл дахин эхлүүлэх: Эндээс ойлгомжтой байхын тулд бид таны компьютерийг бусдын компьютер биш харин таны компьютерийг унтрааж байна. Энэ түүх иймэрхүү байна: Фэйсбүүк дээр нэг найз маань над руу зурвас илгээсэн. Бөөн математик, гэхдээ өглөө бүр 3 цагт тэд түгжигддэг. С
Алдарт алтоидын цагаан тугалганы хуулбарыг хэрхэн яаж хийх вэ. (ИНГЭЖ ЦАГИЙН ДАХИН ДАХИН ДАХИН ДАХИН ДАХИН ХӨГЖҮҮЛЭХ): 7 алхам
Алдарт алтоидын цагаан тугалганы хуулбарыг хэрхэн яаж хийх вэ. (БАЙГАА ЦАГ ДАХИН ДАХИН ДАХИН ДАХИН ДАХИН ДАХИН ДАХИН ХЭЛЭХ): Сайн байна уу Энэ бол эвдэршгүй зүйл бол метал хайрцгийг Altoids цагаан тугалганы ижил хэмжээтэй (эсвэл таны хүссэн хэмжээгээр) хэрхэн хийх тухай юм. Энэ нь юу гэсэн үг болохыг та мэдэх үү ???? Энэ нь та өөрөө цагаан тугалга хийх боломжтой гэсэн үг юм ….. Та ямар хэмжээтэй байхыг хүсч байна !!!!!!!!!!! Энд хэрхэн.МАТЕРИАЛ: 2