Programarea în codurile mașinilor și în limba de asamblare - primii pași în codurile mașinilor - cel mai mult -

Mulți amatori nu întâmpină dificultăți serioase în a-și stăpâni experiența de bază. Pentru a face acest lucru, este suficientă puțină practică. Dar, mai devreme sau mai târziu, ei ajung la bariera "codului mașinii". Este trist, dar unii oameni se opresc în fața lui. Acest lucru nu este în nici un fel legat de lipsa de dorință sau capacitate, doar mulți nu știu de unde să înceapă. Dacă în BASIC puteți să începeți cu orice (în cazul în care calculatorul vă corectează), atunci sunteți aici cu un procesor unul câte unul și această metodă de încercare și de eroare nu funcționează.







Într-un cuvânt, există o barieră psihologică care poate fi dificil de depășit singură. Se știe că pentru a învăța să programați, trebuie să luăm și să începem programarea. Inforkom vă oferă următoarea abordare de compromis: în primul rând, în cadrul acestui capitol, luăm "taurul de coarne", începem doar programarea și apoi dedicăm restul cărții la prezentarea sistematică a materialului.

Acum dați două comenzi directe unul după altul:

Aceasta este comanda RET (retur). Acesta instruiește procesorul să oprească programul în codul mașinii în acest loc și să se întoarcă de unde provine, adică. în cazul nostru - în BASIC. Așa a procedat procesatorul și ați primit un mesaj de la BASIC "OK".

Dacă tot ceea ce citiți aici este de înțeles pentru dvs., atunci ați înțeles deja modul în care programele sunt compilate în codurile mașinilor. Puteți, bineînțeles, susține că beneficiile unui astfel de program nu sunt foarte multe, dar acum acest lucru nu este punctul. Este important să înțelegeți că o anumită secvență de numere poate fi o secvență de instrucțiuni pentru procesorul Z-80.

Din păcate, există puține care vorbește o secvență simplă de numere cum ar fi, cum ar fi 0 și 201. Reținând codurile tuturor comenzilor ale procesorului (și există aproximativ șapte sute sunt) nu este ușor pentru noi, dar este simplificată prin faptul că există o limbă intermediară între procesor și omul - limba asamblor. Fiecare cod are propriile sale mnemonice de asamblare. Mnemonice - un set de scrisori, standuri pentru cuvinte în limba engleză. De exemplu, programul nostru în asamblare este după cum urmează:

Traducerea acestor coduri mnemonice în codurile mașinilor poate fi de asemenea atribuită computerului. Pentru aceasta, există programe speciale, numite și asamblatori. Există și programe opuse - dezasamblatoare. Dimpotrivă, ele traduc codurile mașinilor în mnemonicele Assembler.

Și acele programe și altele sunt multe. Adesea ele sunt grupate împreună. Pachetele GENS3 / MONS3 de la HISOFT și EDITAS / MONITOR 16/48 de PICTURESQUE sunt distribuite pe scară largă. Aici GENS 3 și EDITAS sunt asamblori, iar MONS 3, MONITOR 16 și MONITOR 48 sunt dezasamblatoare.

Acum să revenim la primul nostru program și să încercăm să-l dezvoltăm oarecum, așa că face ceva. Procesorul Z-80 are mai multe registre, care au nume - "A", "B", "C" etc. Fiecare dintre ele poate conține un număr întreg de la 0 la 255 (adică un octet).

Există zeci de comenzi de procesoare care vă permit să copiați conținutul registrelor de la unul la altul și, de asemenea, să comunicați cu lumea exterioară, inclusiv. și cu RAM.

De exemplu, comanda Assembler LD B, A (cod mașină 71) înseamnă "încărcarea conținutului registrului A în registrul B". LD este o abreviere pentru LOAD (descărcare).

În mod similar, LD C, B (codul mașinii 72) înseamnă "încărcarea conținutului registrului B în registrul C." Puteți încărca registrele și numerele întregi. De exemplu, LD A, n - înseamnă "încărcați un număr întreg n în registrul A". unde n poate fi un număr de la 0 la 255. Înainte de aceasta, toate comenzile au fost un singur octet. Aceeași comandă - doi octeți. Mai întâi vine codul mașinii - 62, urmat de numărul în sine - n. De exemplu, LD A, 77 (încărcarea în registrul A 77) va arăta astfel: 62.77. Aici 62 este codul de operație, îi spune procesorului ce trebuie să facă și 77 este operandul. Rețineți că există operațiuni de trei octeți și patru octeți. Primul octet, ca regulă, este codul de operație, iar următorul octet sunt operanzii. Spunem "de regulă" deoarece există unele operații, codul cărora este scris în două octeți [nota 1].

