Când a fost asamblorul (Assembler) și limba mașinii? Introducere Sistemul de întrerupere a programului

Bugetul de stat și instituția de învățământ

Lucru: informatică

abstract

Subiect: Istoria limbajelor de programare.

Asamblare.

Efectuat: Student de gradul 8,

liceul №1467.

Sorokin Nikolai.

Cap: Tsvetkova Oksana Mikhailovna

Introducere

Cu o creștere a volumului de calcul, a apărut primul instrument portabil de numărare - "conturi".

La începutul secolului al XVII-lea a existat o nevoie de computere complexe. Dispozitive necesari pentru numărare capabile să funcționeze mare volum. Calcule cu precizie ridicată. În 1642, matematicianul francez Pascal a construit prima mașină de numărare mecanică - "Pascalina".

În 1830, omul de știință englez Babidge a oferit ideea primei mașini de calcul programabile ("mașină analitică"). Ar trebui să fie activat de puterea aburului, iar programele au fost codificate la pumn. Nu a fost posibilă implementarea acestei idei, deoarece nu este posibilă efectuarea unor detalii ale mașinii.

Primul a implementat ideea de hollerit perforat. El a inventat mașina pentru a procesa rezultatele recensământului. În mașina lui, a aplicat mai întâi electricitatea la calcule. În 1930, omul de știință american a inventat analizorul diferențial - primul computer din lume.

Un impuls mare în dezvoltarea tehnologiei de calcul a dat cel de-al doilea război mondial. Militarul a luat computerul la care Mark-1 a devenit - primul computer digital din lume, inventat în 1944 de profesorul Aykhan. Acesta a folosit combinația de semnale electrice și unități mecanice. Dimensiuni: 15 x 2,5 m, 750000 părți. Ar putea multiplica două 23 de numere de descărcare pentru 4 s.

În 1946, primul computer electronic a fost creat de grupul de ingineri de către Departamentul Militar al Statelor Unite - "Eniak". Viteză: 5000 de operații de adăugare și 300 de operații de multiplicare pe secundă. Dimensiuni: 30 m. În lungime, volum - 85 m3, greutate - 30 de tone. A folosit 18.000 el. lămpi.

Prima mașină cu un program cronic - "Edsak" - a fost creat în 1949, iar în 1951 a creat mașina "

Junivak "- primul computer serial cu un program cronic. În această mașină, a fost utilizată o bandă magnetică pentru înregistrarea și stocarea informațiilor

De ce am nevoie de limbaj de programare?

Computerele au apărut cu mult timp în urmă în MPE, dar numai în ultimul am început să le folosim atât de greu de utilizat în multe dintre mâinile vieții umane. Cu zece ani în urmă a fost o raritate pentru a vedea un computer personal - au fost, dar au fost foarte scumpe, și nici măcar o companie ar putea avea un computer în biroul meu. Si acum? Acum, în fiecare a treia casă, există un computer care a intrat deja profund în viața locuitorilor casei.

Însăși ideea de a crea inteligență artificială a apărut cu mult timp în urmă, dar numai în secolul al XX-lea a început să fie efectuată. La început au fost computere uriașe care afectează dimensiunea unei case uriașe. Utilizarea unei astfel de makhin, așa cum înțelegeți singur, nu a fost foarte convenabilă. Dar ce puteți face? Dar lumea nu stătea într-un singur loc de dezvoltare evolutivă - oamenii s-au schimbat, iar habitatul lor sa schimbat, împreună cu ei înșiși tehnologiile și se îmbunătățesc mai mult. Și computerele au devenit mai puțin și mai puțin în dimensiunea lor, până când au ajuns la dimensiunea de astăzi.

Dar, la urma urmei, trebuie, de asemenea, să comunice cu mașina - la urma urmei, care are nevoie de o mașină neangajată? La început, oamenii și-au comportat comunicarea cu computerele de Perfoch-Roll. Perfocardii sunt carduri mici pe care se aplică rândurile numerelor. Computerul a avut o "unitate", în care au fost introduse cărțile în sine și a pus găuri pe numere cu ace mici. Astfel de chat nu este în măsură să ia plăcere - la urma urmei, nu este foarte convenabil să transportați o grămadă de grămadă cardiacă, care după o singură utilizare a trebuit să arunce.

Dar, ca și alte tehnologii, procesul de comunicare a omului cu inteligență artificială Au trecut unele schimbări. Acum, o persoană își petrece conversația cu un computer folosind tastatura și mouse-ul. Este destul de confortabil și uneori chiar dă plăcerea unei persoane.

Mașinile moderne de calcul reprezintă una dintre cele mai importante realizări ale gândirii umane, al căror impact asupra dezvoltării progresului științific și tehnologic este dificil de supraestimat. Domeniul de aplicare al calculatorului se extinde continuu. Acest lucru contribuie în mare măsură la distribuirea computerelor personale și, în special, la microevm.

În timpul perioadei care a trecut de la anii '50, calculatorul digital a devenit o "magie", dar în același timp un jet scump, unic și supraîncălzit de lămpi electronice, fire și miezuri magnetice într-o mașină de dimensiuni mici - un computer personal - constând de milioane de dispozitive semiconductoare mici, care sunt ambalate în cutii de plastic mici.

Ca urmare a acestei transformări, computerele au început să se aplice peste tot. Ei gestionează activitatea registrelor de marcat, urmați activitatea sistemelor de aprindere a automobilelor, continuați să țineți cont de bugetul familiei sau sunt pur și simplu folosite ca un complex de divertisment ... dar este doar o mică parte din posibilitățile computerelor moderne. Mai mult, progresul rapid al microelectronicii semiconductoare, care este o bază de date a tehnologiei de calcul, indică faptul că nivelul de astăzi atât al computerelor, cât și aplicațiile lor sunt doar o asemănare slabă a ceea ce va veni în viitor.

Computerele încep să atingă viața fiecărei persoane. Dacă vă îmbolnăviți și dacă sunteți trimis la spital, voi ajunge acolo, în lumea în care oamenii trăiesc din computere (în ceea ce privește spitalele moderne, chiar veți întâlni computerele mai mult decât pacienții înșiși și acest raport va crește cu timpul, numărul excesului de greutate de pacienți). Studiu treptat echipamente de calculator Ei încearcă să intre în programe de învățare școlară ca un lucru obligatoriu pe care copilul îl poate cunoaște deja structura și capacitățile computerelor de la o vârstă fragedă. Și în școlile înșiși (în special în vest și în America) de mulți ani, computerele au fost aplicate pentru a efectua documentația de formare, iar acum sunt folosite în studiul multor discipline academice care nu sunt direct legate de tehnologia de calcul. Chiar și în școala primară, computerele sunt introduse pentru a studia cursurile de matematică și fizică elementară. Microprocesoarele înșiși nu au primit nu mai puțin răspândite decât computerele - sunt încorporate în sobe de bucătărie pentru gătit, mașini de spălat vase și chiar în ore.

Jocurile construite pe baza microprocesoarelor au fost foarte răspândite. Astăzi, industria jocurilor ocupă o mare parte a pieței, împingând treptat divertismentul altor copii. Dar pentru corpul copiilor, este foarte dăunător să stați ore întregi în spatele monitorului și să apăsați cu disperare cheile, deoarece un fel de copil poate dezvolta un fel de boală - când are doar unul în minte - un computer, și nimic altceva . Copiii cu o astfel de boală devin, de obicei, agresivi dacă au început să restricționeze accesul la jocuri. Astfel de copii dispare imediat orice dorință de a face ceva care nu se aplică unui computer și că nu sunt interesați - astfel încât încep să-și arunce studiile, ceea ce duce la consecințe foarte bune.

Deja, computerele pot pronunța în mod clar diverse fraze, fraze, joacă muzică i.t.d. O persoană poate scrie acum câteva cuvinte, sugestii și chiar compoziții muzicale pe calculatorul lor pentru ca computerul să le joace la orice moment numit.

Calculatoarele sunt, de asemenea, capabile să perceapă vorbirea orală ca semnale, dar trebuie să efectueze o treabă excelentă de descifrare audiată, dacă forma de comunicare nu este instalată. La urma urmei, aceeași echipă și aceeași persoană pot pronunța în mai multe moduri, iar tot timpul această echipă va suna diferit; Și în întreaga lume - miliarde de oameni și toată lumea rostește aceeași echipă în mai multe moduri diferite. Prin urmare, în acest moment este destul de dificil să se creeze un computer care să fie controlat prin vocea unei persoane. Multe firme încearcă să rezolve aceste probleme. Unele firme fac etichete mici pe drum în acest scop, dar totuși aceste etichete sunt încă aproape invizibile.

Dar problema recunoașterii vorbirii face parte dintr-o problemă mai largă numită recunoaștere a imaginii. Dacă computerele pot recunoaște imaginile bine, acestea vor putea să analizeze radiografiile și amprentele digitale, precum și să efectueze multe alte funcții utile (scrisori de sortare acum). Trebuie remarcat faptul că creierul uman se confruntă perfect cu recunoașterea imaginilor, chiar dacă există diverse zgomot și distorsiuni, iar studiile din acest domeniu au vizat abordarea capacităților relevante ale calculatorului la abilitățile umane, sunt foarte promițătoare. Dacă computerele pot recunoaște calitativ vorbirea și pot răspunde la aceasta într-o formă verbală, atunci, aparent, va fi posibilă introducerea în această formă a programului și a datelor. Acest lucru va permite ca scrisoarea să vorbească cu computerul pe care ar trebui să-l facă și să-și asculte opinia cu privire la acest subiect, bineînțeles că indicațiile eliberate sunt clare, nu conțin contradicțiile lui i.t.

Comunicarea orală cu computerele va simplifica programarea sa, dar rămâne o problemă nerezolvată, care limbă ar trebui să comunice cu aceasta. Mulți oferă limba engleză în aceste scopuri, dar nu are cerințele de precizie și neambigibilă din punctul de vedere al programelor de calculator și executabil. În acest domeniu, multe au fost deja făcute, dar multe de făcut.

De multe ori ne plângem că alte persoane nu ne înțeleg; Dar până acum, computerele personale în sine nu sunt capabile să ne înțeleagă pe deplin sau să înțeleagă ceea ce vrem să spunem cu o jumătate de clută. Și pentru o perioadă de timp, va trebui să fim mulțumiți cu astfel de mașini care urmează pur și simplu instrucțiunile, realizându-le "cu o precizie de milimetru".

Pentru a comunica cu computerele, chiar uneori. Perfocarts, apoi programatori au folosit limba de programare, foarte asemănătoare cu asamblorul modern. Aceasta este o limbă în care toate comenzile care intră în computer sunt scrise în detaliu cu cuvinte speciale și icoane (?).

În prezent, o limbă de programare la nivel superior sunt folosite în mod semnificativ, lucrând cu care este mult mai ușor decât cu un asamblator, deoarece în ele un cuvânt poate înlocui mai multe comenzi simultan. Și mai mult, cele mai multe limbi de programare la nivel înalt în numele comenzilor utilizate la comunicarea cu un echivalent de utilizare a calculatorului limba englezaCare facilitează în mod natural programarea. Dar există un minus în ele, comparativ cu limbile precum asamblorul - în asamblare, toate comenzile primite de la program sunt clar distribuite în memoria calculatorului, ocupând spații libere, câștigând astfel în mod semnificativ în viteză; Și limbile la nivel înalt nu știu cum, respectiv, pierderea în viteza de executare a programului. Și în lumea noastră de astăzi, toată lumea știe că: "Timpul este bani".

Deși, în timp ce calculatorul este inferior unei persoane din punct de vedere al activității creative, deoarece mașina nu este dotată cu astfel de calități care ar putea să o ajute să creeze ceva nou, ceea ce nu este introdus în memoria ei de către persoana însuși.

Battleshipul oamenilor pare să creadă că termenii "mașini de calcul" și "echipamente de calcul" sunt sinonime și le leagă cu echipament fizic, cum ar fi un microprocesor, afișaj, discuri, imprimante și alte bun-attes care atrag oamenii atunci când o persoană vede o persoană calculator. Deși aceste dispozitive sunt importante, la urma urmei, ele constituie doar "Ausberg Top". La etapa inițială utilizată computer modern Nu avem de-a face cu un computer, dar cu un set de reguli numite limbi de programare, care indică acțiunile pe care computerul trebuie să le îndeplinească. Valoarea importantă a limbajului de programare este evidențiată de faptul că mașina de calcul poate fi considerată ca un interpret hardware al unei limbi speciale numită limba mașinii. Pentru a asigura o funcționare eficientă a mașinii, sunt dezvoltate limbi de mașină, a căror utilizare reprezintă dificultatea cunoscută a persoanei. Majoritatea utilizatorilor nu simt aceste inconveniente datorită prezenței uneia sau mai multor limbi create pentru a îmbunătăți conexiunea unei persoane cu mașina. Flexibilitatea mașinii de calcul se manifestă în faptul că poate executa programul de traducător (în general, ONM sunt numite compilatoare sau interpreți) pentru a converti programele din limbile orientate spre utilizatori, programe în limba mașinii. (La rândul său, chiar și programele, jocurile, sistemul de sistem nu sunt altceva decât un program de traducător destul de simplu, care, în măsura în care munca sau jocul se adresează cu ajutorul echipelor sale la "interioare și externe", traducerea lor Echipe în limbi de mașină. Și toate acestea se întâmplă în timp real.)

Limbi de mașini, limbi de asamblare și

limbi de nivel înalt

Programatorii scrie programe în diferite limbi de programare, dintre care unele sunt direct ușor de înțeles cu computerul, în timp ce altele au nevoie de o etapă intermediară a emisiunii. Sute de limbi disponibile pot fi împărțite în trei tipuri generale:

1. Limbi ale mașinii

2. Limbi de asamblare

3. Limbi la nivel înalt.

Fiecare computer poate înțelege numai limba mașinii, care este limba naturală a unui anumit computer. Este strâns legată de hardware-ul său. Limbile mașinii constau, în general, din secvențe de numere (de obicei zero și unități), care sunt comenzi pentru efectuarea unei singure operații elementare. Limbile mașinii sunt dependente de mașină, adică O limbă specifică a mașinii poate fi utilizată numai cu un tip specific de calculator. Limbile mașinii sunt incomod pentru percepția omului.

După cum sunt distribuite computerele, a devenit evident că programarea pe limbile mașinilor este inhibată dezvoltarea echipamentelor informatice, este foarte lentă și pentru majoritatea programatilor cu o ocupație insuportabilă. În loc de secvența de numere, care pot fi ușor de înțeles de calculator, programatorii pentru reprezentarea operațiunilor elementare au început să aplice abrevierile vorbitoare de limbă engleză, care au format baza limbajelor de asamblare. Pentru transformarea programelor scrise în astfel de limbi, traducătorii de program au fost dezvoltați în limba mașinii. asamblerii. Transformarea a avut loc la o viteză egală cu viteza calculatorului. Odată cu apariția limbilor de asamblare, utilizarea computerelor sa extins semnificativ, dar a avut nevoie încă să scrie un număr mare de instrucțiuni chiar pentru a implementa soluția de sarcini cele mai simple. Pentru a accelera procesul de programare, au fost dezvoltate limbi de nivel înalt, în care este suficient să scrieți un operator pentru a efectua acțiuni complexe. Programe de conversie a unei secvențe de operatori într-un limbaj de nivel înalt într-o limbă mașină sunt numite compilatoare. În limbile de nivel înalt, instrucțiunile scrise de programatori arata adesea ca text obișnuit în limba engleză folosind semne matematice convenționale.

Unul dintre limbajul de nivel înalt este C. Limba de programare

Istoria limbii S.

Limba cu începutul a două limbi, BCPL și B. În 1967, Martin Richards a dezvoltat BCPL ca o limbă pentru scrierea sistemică software. și compilatoare. În 1970, Ken Thompson a folosit pentru a crea sisteme de operare UNIX timpurie pe computerul Dec PDP-7. Atât în \u200b\u200bBCPL, cât și în variabilele Via nu au fost împărțite în tipuri, fiecare valoare de date a ocupat un cuvânt în memorie și responsabilitatea pentru distincție, de exemplu, numerele întregi și numere reale au scăzut în întregime pe umerii programatorului.

Limba C) a fost dezvoltată (bazată pe c) Dennis Richie de la Bell Laboratories și a fost implementată pentru prima dată în 1972 pe computerul Dec PDP-11. Faima cu primirea ca limba UNIX. Astăzi, aproape toate sistemele de operare importante au fost scrise pe C și / sau C ++. După două decenii, este disponibil pe majoritatea computerelor. Nu depinde de hardware.

La sfârșitul anilor '70, sa transformat în ceea ce numim "tradițional c". În 1983, Standardul United al acestei limbi a fost stabilit de Comitetul American de Standarde Naționale în domeniul computerelor și de prelucrare a informațiilor.

Concluzie

Pe baza acestui rezumat, se poate concluziona că viața noastră este complet pătrunsă cu tehnologiile informatice. La ce oră va trece un pic și computerele vor sta oriunde, unde este necesară prezența unei persoane. Dar fără anumite cunoștințe, comunicarea cu computerul va fi imposibilă. Și pentru a face să lucreze pentru tine, trebuie să-l cunoști limba lingvistică Programare.

Lista literaturii utilizate

1. Tom Svan "Development Turbo Assembler", Dialectic, Kiev, 1996

2. BEREZIN B.I., BEREZIN S.B. " Cursul de pornire Programare ", Dialog Mii, Moscova, 1996

3. Prelegeri ale Compleva Nina Viktorovna pentru subiectul "Limbi de programare și metode de difuzare"

4.x.m.deter, Cum să programați pe C, Editura Binin, Moscova, 2000

Articolul va lua în considerare înființarea limbajului de asamblare în raport cu arhitectura Win32. Este o înregistrare simbolică a codurilor mașinilor. În orice mașină electronică de calcul, cel mai scăzut nivel este hardware-ul. Aici gestionarea proceselor are loc prin comenzi sau instrucțiuni despre limba mașinii. În acest domeniu, asamblatorul este proiectat să funcționeze.

Programarea pe asamblare

Scrierea programului de asamblare este un proces extrem de dificil și de cost. Pentru a crea un algoritm eficient, o înțelegere profundă a activității calculatorului, cunoașterea detaliilor echipelor, precum și o atenție sporită și precizia. Eficiența este un parametru critic pentru programare la asamblare.

Principalul avantaj al limbajului de asamblare este că vă permite să creați scurt și programe rapide. Prin urmare, este de obicei folosit pentru a rezolva sarcini foarte specializate. Codul care funcționează eficient cu componentele hardware este necesar sau este necesar un program, memorie sau timp de execuție.

Registre

Registrele în limba de asamblare se referă la celulele de memorie situate direct pe cristal cu Allu (procesor). O caracteristică a acestui tip de memorie este rata de apel la aceasta, ceea ce este mult mai rapid memorie cu acces aleator CALCULATOR. Se numește și RAM ultra-rapid (COP sau SRAM).

Există următoarele tipuri de registre:

  1. Registrele de uz general (RON).
  2. Steaguri.
  3. Pointer de comandă.
  4. Se înregistrează segmente.

Există 8 registre generale, fiecare dimensiune de 32 de biți.

Accesul la registrele EAX, ECX, EDX, EBX pot fi efectuate într-un mod de 32 de biți, 16 biți, BX, CX, DX, precum și 8 biți - Ah și Al, BH și BL etc.

Scrisoarea "E" în numele registrelor înseamnă extinsă (avansată). Numele în sine sunt asociate cu numele lor în limba engleză:

  • Înregistrarea acumulatorului (AX) - pentru operațiile aritmetice.
  • Counter Register (CX) - pentru schimburi și cicluri.
  • Registrul datelor (DX) - pentru operațiile aritmetice și operațiile I / O.
  • Registrul de bază (BX) - pentru pointer la date.
  • Stack Pointer Register (SP) - pentru pointerul Stack Vertex.
  • Stack Base Pointer Register (BP) - pentru indicatorul de bază Stack.
  • Inregistrare Index (SI) - pentru pointerul expeditorului (sursa).
  • Indexul de destinație Registrul (DI) - pentru destinatar.

Specializarea RON a asamblorului este condiționată. Ele pot fi utilizate în orice operațiune. Cu toate acestea, unele comenzi sunt capabile să aplice numai anumite registre. De exemplu, comenzile ciclului utilizează ESX pentru a stoca contorul de valoare.

Înregistrați steagurile. Aceasta implică octeți, care poate lua valori 0 și 1. setul de toate steagurile (de ordinul lor 30) arată starea procesorului. Exemple de steaguri: Flag Carry (CF) - Flag de transport, Steagul de depășire (de) - Overflow, Steagul imbricat (NT) - Sarcina Nessing Steag și multe altele. Steagurile sunt împărțite în 3 grupe: stare, control și sistemic.


Indicele echipei (indicatorul de instruire EIP). Acest registru conține adresa instrucțiunii care trebuie completată după cum urmează dacă nu există alte condiții.

Registrele segmentului (CS, DS, SS, ES, FS, GS). Prezența lor în asamblare este dictată de managementul special al RAM pentru a-și crește utilizarea în programe. Datorită acestora, a fost posibilă gestionarea memoriei de până la 4 GB. În arhitectura Win32, nevoia de segmente a dispărut, dar numele registrelor sunt păstrate și utilizate diferit.

Grămadă

Aceasta este o zonă de memorie alocată procedurilor. Caracteristica Stack este că cele mai recente date înregistrate în acesta sunt citite pentru citire. Sau cu alte cuvinte: primele înregistrări de stivă sunt preluate de ultimul. Puteți trimite acest proces ca un turn de dame. Pentru a obține un checker (checkerul de jos din baza turnului sau oricine în mijloc), trebuie mai întâi să eliminați tot ce se află în partea de sus. Și, în consecință, acesta din urmă așezat pe turn, când parsarea turnului este îndepărtată mai întâi. Acest principiu al organizării memoriei și lucrul cu acesta este dictat de economiile sale. Stack-ul este șters constant și de fiecare dată când o folosește o procedură.


Identificatori, numere întregi, simboluri, comentarii, echivalență

Identificatorul în asamblarea limbajului de programare are același înțeles ca în oricare altul. Este permisă utilizarea literelor latine, numerele și simbolurile "_", "", "" "," @ "," $ ". În acest caz, literele de capital și litere mici sunt echivalente, iar punctul poate fi doar primul caracter de identificare.

În numerele întregi în asamblare pot fi indicate în sistemele de referință 2, 8, 10 și 16. Orice altă înregistrare a numerelor va fi considerată ca un compilator de asamblare ca identificator.

Înregistrările privind datele simbolice sunt permise să utilizeze atât apostrofe, cât și citate. Dacă rândul de caractere necesită una dintre ele, regulile sunt după cum urmează:

  • În rândul încheiat în apostrof, citatele sunt indicate o dată, apostroful - de două ori: "poate" "T", "a spus el" a fi sau a nu fi "";
  • pentru un rând inclus în cotație, regula Reverse: citate duplicat, apostrofele sunt indicate ca fiind: "nu a putut" T "," barul meu preferat este "" Cat Negru "".

Pentru a specifica comentariul în limba de asamblare, simbolul semicolonului este utilizat - ";". Este permisă utilizarea comentariilor atât la începutul liniilor, cât și la comandă. Comentariul se încheie cu o traducere rând.

Directiva privind echivalența este utilizată în mod similar modului în care expresiile constante indică în alte limbi. Echivalența este indicată în modul următor:

Astfel, în program, toate intrările vor fi înlocuite cu, pe locul căreia este permisă specificarea unui număr întreg, adresă, șir sau alt nume. Directiva ECH este similară cu munca sa despre #define în C ++.

Directivele de date

Limbile de nivel înalt (C ++, Pascal) sunt tipărite. Adică, aceștia folosesc date care au un tip specific, există funcții ale procesării acestora etc. În limba de programare, nu există un astfel de asamblare. Există doar 5 directive pentru a determina datele:

  1. DB - Byte: Selectați 1 octet sub variabila.
  2. DW - WORD: Selectați 2 octeți.
  3. DD - Cuvânt dublu: selectați 4 octeți.
  4. DQ - Quad Word: Selectați 8 octeți.
  5. DT - zece octeți: selectați 10 octeți sub variabila.

Litera d înseamnă definirea.

Orice directivă poate fi utilizată pentru a declara orice date și matrice. Cu toate acestea, pentru corzile se recomandă utilizarea dB.

Sintaxă:

Ca operand, este permisă utilizarea numerelor, a caracterelor și a unei întrebări semne - "?", Care indică variabila fără inițializare. Luați în considerare exemplele:

REAL1 DD 12.34 CAR DB "C" AR2 DB "123456", 0; O serie de 7 octeți num1 dB 11001001b; Numărul binar Num2 DW 7777O; Numărul Octal Num3 DD -890D; Numărul zecimal num4 dd 0beah; Numărul hexagonal al varului DD? ; variabilă fără valoarea inițială a AR3 DP 50 DUP (0); o serie de 50 inițializați EL-TOV AR4 DUP 5 DUP (0, 1, 1,25); O matrice de 15 el-tov inițializat prin repetiții 0, 1 și 1,25

Echipe (instrucțiuni)

Sintaxa comenzilor de asamblare sau a instrucțiunilor de asamblare este după cum urmează.

:

Trimiteți-vă munca bună în baza de cunoștințe este simplă. Utilizați formularul de mai jos

Elevii, studenți absolvenți, tineri oameni de știință care folosesc baza de cunoștințe în studiile și munca lor vă vor fi foarte recunoscători.

programarea limbajului

Introducere

Limba de programare de asamblare

Istoricul limbii

Programare în asamblare

Avantajele și dezavantajele limbii

Turbo Assembler (TASM)

Sistemul de întrerupere a programului

Mecanismul de întrerupere

Lucrarea mecanismului de întrerupere

Concluzie

Bibliografie

aplicație

Introducere

Progresul tehnologiei informatice a definit procesul de apariție a noilor sisteme iconice diferite pentru a înregistra algoritmi - limbi de programare. Există multe limbi de programare, dar ne vom concentra pe asamblare.

În ciuda faptului că programatorul poate utiliza în prezent un număr mare de limbi de programare care sunt mult mai ușor decât asamblerul, cunoștințele de asamblare și capacitatea de a programa nu va fi niciodată inutilă. Acest fapt este confirmat de următoarele argumente:

1. În alte limbi de programare, nu este întotdeauna posibilă scrierea unei aplicații care îndeplinește pe deplin cerințele. Și, în unele cazuri, este complet imposibil. În asamblarea limbii de programare, puteți scrie orice aplicație.

2. Limbile de programare uneori nu pot furniza viteza necesară. Iar aplicația creată pe asamblare este întotdeauna rapidă.

3. Dimensiunea aplicațiilor create în limbi de nivel înalt am mult mai mareCe aplicații create pe asamblare.

4. Limba de asamblare vă permite să lucrați direct cu hardware, care, în unele cazuri, oferă un programator un avantaj și rezultatul dorit. Aplicația în limbă la nivel înalt funcționează cu dispozitive hardware prin module scrise, adică nu va permite programatorului să schimbe nimic și, în consecință, să obțină rezultatul necesar.

5. Cunoașterea asamblorului de limbă oferă un avantaj mai mare față de cei care programul numai în limbi de nivel înalt. Asamblarea cunoștință știe structura calculatorului și structura dispozitivelor hardware.

Scopul muncii:

descrieți limba de programare a asamblorului;

identificați beneficiile și deficiențele limbii;

descrie asambletorul Turbo;

Împărțiți-vă cu mecanismul de întrerupere.

Limba de programare de asamblare

Istorie de asamblare

Programatorii au fost deja familiarizați cu conceptul de subprogramime: Hopper Grace și colegii ei au folosit subprogramme la Harvard "Mark-1" în timpul celui de-al doilea război mondial, dar fiecare subprogram a rezolvat sarcina specifică.

Subprogramele sunt fragmentele independente ale programului de calculator utilizate de mai multe ori și cauzate de programul principal, dacă este necesar. De exemplu, o subrutină poate calcula rădăcina pătrată, iar celălalt va forța computerul să afișeze un litru.

Primii programatori au avut întotdeauna notebook-uri cu înregistrarea celor mai consumate subrutine, astfel încât, dacă este necesar, nu erau noi. Problema a fost că adresele aspectului comenzilor și subprogramurilor variabile în memorie variază în funcție de plasarea acestuia în acesta din urmă. Configurarea subrutinelor într-un anumit loc în memorie, în mod evident necesar automatizarea și pentru prima dată a fost făcută pe "educație". Programatorii Cambridge au început cu scrierea unui set de subrutine unificate, care au format biblioteca. După aceea, a fost suficient să introduceți doar o comandă scurtă - iar calculatorul a făcut toate lucrările la înființarea și plasarea subprogramului în interiorul programului.

Maurice Wilks a numit schema mnemonică pentru "educație" și biblioteca de subrutine la sistemul de colectare (în sistemul de asamblare engleză - de aici cuvântul "asamblator"), deoarece a colectat secvența de subrutine.

Asamblam (de la limba engleză. Asamblatorul este un colector - un program de calculator, compilatorul de text sursă al programului scris în limba de asamblare în limba mașinii.

Limba de asamblare în limba rusă este adesea menționată ca un asamblator. Traducătorul din această limbă este, de obicei, numit pur și simplu asambl, care, în unele cazuri, poate crea confuzie. Procesul de transmisie din limba de asamblare în codul mașinii este adesea numit ansamblu.

Folosind termenul "limbaj de asamblare" poate provoca o opinie eronată cu privire la existența unei singure limbi nivel scăzut sau cel puțin un standard pentru astfel de limbi care nu corespunde absolut adevărului. Prin urmare, la numirea unei limbi pe care este scris un program specific, este recomandabil să se specifice, pentru care arhitectura este destinată și pe care este scris dialectul limbii.

Programare în asamblare

Asamblerul este un limbaj de programare la nivel scăzut, care este un format pentru înregistrarea comenzilor mașinii, convenabil pentru percepția omului.

Comenzile limbajului de asamblare sunt una la una care corespund comenzilor procesorului și, de fapt, sunt o formă simbolică convenabilă de înregistrare a echipelor și argumentele lor. De asemenea, limba de asamblare oferă abstracții software de bază: legarea părților programului și a datelor după etichete cu nume simbolice și directivă.

Directivele Assembler vă permit să includeți blocuri de date în program (descrise în mod explicit sau citiți din fișier); repetați un anumit fragment al numărului specificat de ori; compilați un fragment cu condiție; Setați adresa de execuție a fragmentului, modificați valorile etichetelor în timpul procesului de compilare; Utilizați definițiile macro cu parametrii și altele.

Fiecare model de procesor, în principiu, are propriul set de comenzi și limba (sau dialectul corespunzător) al asamblorului.

Programele de asamblare pot fi foarte eficiente. De la programatori, cu abilități și abilități egale care lucrează în limba de asamblare, creați un program mai compact și foarte acționând decât același program scris în limbă la nivel înalt. Este aproape aproape pentru toate programele mici sau mijlocii. Din păcate, deoarece mărimea crește, programul de asamblare pierde o parte din avantajele lor. Acest lucru se datorează atenție programului de asamblare la detalii. După cum puteți vedea, limba de asamblare vă cere să planificați fiecare acțiune pe calculator. În programe mici, vă permite să optimizați funcționarea programului cu hardware. În programe mari, un număr mare de articole vă pot împiedica să lucrați eficient pe program, chiar dacă componentele individuale ale programului se dovedesc a fi foarte bune. Desigur, programarea în limba de asamblare îndeplinește nevoile de a nu fiecare program.

Programele din limba de asamblare sunt foarte precise. Deoarece această limbă permite programatorului să lucreze direct cu toate hardware-ul, programul de asamblare poate face ceea ce nu este disponibil pentru orice alt program. Nu există nicio îndoială că în programarea dispozitivelor I / O, unde controlul asupra descărcărilor individuale ale registrelor dispozitivului, programarea în limba de asamblare este singura alegere adecvată.

Este clar că eficiența și acuratețea limbii de asamblare oferă anumite avantaje. Dar detaliile sale creează unele probleme. Când ar trebui să aleg un limbaj de asamblare pentru programare?

Desigur, trebuie să utilizați programele de asamblare atunci când nu există altă modalitate de a scrie un program. De exemplu, programatorii IBM au scris utilizarea procedurilor de asamblare toate dispozitivele I / O pentru IBM PC. Pentru a gestiona dispozitivele I / O și sistemele de întrerupere, a fost necesară precizia limbii de asamblare, care nu ar putea oferi nici un alt limbaj de programare. În mod similar, în limba de asamblare din IBM, au fost scrise procedurile de diagnosticare, care ar trebui să verifice fiecare parte a echipamentului.

Limba de asamblare este, de asemenea, necesară în cazurile în care principalele programe sunt performanța programului. Poate fi timpul de execuție a timpului sau dimensiunea finală a programului. Biblioteca procedurilor matematice FORTRAN - un exemplu de program care necesită caracteristici buneatât în \u200b\u200bceea ce privește timpul și mărimea. Procedurile matematice fac parte din orice program din Fortran, deci ar trebui să ocupe cât mai puțin spațiu. În plus, aceste proceduri sunt gestionate de toate funcții matematice În programul de britanie și sunt adesea folosite. În consecință, ele trebuie efectuate rapid.

Ce program nu este potrivit pentru limba de asamblare? Desigur, puteți scrie orice program pe el, cu toate acestea, cu un program mare este mai bine să lucrați într-un limbaj de nivel înalt, cum ar fi C sau C #. Aceste limbi vă permit să vă concentrați asupra problemei dvs. Nu trebuie să faceți față în mod direct cu subtilitățile hardware și procesor. Limbile de nivel înalt vă permit să vă retrageți înapoi și să vedeți pădurea din spatele copacilor.

Când programați în limba de asamblare și numai prin intermediul unor programe de scriere în acest nivel de detaliu, puteți înțelege modul în care mașina funcționează la cel mai mic nivel. Dacă doriți să aflați despre computer, trebuie să fiți familiarizați cu limba de asamblare. Singura cale Pentru a realiza acest lucru: scrieți programe în această limbă.

Cele mai populare astăzi sunt pachetele Turbo Assembler (TASM) ale Borland, Macro Assembler pentru Windows32 (MASM32), creat de Hutch (pe baza companiei vechi Mash Microsoft), precum și asamblorul plat (FIMM) și Netwide Assembler (NASM) , Echipa de dezvoltare a echipei NASM dezvoltate. Toți acești asamblori oferă oportunități foarte largi pentru programator. Puteți scrie programe atât sub dos, cât și sub ferestre.

Există, de asemenea, multe alte tipuri de asamblare, numărul care crește. De exemplu: Asamblare Codex, asamblarea GEMA, asamblarea macroului de lumină (LZAM), asamblorul leneș (LZASM), asamblorul de masă (TDasm), asamblorul Newbasic ++ (Nbasm), asamblarea macro TMA etc.

Avantajele și dezavantajele limbii

Demnitate

Un programator priceput este de obicei capabil să scrie un program mai eficient pe un asamblator decât cei care sunt generați de traducători din limbile de programare la nivel înalt, adică pentru programele de asamblare, se caracterizează prin utilizarea unei comenzi mai mici și apeluri la memorie, care vă permite să măriți viteza și să reduceți dimensiunea programului.

Asigurarea utilizării maxime a capacităților specifice ale unei anumite platforme, care vă permite, de asemenea, să creați programe mai eficiente cu mai puține costuri de resurse.

La programarea pe asamblare, este posibilă accesul direct la echipament, inclusiv porturile I / O, registrele procesoarelor etc.

Limba de asamblare este utilizată pentru a crea drivere hardware și kerneluri de sistem de operare.

Limba de asamblare este utilizată pentru a crea bios "firmware".

Cu ajutorul limbajului de asamblare, se creează compilatoarele și interpreții la nivel înalt, iar compatibilitatea platformelor este pusă în aplicare.

Există o oportunitate de a studia alte programe cu lipsă cod sursa Cu ajutorul dezasamblului.

dezavantaje

Principalul avantaj al asamblorului este aproape complet egalizat de o optimizare bună în compilatoarele moderne de limbă la nivel înalt.

În virtutea orientării mașinii sale (nivel scăzut "), o persoană în comparație cu limbile de programare la nivel înalt este mai dificil de citit și de înțeles programul, este alcătuit din elemente prea" mici "- comenzi de mașină, în consecință, programare Iar depanarea sunt complicate, complexitatea crește, probabilitatea erorilor este mare. Creșterea semnificativă a complexității dezvoltării comune.

De regulă, mai puține biblioteci disponibile în comparație cu limbile moderne de programare industrială.

Nu există o portabilitate a programelor pe computere cu o altă arhitectură și sistem de comandă (cu excepția compatibili binare).

Turbo Assembler. (Tasm.)

Borland Assembler's Assembler Turbo este un asamblor multi-profil, cu o rezoluție de legături avansate, o viteză de asamblare de până la 48.000 de linii pe minut (pe un computer IBM PS / 2, modelul 60) compatibil cu macrobarmeul Microsoft Masm și o modalitate suplimentară de a Utilizați modul de sintaxă extins. Indiferent de experiența dvs. în programare, veți aprecia, fără îndoială, aceste caracteristici, precum și o serie de alte fonduri care facilitează foarte mult programarea pe asamblare.

Printre astfel de fonduri, puteți menționa pe scurt următoarele:

suport complet pentru procesorul 80386;

Îmbunătățite tipuri de tipuri sintactice;

directivele de definiție a segmentului simplificat;

Îmbunătățirea gestionării listei;

extinderea instrucțiunilor Pop și Push;

operatorul avansat de apel cu argumente și parametru lingvistic opțional;

etichete locale;

identificatori locali în stack și argumente de apel în proceduri;

structuri și asociații;

directive imbricate;

modul Quirk, emularea mamei;

debugging complet la nivelul sursei utilizând un debugger turbo;

utilitate de generare încrucișată încrucișată (TCREF);

fișiere de configurare și fișiere de comandă.

Turbo Assembler este un avantaj puternic care lucrează cu o linie de comandă care percepe fișierele sursă (fișierele cu o extensie * ASM *) și creează module de obiect de la acestea (fișierele cu o extensie *. Obj *). După aceasta, puteți utiliza programul Borland TLINK Layout. Exe, distins de mare viteză Layouts, pentru aspectul modulelor de obiecte obținute și creați fișiere executabile (fișiere cu extensia *. Exe *).

Turbo Assembler este conceput pentru a lucra cu procesoarele 80x86 și 80x87 (mai multe detalii includ instrucțiunile procesorului de serie 80x86 / 80x87, descrise în manualele relevante ale Intel).

Turbo Assembler, în plus față de sprijinul complet al traducătorului Microsoft, are caracteristici suplimentarecombinate în modul numit dezvoltatori ideali. Utilizarea acestui mod permite programatorului Novice să aplice un stil mai vizual și simplu de dezvoltare a programului. Programele mai experimentate care scriu pe asamblare pot folosi modul ideal, cum ar fi structurile încorporate, asociațiile.

O caracteristică importantă a modului ideal este aplicarea verificărilor de tip de date, similare limbilor la nivel înalt, care vă permite să identificați multe erori la scena de difuzare. Printre numeroasele alte avantaje importante ale modului ideal, pot fi evidențiate următoarele:

Posibilitatea de a folosi nume identice pentru a desemna membrii diferitelor structuri;

Aplicarea operatorilor de înaltă și scăzuți;

Calculul preliminar al expresiilor ECH;

Gestionarea corectă a segmentelor datelor combinate în grupuri;

Utilizarea îmbunătățită a directivelor;

Utilizarea rezonabilă a parantezelor în expresii.

Turbo Assembler transmite argumente la procedurile din limbile de nivel înalt în cadrul stivei, plasând argumente înainte de a apela procedura la stivă. Procedurile scrise în limbi de nivel înalt citesc argumente din stivă după cum este necesar. Când procedura este eliberată, poate elimina argumentele din stivă sau poate lăsa această operație pentru procedura de cauzare.

Într-un mod tradițional, cu care programele scrise în C ++ și Assembler sunt combinate, este o compilație de separare cu un aspect ulterior la un fișier executabil. În acest caz, puteți utiliza compilatorul Borland C ++, care îl numește Turbo Assembler pentru a difuza programul de asamblare.

Dezvoltarea programului Turbo Assembler include patru etape:

Prima etapă. Pregătirea textului sursă al programului și înregistrarea acestuia în formular fisier text (unul sau mai multe) cu un editor în format DOS cu o extensie *. ASM *.

A doua etapă. Asamblarea programului Utilizarea traducătorului TASM, rezultatul căruia este fișierul obiect cu extensia *. Obj *. Când programul constă din mai multe fișiere (module), ansamblul lor este efectuat independent unul de celălalt. Dacă erorile vor fi detectate în procesul de transmisie, fișierul obiect nu este creat și se formează un mesaj de eroare. Erorile sunt eliminate, după care se repetă difuzarea. Fișierul obiect (reprezentarea binadă a programului) nu poate fi rulat la execuție, deoarece nu conține informații despre încărcarea segmentelor programului în memoria computerului.

A treia etapă. Layout-ul programului este realizat de Linker (editorul link-urilor) Turbo Linker și este de a combina modulele de obiect la un fișier executabil cu atribuirea adresei de pornire a programului. Fisier executabil. are o extensie *. EXE *. Cele 2 și 3 etape definesc procesul de pregătire a fișierului executiv al programului numit traducere.

A 4-a etapă este de a depana un program folosind Debugger de Debugger Turbo, care va fi instrumentul principal când studiază formatele de comandă, codificându-le, precum și variabilele programului în memorie.

Sistemul de întrerupere a programului

Una dintre diferențele fundamentale ale computerului de la orice altă mașină este că PC-ul este capabil să răspundă la evenimente imprevizibile în timpul funcționării. Această abilitate este furnizată utilizând proprietățile speciale ale computerului - aparatul de întrerupere. Întreruperea permite computerului să suspende vreun efect propriu și să treacă la altul în funcție de ceea ce cauzează această întrerupere. De exemplu, apăsând tasta corespunzătoare de pe tastatură.

Abilitatea de a întrerupe rezolvă, ar părea cea mai dificilă problemă a eficienței calculatorului nostru. Pe de o parte, dorim ca computerul să se angajeze în acea lucrare pe care i-am dat-o. Pe de altă parte, avem nevoie să reacționăm la oricare dintre echipa noastră furnizată, de exemplu, folosind tastatura. Dacă computerul nu a putut fi distras doar prin a face ceea ce a fost pus în prealabil, el nu ar fi capabil să răspundă în timp util, fără a urma activitatea tastaturii. Pentru a răspunde la semnalele trimise de tastatură, precum și alte semnale care necesită atenție în timp ce computerul este ocupat cu o altă lucrare, acesta permite sistemului de întrerupere.

Microprocesorul PC-ului nostru are o capacitate "congenitală" de a întrerupe operațiunile, în timp ce are un mijloc fiabil de a amâna lucrările care au fost întrerupte. Pentru a face acest lucru, utilizați teancul de microprocesor. Când apare o întrerupere, înregistrarea a ceea ce a făcut computerul în acest moment stocat în stack, așa că la finalizarea întreruperii putem reveni la locul pe care trebuia să-l distrag. Aceasta este una dintre mai multe moduri de a aplica stiva, dar este cel mai important. Fără stivă, unde putem pune informații despre depozitare despre lucrarea efectuată, chiar ideea de întrerupere ar putea fi realizată.

Mecanismul de întrerupere

Întrerupeți (Întrerupător Eng.) - un semnal care spune procesorului despre apariția oricărui eveniment. În acest caz, execuția secvenței de comandă curentă este suspendată, iar controlul este transmis la manipulatorul de întrerupere care răspunde la un eveniment și îl servește, după care returnează controlul la codul întrerupt.

Întreruperea software-ului este o întrerupere sincronă pe care un program îl poate implementa utilizând o instrucțiune specială.

Pentru prelucrarea evenimentelor care apar asincron cu privire la program este cel mai potrivit pentru întreruperea mecanismului. Întreruperea poate fi considerată ca un eveniment special în sistemul care necesită o reacție instantanee. De exemplu, sistemele de fiabilitate îmbunătățite bine concepute utilizează o întrerupere a accidentelor în rețeaua de aprovizionare pentru a efectua procedurile de înregistrare a conținutului registrelor și a memoriei RAM în medii magnetice, astfel încât după recuperarea puterii, a fost posibilă continuarea lucrului din același loc.

Se pare evident că o mare varietate de întreruperi sunt posibile din diferite motive. Prin urmare, întreruperea este considerată ușoară ca atare: conectează numărul numit numărul de tip de întrerupere sau pur și simplu numărul de întrerupere. Cu fiecare număr de întrerupere, acesta sau eveniment este asociat. Sistemul este capabil să recunoască ce întrerupere, cu care numărul sa întâmplat și lansează procedura corespunzătoare acestui număr.

Programele pot provoca întreruperi cu un număr dat. Pentru a face acest lucru, folosesc comanda INT. Acestea sunt așa-numitele întreruperi de software. Întreruperile de software nu sunt asincrone, ca fiind cauzate de program.

În procesoarele de arhitectură X86, există un manual de instrucțiuni INT, al cărui argument este numărul de întrerupere (de la 0 la 255). Vibm computere compatibile PC Procesarea unor întreruperi sunt efectuate de BIOS subrutine stocate în ROM și acest lucru servește ca o interfață pentru accesul la serviciul BIOS. De asemenea, întreținerea întreruperii poate dura pe BIOS-ul cardurilor de extensie (de exemplu, carduri de rețea sau video), sistemul de operare și chiar programe normale (aplicate) care sunt în mod constant în memorie în timpul funcționării altor programe (T. N. Programe rezidente) . Spre deosebire de modul real, în modul protejat al procesoarelor X86, programele convenționale nu pot întreține întreruperile, această funcție este disponibilă numai pentru codul sistemului (sistemul de operare).

MS-DOS utilizează pentru interacțiunea cu modulele sale și a întrerupe aplicațiile cu numere de la 20 ore până la 3fh (numerele sunt prezentate într-un sistem de număr hexazecimal, așa cum este obișnuit când este programarea în limba de asamblare X86). De exemplu, accesul la setul principal de funcții MS-DOS se efectuează prin executarea instrucțiunii INT 21H (în acest caz, numărul funcției și argumentele sale sunt transmise în registre). Această distribuție a numerelor de întrerupere nu este fixă \u200b\u200bhardware și alte programe pot seta manipulatori de întrerupere în loc de sau peste manipulatorii deja existenți instalați de MS-DOS sau alte programe care, de regulă, sunt utilizate pentru a schimba funcționalitatea sau pentru a extinde lista de sistem Funcții. De asemenea, această oportunitate este viruși.

Lucrarea mecanismului de întrerupere

Fiecare întrerupere definită este identificată prin numărul său. De exemplu, un cronometru și o tastatură și o imprimantă au fiecare număr de întrerupere propriu. În ceea ce privește sistemul de bază I / O, programele sale de service sunt împărțite în grupuri, iar un număr de întrerupere este fixat pentru toate programele de grup.

Atunci când apare o întrerupere, numărul său din tabel este utilizat pentru a permite programului adecvat de procesare a întreruperii. Înainte ca un astfel de program să își pornească activitatea, mecanismul de microprocesor responsabil pentru prelucrarea întreruperilor lasă stiva despre modul în care a fost efectuată lucrarea înainte de întrerupere. După aceasta, se efectuează programul de procesare a întreruperii.

Programul de manipulare a întreruperii începe să lucreze, făcând măsuri de siguranță împotriva altei întreruperi posibile, dacă ar trebui efectuate operațiuni foarte importante sau complexe, care nu pot fi întrerupte. În mod tipic, astfel de programe includ o modificare a unui registru de segment care controlează accesul la memorie la memorie, precum și o intrare într-un teanc de informații suplimentare de stat care trebuie salvate la adăugarea a fost înregistrată automat la începutul întreruperii.

După finalizarea operațiunilor lor, programul de manipulare a întreruperii poate acționa din nou alte tipuri de întreruperi și poate efectua munca necesară. Când se execută operațiunile de întrerupere, programul de manipulare a întreruperii se restabilește starea inițială Mașinile în care aveau înainte de a întrerupe, iar calculatorul continuă să fie întrerupt.

De exemplu, ia în considerare programul care este executabil *. Fișier exe, după începerea pe care Steagul Rusiei apare periodic pe ecran. Perioada de apariții este de aproximativ 1 timp în 2 secunde (a se vedea apendicele). Acest program are următorul algoritm de lucru (figura 1):

Postat pe http://www.allbest.ru/

Smochin. 1. Algoritmul de lucru al programului.

Accesul software-ului la unitatea video BIOS este implementat utilizând o întrerupere de 10 ore. Când lucrați în modul text, următoarele funcții ale driverului sunt utilizate în mod obișnuit:

02h - Setați poziția cursorului;

03h - obțineți poziția cursorului;

05H - Setați stocarea video;

06h - inițializați sau derulați fereastra;

07h - inițializați sau derulați în jos pe fereastră;

09h - retrageți caracterul și atributul poziției cursorului;

0Ah - afișați un simbol în poziția cursorului;

0EH - afișați un simbol în modul Telelet;

10h, subfuncție 3H - comutați bitul de flicker / luminozitate;

13h - Afișați un șir în modul Teleletype.

Folosind funcțiile 06H și 07H într-un ecran de afișare specificat, sunt create ferestrele rectangulare color de dimensiune specificată. Dacă se afișează orice text în aceste ferestre, acesta poate fi derulat în sus și în jos folosind aceste funcții.

Funcțiile 09H, 0AH, 0EH și 13H sunt folosite pentru a afișa caractere individuale și caractere de caractere (în ciclu). Este prevăzut pentru încheierea aceluiași simbol al unui anumit număr de ori care poate fi utilizat la crearea unui cadru și alte ornamente.

Funcția 0EH răspunde la codurile de control prin efectuarea de acțiuni adecvate. Cursorul se mișcă după ieșirea fiecărui simbol.

Funcția 13h este proiectată să afișeze rânduri cu atribute ca fiecare caracter individual și întregul rând. Funcția poate fi efectuată în patru versiuni, în funcție de codul mod specificat în registrul Al.

Când afișați driverul BIOS pe ecran, trebuie să țineți cont de faptul că intrarea din tastatura Ctrl / C nu duce la finalizarea programului. Este necesar să se teamă de ciclurile de ieșire infinite pe ecran - puterea acestora este posibilă numai prin repornirea calculatorului.

Semnalele întreruperilor hardware externe (de la cronometru, tastatură, discuri etc.) Introduceți procesorul nu direct, ci prin controlerul de întrerupere, care este utilizat de cipul Intel 8259A. Prelucrarea întreruprii hardware include în mod necesar procedurile de control al controlerului de întrerupere. Organizarea sistemului de întrerupere a hardware este că concluziile dispozitivelor sunt legate de cele opt concluzii de intrare ale controlorului pe care apar semnalele de întrerupere. Ieșirea controlerului INT este conectată la intrarea microprocesorului de același nume. În același timp, în plus față de semnalul INT, inițierea procedurii de întrerupere în microprocesor, controlerul transmite numărul vectorului la microprocesorul pe liniile de date prin care ar trebui cauzată programul de procesare al întreruperii primite. Numărul vectorului transmis este format în controler prin adăugarea numărului de bază înregistrată într-unul din registrele sale, cu numărul de intrare la care a fost primită cererea. Numărul de vector de bază este introdus automat în controlerul în timpul încărcării inițiale a computerului. Controlerul este programat prin porturi de 20 ore și 21h. Deoarece vectorul de bază este întotdeauna egal cu 8, atunci numerele vectorilor atașați la întreruperea hardware sunt în zona de 8 ore ..., Gama FH.

În cazul nostru, este, de asemenea, necesar să se ia în considerare întreruperile cauzate de semnalele cronometrelor de sistem.

Întreruperile sunt proceduri gata făcute ca computerul să efectueze o sarcină specifică. Există întreruperi hardware și software. Întreruperile hardware sunt inițiate de echipament sau cu o placă de sistem sau de la o cartelă de prelungire. Acestea pot fi cauzate de un semnal cu cip cronometru, un semnal de la imprimantă, apăsând tasta de pe tastatură și multe alte motive. Întreruperile hardware nu sunt coordonate cu activitatea software-ului. Când se numește o întrerupere, procesorul își părăsește munca, efectuează o întrerupere și apoi se întoarce în locul anterior. Pentru a putea reveni exact la dreapta, locul programului, adresa acestui loc (CS: IP) este amintită pe stivă, împreună cu registrul de pavilion. Apoi, în CS: IP este încărcat adresa programului de procesare a întreruperii și este trimis la control. Programele de manipulare a întreruperii sunt numite uneori drivere de întrerupere. Acestea sunt întotdeauna completate de instrucțiunile Iret (returnarea de la întrerupere), care completează procesul începute cu întreruperea vechilor valori CS: IP și registrul de pavilion, dând astfel programului capacitatea de a continua executarea din aceeași stare. Toate PC-urile IBM utilizează cipul Timer 8253 (sau 8254) pentru a se potrivi cu impulsurile de la cipul ceasului de sistem. Numărul de cicluri ale ceasului sistemului este transformat într-un impuls, iar secvența acestor impulsuri este calculată pentru a determina timpul sau pot fi trimise la difuzorul computerului pentru a genera un anumit sunet de frecvență. Microcircuitul 8253 are trei canale independente identice, fiecare dintre acestea putând fi programate. Microscircuitul 8253 funcționează independent de procesor. Procesorul programează cipul și apoi se referă la alte cazuri. Astfel, 8253 acționează ca un ceas în timp real - consideră impulsurile sale indiferent de ceea ce se întâmplă în computer. Cu toate acestea, intervalul maxim programabil este de aproximativ 1/12 secunde. Pentru a număra intervalele de timp în ceas și minute, sunt necesare alte mijloace. Din acest motiv, impulsurile de la canalul zero al cipului cronometru sunt acumulate într-o variabilă în zona de date BIOS. Această acumulare se numește de obicei numărarea timpului. 18. De 2 ori Un al doilea canal de ieșire 0 este procesat de întreruperea hardware (cronometrul de întrerupere), care oprește procesorul o vreme și mărește contorul de timp.

Numărul 0 corespunde la miezul nopții 12: 00; Când contorul ajunge la valoarea echivalentului 24, este resetată la zero. Un alt moment în timpul zilei este ușor determinat de divizarea indicatorului contorului cu 18. 2 pentru fiecare secundă. Contorul de timp este utilizat în cele mai multe ori asociat cu timpul.

Concluzie

Asamblerul este un analog simbolic al unei limbi de mașină. Din acest motiv, programul scris în asamblare trebuie să reflecte toate caracteristicile arhitecturii microprocesorului: organizarea memoriei, metodele de abordare a operanilor, regulile de utilizare a registrelor etc. Datorită necesității de a ține cont de astfel de caracteristici, Asamblerul este unic pentru fiecare tip de microprocesoare.

În acest curs, materialul teoretic de pe limbă de nivel scăzut este asamblarea, avantajele și dezavantajele sale, principalele etape ale programării pe asamblare. Principiile de procesare a întreruperilor, ieșirea și introducerea informațiilor în moduri grafice și textuale, procesarea mesajelor temporizatorului de sistem, implementate un algoritm pentru efectuarea sarcinii, iar codul este difuzat în fișierul executabil.

Bibliografie

Kasvands E. G. Introducere în programarea în limba de asamblare. Partea 1 - M.: UNITI - Dana, 2006.

Yurov V. Assembler. Director special. - St.Petersburg. : Peter, 2007.

Ce este un asamblator. [Resurse electronice]. - modul de acces: http://www.assembler.webservis.ru.

Vaulin A. S. Limbi de programare. kn. 5 - M.: Presa de școală, 2008.

Malyutin E. A. Limbi de programare. - M.: Iluminare, 2008.

Abel P. Limba de asamblare pentru IBM PC și programare / Per. din engleza Yu. V. SALIKOVA - M.; Școala superioară 2007 - 447 p. : Il.

Program pe asamblare. [Resurse electronice]. - modul de acces: http://www.kalashnikoff.ru.

Zubkov S. V. Asamblarea pentru DOS, Windows și Unix. - M.: INFRA-M, 2009.

Bogumirsky B. Lucrări eficiente pe PC-ul IBM în Windows 95 SPB, Peter, 2007.

Yurov V., Khoroshko V. Curs de antrenament de asamblare. - St.Petersburg. : Peter, 2007.

aplicație

Codul programului.

; MOV AX, Date; Inițializare

mov DS, AX; Segment Registru DS.

; Citiți și salvați conținutul original al vectorului 8

mOV WORD PTR OLD_08H, BX

mOV WORD PTR OLD_08H + 2, ES

; Vom instala handler-ul nostru de întrerupere nou_08H

mOV DX, Offset New_08H

Împingeți DS; Salvați pentru un timp DS

Împingeți cs; Vom trimite conținutul CS.

int 21h; Apelați DOS (funcția 25h)

pop ds; Restabili ds.

; Acțiuni de slăbire efectuate în termen de 3 s, doar un program de focalizare

; A doua ramură a programului activat după 3 s

; Stripe albe

; Blue Stripe.

; Strip roșu

mOV CS: Timpul, 20

; Handler de întrerupere aplicat de la cronometru,

; Activat 18, de 2 ori pe secundă

Împingere ax; Salvați două utilizate

Împingeți bp; Într-un handler de registru

dec CS: \u200b\u200bTimpul; Decorați intervalul de timp

jnz iestint; Până la 0, ieșiți din întrerupere

; Conținutul celulei de timp a scăzut la 0, efectuați comutarea programului

mOV BP, SP; Bp \u003d stiva de sus curentă

mOV AX, FIN de offset; Deplasarea punctului de tranziție

mOV, AX; / Trimite-l la stivă pentru a plasa IP

mov ax, seg fin; / Segment punct de tranziție

mOV, AX; / Trimite-l la stiva în loc CS

ieșire: mov al, 20h; / EOI EOI în controler

out 20h, al; / Întrerupere

MOV AX, 0600H; AH \u003d 06 (derulare), al \u003d 00 (ecran complet)

MOV BH, 07; Atributul normal

MOV CX, 0000; Poziția stângă superioară

MOV DX, 184FH; Poziția corectă inferioară

Int 10h; Control în BIOS.

Mov ah, 02; Numărul funcției

MOV BH, 00; numărul paginii

Mov DH, 00; Numărul rândului

MOV DL, 00; Numărul coloanei

Int 10h; Instalați cursorul

pop bp; / Eliminați ambele

pop topor; / Registrul salvat

iret; / În afara întreruperii

timp DW 20; / Celulă pentru numărarea timpului

; / Câmpuri de date

vechi_08h dd 0; / Celulă pentru depozitarea vectorului original

Postat pe Allbest.ru.

...

Documente similare

    Evoluția limbilor de programare de la niveluri scăzute la momente moderne. Limbi de programare de a doua generație - Asamblam. Limbi imperative, funcționale, logice și orientate pe obiecte. Independența mașinii. Paradigme de programare.

    prezentare, adăugată 14.10.2013

    Studiul unor aspecte ale limbajului de asamblare și al calculatorului în ansamblu. Construcția de algoritmi pentru rezolvarea sarcinii în limbile de programare SI, Minte de Assembler și IBM PC. Elaborarea de fluxuri și scrierea programelor pe fiecare dintre limbile listate.

    cursuri, a adăugat 10/20/2014

    Învățarea asamblorului de limbă scăzută pentru a scrie un exemplu de program pentru o aplicație de 16 biți. Dezvoltarea și implementarea algoritmului pentru depunerea numerelor la gradul de numere pe teren pentru baza 2 (Modul 2). Ilustrație de creare a unei tehnici de aplicație DOS.

    lucrări de curs, a adăugat 11/08/2011

    Codurile mașinii și asamblarea. Primele limbi de programare la nivel înalt. FORTRAN Limba de programare. Avantajele și dezavantajele algolului. Programe științifice și contabile. Principiile de bază care au fost respectate la crearea unui limbaj de programare de bază.

    lucrări de curs, a fost adăugată 06/21/2014

    Limba de programare ca sistem de semnalizare formal conceput pentru a înregistra programe. Refalitul ca un limbaj algoritmic al funcțiilor recursive. Lisp ca asamblare axat pe lucrul cu structurile de listă. Prolog: Concept, Active fixe.

    prezentare, adăugată 22.02.2014

    Caracteristicile asamblorului - un limbaj orientat spre mașină a nivelului scăzut folosit pentru a crea aplicații simple. Programe de legare în diferite limbi. Formatul tipic pentru înregistrarea comenzilor, instrucțiunilor și directivelor lingvistice de asamblare. Dezvoltarea jocului "Snake".

    lucrări de curs, a fost adăugată 07/20/2014

    Caracteristicile limbilor de programare: poveste scurta, cronologie. Principalele tipuri de limbi de programare: asamblare; Baisik. Crearea și utilizarea formulelor în Excel. Aplicarea operatorilor în formule. Folosind funcții în Excel. Site Casă de vacanță.

    raport de practică, a adăugat 06/03/2011

    Introduceți și ieșiți utilizând modulul conectat la iO. Caracteristicile de lucru cu matrice unidimensionale și bidimensionale. Testarea stării steagurilor. Rrincips și abilități cu compilatorul și centrul. Dezvoltarea schemei algoritmului programului în asamblare.

    cursuri, a fost adăugată 02.12.2009

    Studiul caracteristicilor sistemului de operare, set de programe care controlează funcționarea programelor de aplicare și aplicații de sistem. Descrieri de arhitectură și software de sisteme moderne de operare. Avantajele asamblorului limbajului de programare.

    prezentare, adăugată 04/22/2014

    Asamblarea ca un analog simbolic al limbajului mașinii. Microprocesor Arhitectura: organizarea de memorie, metodele de abordare a operandului, regulile de utilizare a înregistrării. Textul programului. Etape de programare pe asamblor, algoritmi de execuție a sarcinii.

Asumator (ASM, asamblare); din engleza. Asamblați - colectați, montați) - limbaj de programare la nivel scăzut, program auxiliar ca parte a sistemului de operare pentru a transfera automat programul sursă care urmează să fie executat pe computer, pe limba mașinii; Tipul traducătorului. Conceptele asamblorului reflectă arhitectura mașinii electronice de calcul. Asamblarea este o formă simbolică a unei intrări de limbă a mașinii, a căror utilizare simplifică programele de scriere a mașinilor. Pentru același computer, pot fi dezvoltate diferite limbi ale asamblorului. Spre deosebire de limbile la nivel înalt, în care problemele de implementare a algoritmilor sunt ascunse de dezvoltatori, limba de asamblare este strâns legată de sistemul de comandă al computerului. Asamblorul oferă acces la registre, specificând metodele de abordare și descrierile operațiunilor în ceea ce privește comenzile procesorului. Poate conține un nivel mai ridicat: comenzile macro încorporate și definite care se potrivesc cu mai multe comenzi mașinii, selectarea automată a comenzii în funcție de tipul de operanzi, descrierile structurilor de date.

Caracteristici de asamblare

Asamblarea apelați, de asemenea, compilatorul din limba de asamblare la comenzile de limbă a mașinii. Un alt nume al unui astfel de compilator - Mnemokode. Este destinat prezentării într-o formă convenabilă (mnemonică) de coduri de comandă a mașinilor, asigură utilizarea eficientă a resurselor de sistem (procesor, memorie, periferie). Motocodul este utilizat în locuri unde este necesară viteza, limitată la dimensiunea RAM. Asamblatorul este numit și sistemul de comandă al procesorului central.

Sub fiecare arhitectură de procesoare și în fiecare sistem de operare există propriul asamblare. Asamblerii încrucișați permit mașinilor cu o singură arhitectură să asambleze programe pentru o altă arhitectură sau alt sistem de operare. Asamblorul oferă acces la registre, specificând metodele de abordare și descrierile operațiunilor în ceea ce privește comenzile procesorului. Asamblatorul poate conține unelte la nivel înalt: macrocomenzi încorporate și definite, corespunzătoare comenzilor multiple a mașinii, selectarea automată a comenzii în funcție de tipurile de operanzi, descrierile structurale de date.

Comenzile limbii de asamblare corespund comenzilor procesorului și sunt o formă simbolică de înregistrare a comenzilor și argumentelor. Limba de asamblare oferă legarea părților programului și a datelor după ce etichetele efectuate în timpul adiamentului (pentru fiecare etichetă, se calculează adresa, după care fiecare intrare a etichetei se înlocuiește cu această adresă). Deoarece sistemele de comandă a microprocesorului diferă, fiecare procesor are propriul set de comenzi în limba de asamblare și propriile sale compilatoare de asamblare.

De obicei, programele sau secțiunile codului sunt scrise în limba de asamblare în cazurile în care dezvoltatorul trebuie să optimizeze viteza (la crearea driverelor), dimensiunea codului. Majoritatea compilatoarelor permit combinarea în același program, codul scris în diferite limbi de programare. Acest lucru vă permite să scrieți programe complexe utilizând un limbaj de nivel înalt, fără a pierde viteza în sarcini critice, folosind piese scrise în limba de asamblare. Combinația este realizată prin introducerea fragmentelor în limba de asamblare în textul programului (directive de limbă specială) sau proceduri de scriere în limba de asamblare. Această metodă este utilizată pentru transformări simple de date, dar nu este aplicabilă într-un cod de asamblare complet cu date și subprogramuri cu o multitudine de intrări și ieșiri care nu sunt acceptate de limbi de nivel înalt.

În acest caz, utilizați o compilație modulară, când fiecare fișier de program este compilat în modulul obiect, care sunt apoi legate (asociat) în programul finit. Fișierele obiect sunt blocuri de cod și date ale mașinii, cu adrese incerte de referințe la date și proceduri din alte module de obiect, precum și o listă a procedurilor și a datelor sale. Linkerul colectează codul și datele fiecărui modul de obiect în program, calculează și umple adresele referințelor încrucișate între module. În timpul procesului de legare, programul se îmbină cu biblioteci statice și dinamice (care sunt arhive de fișiere obiect). Într-o compilație modulară, fiecare program de module obiect poate fi scris în limba sa de programare și compilate de compilatorul său (asamblator).

Limbaj de programare

Asamblerul este un limbaj de programare la nivel scăzut, care este un format pentru înregistrarea comenzilor mașinii, convenabil pentru percepția umană.

Comenzile lingvistice de asamblare sunt una într-una care corespund echipelor de procesoare și, de fapt, sunt o formă simbolică convenabilă de înregistrare (Mnemokode) de comenzi și argumentele lor. De asemenea, limba de asamblare oferă abstracții software de bază: legarea părților programului și a datelor după etichete cu nume simbolice și directivă.

Directivele Assembler vă permit să includeți blocuri de date în program (descrise în mod explicit sau citiți din fișier); repetați un anumit fragment al numărului specificat de ori; compilați un fragment cu condiție; Setați adresa de execuție a fragmentului, modificați valorile etichetelor în timpul procesului de compilare; Utilizați definițiile macro cu parametrii și altele.

Fiecare model de procesor, în principiu, are propriul set de comenzi și limba (sau dialectul corespunzător) al asamblorului.

Avantaje și dezavantaje

  • cantitatea minimă de cod redundant (utilizarea unui număr mai mic de comenzi și referințe la memorie). Ca rezultat - mare viteză și dimensiune mai mică a programului
  • volumele de coduri mari, număr mare. Sarcini minore suplimentare
  • citește de coduri slabe, dificultăți de sprijin (depanare, adăugare de oportunități)
  • dificultatea implementării paradigmelor de programare și a altor convenții complexe, complexitatea dezvoltării comune
  • mai puține biblioteci disponibile, compatibilitatea lor mică
  • acces direct la echipament: porturi I / O, registre speciale de procesoare
  • abilitatea de a scrie un cod de auto-modificare (adică metaprograming și fără a fi nevoie de interpret de software)
  • maximum "Fit" pentru platforma dorită (utilizarea instrucțiunilor speciale, caracteristicile tehnice ale "fierului")
  • intoleranța la alte platforme (cu excepția compatibile binare).

Sintaxă

Standardul general acceptat pentru sintaxa de limbi de asamblare nu există. Cu toate acestea, există standarde de facto - abordări tradiționale pe care majoritatea dezvoltatorilor de asamblare sunt aderă la. Standardele principale de informare sunt Intel-sintaxe și Sintaxă AT & T.

Formatul general pentru instrucțiunile de înregistrare este același pentru ambele standarde:

`[Tag:] Opcode [operand] [; comentariu]`

Aspectul este direct instrucțiuni mnemonice procesorului. Prefixele (repetiții, modificări precum adresarea etc.) pot fi adăugate la acesta. Ca operanzi, constante, nume de înregistrare, adrese în memoria RAM, etc. Diferențele dintre preocuparea standardelor Intel și AT & T sunt în principal ordinea de transfer de operanzi și sintaxa lor cu diferite metode de abordare.

Mecanicii folosiți sunt, de obicei, aceiași pentru toate procesoarele unei arhitecturi sau familii de arhitecți (între binecunoscutul - mnemonia de procesoare și controlerele Motorola, ARM, X86). Acestea sunt descrise în specificațiile procesorului.

De exemplu, procesorul Zilog Z80 a moștenit sistemul de comandă Intel I8080, a extins-o și a schimbat mnemonicile (și înregistrează denumirile) în felul lor. De exemplu, am schimbat Intel Mov pe LD. Procesoarele de foc Motorola au moștenit sistemul de comandă Z80, tăindu-l. În același timp, Motorola a revenit oficial la Mnemonics Intel. Și, în momentul de față, jumătate din asamblarea pentru minge de foc lucrează cu mnemonics Intel și jumătate cu Mnemonics Zilog.

Directivă

În plus față de instrucțiuni, programul poate conține directive: comenzi care nu sunt trimise direct la instrucțiunile mașinilor și managerii compilatorului. Setul și sintaxa vor diferi în mod semnificativ și depinde de nu de platforma hardware, ci de la compilatorul utilizat (generând dialecte de limbi într-o singură familie de arhitecturi). Ca un set, pot fi alocate directive:

  • definirea datelor (constante și variabile)
  • gestionarea organizației organizației în parametrii de memorie și de ieșire
  • modul de funcționare al compilatorului
  • tot felul de abstracții (adică elemente ale limbilor la nivel înalt) - de la înregistrarea procedurilor și funcțiilor (pentru a simplifica punerea în aplicare a paradigmei de programare procedurală) la structurile și ciclurile condiționate (pentru paradigmă programare structurală)
  • macrocomenzile.

Originea și critica termenului "limbaj de asamblare"

Acest tip de limbi a primit numele de la numele traducătorului (compilator) din aceste limbi - asamblator (eng. Assembler - colector). Numele acestuia din urmă se datorează faptului că nu au existat limbi de nivel superior pe primele computere, iar singura alternativă la crearea programelor care utilizează asamblarea a fost programată direct în coduri.

Limba de asamblare în limba rusă este adesea numită "asambl" (și ceva legat de acesta este "asamblator"), care, potrivit traducerii în limba engleză a cuvântului, este incorect, dar se potrivește în regulile limbii ruse. Cu toate acestea, asamblarea însăși (program) este, de asemenea, numită pur și simplu "asamblare", și nu "compilatorul de limbi de asamblare" etc.

Utilizarea termenului "limbaj de asamblare" poate provoca, de asemenea, o opinie eronată cu privire la existența unui singur limbaj de nivel scăzut sau cel puțin un standard pentru astfel de limbi. Atunci când numit limba pe care un program specific este scris, este recomandabil să se specifice, pentru care arhitectura este destinat și pe ce dialect al limbii este scris.

Elemente de sintaxă:

Exemple:

Salut Lume!

Exemplu pentru versiuni ale Intel X86 (IA32)

mOV AX, CS MOV DS, AX MOV AH, 9 MOV DX, OFFSET HELLO INT 21H XOR AX, AX INT 21H HELLO: DB "! Hello World", 13, 10, "$"

Salut Lume!

Exemplu pentru versiuni de amiga

mișcare. L #DOS se mișcă. L 4. W, A6 JSR - $ 0198 (A6); Oldopenlibrary se mișcă. L D0, A6 Beq. s. Out mișcare. L #Helloworld, D1 a) Moveq # 13, D2 JSR - $ 03ae (A6); WriteChars b) JSR - $ 03B4; Putstr se mișcă. L A6, se mișcă A1. L 4. W, A6 JSR - $ 019E (A6); CloseBrary. OUT RTS DOS DC. b "dos.library", 0 Helloworld DC. B "Bună ziua!" , $ A, 0

Salut Lume!

Exemplu pentru versiuni ale Atarist

mișcare. L #helloworld, - (A7) Move # 9, - (A7) capcana # 1 addq. L # 6, A7 Move # 0, - (A7) Capcana # 1 Helloworld: DC. B "Bună ziua!", $ 0D, $ 0A, 0

Salut Lume!

Exemplu pentru versiuni ale Intel X86 (IA32)

NASM Linux este utilizat prin sintaxa Intel. Compilație și legare:

  • nasm -f elf -o hello.o hello.asm
  • ld -o salut hello.o

Secțiune. DATE MSG DB "Bună ziua, World!", Secțiunea 0xa len Ech - MSG. Text global _Start _start :; Punct de intrare MOV MOV EAX, 4; "SCRIE" sistem de apel MOV EBX, 1 MOV ECX, MSG; Pointer la datele MOV EDX, len; Cantitatea de date int 0x80; Call Core Mov EAX, 1; Sistemul "_exit" MOV EBX, 0; Retur 0 (toate bune) int 0x80; Chemați kernelul

Salut Lume!

Exemplu pentru versiuni ale PDP-8

/ - Comentarii.

/ Hello World pe Asamblor pentru decembrie PDP - 8 * 200 Bună ziua, CLA LLC TLS / TLS Setează semnalizatorul de imprimare. TAD caracteristi / Creează un registru de index DCA IR1 / pentru a primi caractere TAD M6 / configurarea contorului pentru DCA Enhance caractere Count /. Apoi, Tad I IR1 / Obțineți un simbol. Tip JMS / tipul său. Isz numără / face altceva? JMP Următorul / Nu, introduceți un alt tip HLT, 0 / Tip Subrutina JMP TSF JMP. - 1 TLS CLA JMP I tastați caracteristici ,. / Utilizat ca valoare inițială IR1. 310 / H 305 / E 314 / L 314 / L 317 / O 322 / R 314 / L 304 / D 241 /! M6, - 15 Count, 0 IR1 \u003d $ 10

Salut Lume!

Exemplu pentru versiuni ale PDP-11

Programul este scris pe Macro-11 macroassembler pentru a compila și rula acest program în comanda sistemului de operare RT-11:

Macro Hello.

Erori detectate: 0

Link Hello - link. Rulați Hello - Rulați

Titlu Hello World; Nume. Mcall. Ttyout ,. Ieșiți Bună ziua :: MOV #MSG, R1; Adresa inițială a șirului este $ 1: MOVB (R1) +, R0; Obținem simbolul următor pentru pahar; Dacă zero, ieșiți din ciclu. Ttyout; În caz contrar, imprimați simbolul BR1 $; Repetați ciclul făcut :. Ieșiți Mess :. Asciz / salut, lume! /; String Hello, lume! . Sfârșitul Hello; Sfârșitul programului Hello

Salut Lume!

Exemplu pentru versiuni ale sistemului / 360, System / 370

IBM System / 360/370/390 Limba de asamblare de bază.

// Adunarea Exec Start principal Balr 2, 0 UTILIZAREA *, 2 PRINT OPEN MVC BUF, HW PUT PRINT ÎNCHIDERE PRINT EOJ HW DC CL132 "Hello World" BUF DS CL132 PRINT DTFPR IOAREA1 \u003d BUF, DEVADDR \u003d SYSLST, blksize \u003d 132, * Dispozitiv \u003d 3203, Control \u003d Da, Printov \u003d Da END Main / * // Exec Lnkedt // Exec / * / & & & & & &

Salut Lume!

Exemplu pentru versiuni ale Apple II

* Bună ziua pentru 6502 Apple] [* ******************************** Strout Equ $ db3a ldy #\u003e salut lda #< HELLO JMP STROUT HELLO ASC "HELLO WORLD !", 00

Salut Lume!

Exemplu pentru versiuni ale PDP-10

Chttyo - toate intrarea / ieșirea se efectuează utilizând canale I / O. Cel mai bine este să faci nume simbolice pentru acele canale pe care le folosiți și să le porniți cu Ch. Definiți aceste nume utilizând operatorul MIDAS \u003d\u003d.

Apelul este o denumire simbolică pentru a apela un apel de sistem. Formatul său: .Call.

Deschide deschide canalul de intrare / ieșire pentru utilizare. Necesită doi parametri - numărul canalului și numele dispozitivului în Sixbit.

Pierde% LSFIL este un apel de sistem care imprimă un mesaj de eroare de intrare / ieșire dacă brusc sa întâmplat.

IOT este un apel de sistem care este de fapt angajat în intrare / ieșire. Ca parametru, trebuie să specificați canalul și adresa care conține codul de simbol pentru ieșire. De exemplu, "H reprezintă h.

Titlu PrintHello A \u003d 1 chttyo \u003d\u003d 1; Canal pentru ieșire. Start:; Deschiderea canalului Tty. . Apelați [Setz? Sixbit / Deschis / [. UAO, Chttyo]? [SIXBIT / TTY /] ((SETZ))]. Pierde% lsfil. Iot chttyo, ["h]; Imprimați simbolul World Bună ziua .. iot chttyo, [" e]. Iot Chttyo, ["L]. Iot Chttyo, [" L]. Iot chttyo, [o]. Iot chttyo, [^ m]; simbol Șir nou . Iot chttyo, [w]. Iot chttyo, ["o]. Iot Chttyo, ["R]. Iot Chttyo, [" L]. Iot chttyo, ["d]. Valoare; program, oprire :) sfârșitul sfârșitului

Numerele FIBONACCI:

Exemplu pentru versiuni ale MIPS32

Marte emulator. Concluzie Consola Marte:

Numerele Fibonacci sunt: \u200b\u200b1 1 2 3 5 8 13 21 34 55 89 144 - Programul este terminat de funcționare -

Programul afișează 15 numere Fibonacci. Numărul de numere poate fi modificat în secțiunea.Data.

Spațiul de date: .Sciiz "" Cap: .Sciiz "Numerele Fibonacci sunt: \u200b\u200b\\ n" Fib: .Word 0: 15 Dimensiune: .Word 15 .Text Principal: LA $ T0, FIB LA $ T5, Dimensiune LW $ T5, 0 ($ T5) Li $ T2, 1 Adăugați $ F0, $ F2, $ F4 SW $ T2, 0 ($ T0) SW $ T2, 4 ($ T0) Addi $ T1, $ T5 - 2 Buclă: LW $ T3, 0 ($ T0) LW $ T4, 4 ($ T0) Adăugați $ T2, $ T3, $ T4 SW $ T2, 8 ($ T0) ADDI $ T0, $ T0, 4 Addi $ T1, $ T1, - 1 BGTZ $ T1, Buclă La $ A0, FIB Mutare $ A1, $ T5 JAL Print Li $ V0, 10 Syscall Print: Adăugați $ T0, $ Zero, $ A0 Adăugați $ T1, $ Zero, $ A1 La $ A0, șeful Li $ V0, 4 SYSCALL OUT: LW $ A0, 0 ($ T0) Li $ V0, 1 syscall la $ a0, spațiu Li $ v0, 4 syscall addi li $ v0, 1 la $ a0, ($ t2) syscall la $ a0, string1 Li $ v0, 4 syscall mult $ t1, $ t2 mflo $ T1 Li $ v0, 1 la $ a0, ($ t1) SYSCALL LA $ A0, String2 Li $ V0, 4 Syscall Addiu $ T2, $ T2, 1 Beq $ T2, 16, Endloop J Loop Endloop: Li $ V0, 10 SYSCALL.