Deci, suntem gata să scriem un program care va transfera un număr dintr-un registru al procesorului în altul.

Astfel, comanda Assembler LD (30008), A în codurile mașinii va fi scrisă ca 50, 56, 117.

Acum, putem muta deja conținutul celulelor de memorie de la unul la altul, copiindu-l prin registrul A al procesorului.

Puteți complica și mai mult sarcina și încercați să adăugați conținutul a două celule de memorie și să trimiteți rezultatul la spațiul de stocare în orice celulă. Pentru a efectua operații aritmetice, de exemplu, adăugarea, procesorul Z-80 are, de asemenea, mai multe comenzi. Luați în considerare comanda ADD A, B (codul mașinii este 128). ADD - adăugare.







ADD A, B înseamnă următoarele: "Adăugați conținutul registrului B al procesorului la conținutul registrului A și lăsați rezultatul în registrul A".

După cum puteți vedea, această comandă este un octet, deoarece toate indicațiile despre unde să obțină ce să facă cu ea și unde să trimită rezultatul, este deja acolo de unul singur.

Să presupunem că doriți să adăugați conținutul celulelor 30013 și 30014 și să puneți rezultatul și celula 30015. Apoi programul din Asamblare și din codurile mașinii va arăta astfel:

Descărcați pentru a înregistra În conținutul registrului А

Adăugați conținutul registrului B la conținutul lui A.

Nu există nicio operațiune. O pauză.

Reveniți la locul unde a fost apelat acest program.

Încercați acest program la lucru. Să doriți să adăugați două numere, de exemplu 50 și 70. Mai întâi, alocați memorie pentru acest program în codurile mașinilor.

20 PENTRU i = 30000 LA 30012: CITEȘTE q: POKE i, q: NEXT i

30 DATE 58, 61, 117, 71, 58, 62, 117, 128, 50, 63, 117, 0, 201

Se scriu în celulele 30013 și 30014 cele două numere pe care dorim să le adăugăm:

40 POKE 30013, 50: POKE 30014, 70

Introducem o comandă pentru a executa programul nostru în codurile mașinilor.

50 RANDOMIZE USR 30000

Și, în sfârșit, începeți programul nostru BASIC - RUN.

După o secundă secundă, va funcționa și ecranul va afișa mesajul OK.

Se pare că nimic nu sa schimbat, dar dacă verificați ce este în celula 30015, asigurați-vă că rezultatul adăugării este, adică. numărul 120.

PRINT PEEK 30015 vă va da: 120 OK

Deci, ne-am familiarizat deja cu mai multe comenzi ale procesorului Z-80. Acum va trebui să întrerupem o astfel de prezentare populară, deoarece sistemul de comandă al acestui procesor este destul de extins și cu această abordare ar trebui să o ia cu privire la o mie de pagini. Sperăm că ați depășit deja bariera psihologică și apoi continuăm dezvoltarea sistematică și treptată a sistemului de comandă al procesorului.

Aparent, ați înțeles că fiecare comandă din codurile mașinii corespunde propriilor mnemonii ale asamblorului, în care esența operației este codificată în mai multe litere. Din păcate, de obicei, literatura este scrisă de profesioniști pentru profesioniști și nu se deranjează să traducă mnemonicii în limba rusă, mai ales că nu există aproape nici o carte Z-80 în limba rusă (există mai multe traduceri departamentale). Prin urmare, "Inforkom" din "Manualul ..." (partea 3) a dat dicționarul un loc pentru a traduce asamblarea mnemonic în engleză obișnuită, și prin aceasta în limba rusă.

În concluziile acestui capitol, câteva remarci generale. Diferitele procesoare au sisteme de comandă diferite. Cunoașterea sistemului de comandă al procesorului Z-80 nu înseamnă că puteți înțelege codul mașinii altor computere asamblate pe alte procesoare, dar este destul de sigur că stapanirea lor va avea loc de zeci de ori mai repede.

Chiar și pentru procesorul Z-80 singur, mnemonicii nu au fost încă standardizați. Multe programe de asamblare, de exemplu, EDITAS. ZEUS. GENS 1 ... GENS 3 și alții au abateri sub formă de înregistrări mnemonice, dar sunt nesemnificative și întotdeauna specificate în instrucțiunile de însoțire ale programului.

Primii pași în codurile mașinii - Foarte - primul pas.

Primii pași din codurile mașinii - De ce să înveți programarea în codurile mașinilor.

Primii pași din codurile mașinii sunt arhitectura procesorului Z-80.

Forme de reprezentare a numerelor în procesor Z-80 - Sisteme numerice. Formă suplimentară binară de înregistrare. Zecimal aritmetică în termeni binari.

Comenzile aritmetice și logice - Comenzi de adăugare. Comenzi de subtragere. Comenzi de comparare. Comenzi logice.

Operațiuni de branșare - Comenzile de salt. Operațiuni într-un ciclu. Comenzile stivei. Apelarea subrutinelor.

Comenzi pentru accesarea ROM - Puncte de pornire în ROM. Descrierea calculatorului încorporat.

Comenzi pentru lucrul cu biți - Comenzi pentru mutarea, rotirea și verificarea biților.

Memorie - Instrucțiuni de procesare a blocului de memorie.

I / O - Comenzi pentru lucrul cu dispozitive externe.

Întrerupe - o descriere a sistemului de întrerupere al procesorului Z80.

Alte comenzi - o descriere a comenzilor specifice procesorului Z80.

Concluzie - sfârșitul primei părți a cărții și notele la aceasta.

Partea a II-a - "Atelierul de programare în codurile mașinilor." Introducere.

Caracteristicile procesorului Z80 - mai multe pagini ale unei scurte repetări a materialului din prima parte, o revizuire a principalelor caracteristici ale procesorului.

Extinderea sistemului de comandă al procesorului este o construcție aritmetică.

Extinderea sistemului de comandă al procesorului - construcții logice.

Extinderea sistemului de procesare a comenzilor - proiectarea transmisiei de date.

Extinderea sistemului de comandă al procesorului - structuri de ramificație.

Extinderea sistemului de comandă al procesorului - proiectarea și returnarea apelului subprogramului. Alte construcții.

Analiza programelor în codurile mașinilor - ieșire la bordura de benzi de culoare.

Analiza programelor în codurile mașinilor - ieșirea datelor pe ecran de la codul mașinii.

Analiza programelor în codurile mașinilor - gestionarea programului de la joystick-ul Kempston.

Analiza programelor în codurile mașinilor - controlați programul de la tastatură.

Analiza programelor în codurile mașinilor - verificarea memoriei RAM a calculatorului.

Analiza programelor în codurile mașinilor este o modalitate practică de a lucra cu un calculator.

Analiza programelor în codurile mașinilor este un exemplu de utilizare a întreruperilor de tipul al doilea.

Canalele și fluxurile sunt canale standard. Alte canale. Zona de informații despre canale. Conectarea firelor. Metode practice de lucru cu canale și fluxuri.

Supliment 2 - o prezentare generală a erorilor tipice care apar atunci când se programează în codurile mașinilor.

Partea a III-a - ghid de programare în codurile mașinilor. Introducere.

Sistem de comandă - un tabel rezumat al valorilor codului de la 0 la 255 pentru Basic și Assembler.

Sistemul de comandă este un tabel cu valorile codului pentru asamblare.

Tabelul 3 - sistemul de comandă al calculatorului încorporat.

Dicționar assembler mnemonics - toate mnemoniile codului mașinii procesorului Z-80 în ordine alfabetică.

Tabelul 5 - tabelul indicatorului de întrerupere de pe ROM.

Russificare - rusificare folosind simboluri UDG.

Russificare - rusificare prin înlocuirea generatorului. Russificare "sub imprimanta" și "sub mașină de scris".

Sfaturi utile - câteva recomandări practice legate de computerizarea computerului.

Concluzie - vă mulțumesc pentru atenția acordată cărții noastre. Dacă ați citit-o până la capăt și totul este clar pentru dvs., atunci ați făcut un mare pas înainte, dar totuși acesta este doar primul pas.







Trimiteți-le prietenilor: