Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Microprocessor-programmering

De "woordenschat" van instructies die een bepaalde microprocessorchip bezit, is specifiek voor dat chipmodel. Een Intel 80386 gebruikt bijvoorbeeld een geheel andere set binaire codes dan een Motorola 68020, voor het aanwijzen van equivalente functies.

Helaas zijn er geen standaarden voor microprocessorinstructies. Dit maakt programmeren op het allerlaagste niveau erg verwarrend en gespecialiseerd.

Wanneer een menselijke programmeur een reeks instructies ontwikkelt om een ​​microprocessor direct te vertellen hoe iets moet worden gedaan (zoals het automatisch regelen van de brandstofinjectiesnelheid naar een motor), programmeren ze in de eigen 'taal' van de CPU. Deze taal, die uit dezelfde binaire codes bestaat die de besturingseenheid in de CPU-chip decodeert om taken uit te voeren, wordt vaak machinetaal genoemd. .

Hoewel machinetaalsoftware kan worden "opgeschreven" in binaire notatie, wordt het vaak in hexadecimale vorm geschreven, omdat het voor mensen gemakkelijker is om mee te werken. Ik zal bijvoorbeeld slechts enkele van de algemene instructiecodes voor de Intel 8080 microprocessor-chip presenteren:

Hexadecimale binaire instructiebeschrijving ----------- -------- ------------------------------- ---------- | 7B 0111011 Verplaats inhoud van register A naar register E | | 87 10000111 Voeg inhoud van register A toe aan register D | | 1C 00011100 Verhoog de inhoud van register E met 1 | | D3 11010011 Uitvoerbyte van data naar databus 

Zelfs met hexadecimale notatie kunnen deze instructies gemakkelijk worden verward en vergeten. Voor dit doel bestaat er een ander hulpmiddel voor programmeurs genaamd montagetaal .

Bij assembleertaal worden geheugensteuntjes van twee tot vier letters gebruikt in plaats van de eigenlijke hexadecimale of binaire code voor het beschrijven van programmastappen. Bijvoorbeeld de instructie 7B voor de Intel 8080 zou zijn "MOV A,E ” in assembler.

De geheugensteuntjes zijn natuurlijk nutteloos voor de microprocessor, die alleen binaire codes kan begrijpen, maar het is een geschikte manier voor programmeurs om het schrijven van hun programma's op papier of teksteditor (tekstverwerker) te beheren. Er zijn zelfs programma's geschreven voor computers genaamd assemblers die deze geheugensteuntjes begrijpen, ze vertalen naar de juiste binaire codes voor een gespecificeerde doelmicroprocessor, zodat de programmeur een programma in de moedertaal van de computer kan schrijven zonder ooit te maken te krijgen met vreemde hex of vervelende binaire codenotatie.

Als een programma eenmaal door een persoon is ontwikkeld, moet het in het geheugen worden geschreven voordat een microprocessor het kan uitvoeren. Als het programma moet worden opgeslagen in ROM (wat sommige zijn), kan dit worden gedaan met een speciale machine genaamd een ROM-programmeur , of (als je masochistisch bent), door de ROM-chip in een breadboard te steken, hem op de juiste spanningen te zetten en gegevens te schrijven door de juiste draadverbindingen te maken met de adres- en datalijnen, één voor één, voor elk instructie.

Als het programma moet worden opgeslagen in een vluchtig geheugen, zoals het RAM-geheugen van de werkende computer, kan er een manier zijn om het met de hand in te typen via het toetsenbord van die computer (sommige computers hebben een miniprogramma opgeslagen in ROM dat de microprocessor vertelt hoe om toetsaanslagen van een toetsenbord te accepteren en op te slaan als commando's in het RAM), zelfs als het te dom is om iets anders te doen.

Veel "hobby" computerkits werken als volgt. Als de computer die moet worden geprogrammeerd een volledig functionele personal computer is met een besturingssysteem, schijfstations en het hele werk, kunt u de assembler eenvoudig opdracht geven om uw voltooide programma op een schijf op te slaan zodat u het later kunt ophalen.

Om uw programma te "uitvoeren", typt u eenvoudig de bestandsnaam van uw programma bij de prompt, drukt u op de Enter-toets en wordt het programmatellerregister van de microprocessor ingesteld om naar de locatie ("adres") op de schijf te wijzen waar de eerste instructie is opgeslagen, en uw programma zou vanaf daar worden uitgevoerd.

Hoewel programmeren in machinetaal of assembleertaal zorgt voor snelle en zeer efficiënte programma's, kost het veel tijd en vaardigheid om dit te doen voor alles behalve de eenvoudigste taken, omdat elke machinetaalinstructie zo grof is. Het antwoord hierop is om manieren te ontwikkelen voor programmeurs om te schrijven in "hoge" talen, die het menselijk denken efficiënter kunnen uitdrukken. In plaats van tientallen cryptische assembleertaalcodes in te typen, zou een programmeur die in een taal op hoog niveau schrijft, zoiets als dit kunnen schrijven. . .

Print "Hallo wereld!" 

. . . en verwacht dat de computer "Hallo, wereld!" zonder verdere instructies over hoe u dit moet doen. Dit is een geweldig idee, maar hoe begrijpt een microprocessor zo'n 'menselijk' denken als zijn woordenschat zo beperkt is?

Het antwoord komt in twee verschillende vormen:interpretatie , of compilatie . Net als twee mensen die verschillende talen spreken, moet er een manier zijn om de taalbarrière te overstijgen om te kunnen converseren.

Er is een vertaler nodig om de woorden van elke persoon te vertalen naar de taal van de andere persoon, op één manier tegelijk. Voor de microprocessor betekent dit een ander programma, geschreven door een andere programmeur in machinetaal, dat de ASCII-tekenpatronen van commando's op hoog niveau zoals Print (Print) herkent en deze kan vertalen in de noodzakelijke hapklare stappen die de microprocessor direct kan uitvoeren. begrijpen.

Als deze vertaling wordt gedaan tijdens de uitvoering van het programma, net als een vertaler die tussen twee mensen in een live gesprek tussenkomt, wordt dit 'vertolking' genoemd. Aan de andere kant, als het hele programma in één klap wordt vertaald naar machinetaal, zoals een vertaler die een monoloog op papier opneemt en vervolgens alle woorden in één keer vertaalt in een geschreven document in de andere taal, heet het proces " compilatie.”

Interpretatie is eenvoudig, maar zorgt voor een traag werkend programma omdat de microprocessor het programma voortdurend tussen de stappen moet vertalen, en dat kost tijd. Compilatie kost aanvankelijk tijd om het hele programma in machinecode te vertalen, maar de resulterende machinecode heeft daarna geen vertaling nodig en loopt daardoor sneller.

Programmeertalen zoals BASIC en FORTH worden geïnterpreteerd. Talen zoals C, C++, FORTRAN en PASCAL worden gecompileerd. Gecompileerde talen worden over het algemeen beschouwd als de voorkeurstalen van professionele programmeurs, vanwege de efficiëntie van het eindproduct.

Omdat vocabulaires in machinetaal sterk verschillen van microprocessor tot microprocessor, en omdat talen op hoog niveau zijn ontworpen om zo universeel mogelijk te zijn, moeten de tolk- en compileerprogramma's die nodig zijn voor taalvertaling microprocessorspecifiek zijn.

De ontwikkeling van deze interpreters en compilers is een zeer indrukwekkende prestatie:de mensen die deze programma's maken, verdienen zeker hun brood, vooral als je kijkt naar het werk dat ze moeten doen om hun softwareproduct actueel te houden met de snel veranderende microprocessormodellen die op de markt verschijnen !

Om dit probleem te verhelpen, proberen de toonaangevende fabrikanten van microprocessorchips (met name Intel en Motorola) hun nieuwe producten zo te ontwerpen dat ze achterwaarts compatibel zijn. met hun oudere producten. De volledige instructieset voor de Intel 80386-chip zit bijvoorbeeld in de nieuwste Pentium IV-chips, hoewel de Pentium-chips aanvullende instructies hebben die de 80386-chips missen.

Dit betekent dat programma's in machinetaal (ook compilers) die zijn geschreven voor 80386-computers, zullen draaien op de nieuwste en beste Intel Pentium IV CPU, maar programma's in machinetaal die speciaal zijn geschreven om te profiteren van de grotere instructieset van de Pentium. een 80386, omdat de oudere CPU sommige van die instructies gewoon niet in zijn vocabulaire heeft:de regeleenheid in de 80386 kan ze niet decoderen.

Voortbouwend op dit thema hebben de meeste compilers instellingen waarmee de programmeur kan selecteren voor welk CPU-type hij of zij machinetaalcode wil compileren. Als ze de 80386-instelling selecteren, voert de compiler de vertaling uit met alleen instructies die bekend zijn bij de 80386-chip; als ze de Pentium-instelling selecteren, is de compiler vrij om alle instructies te gebruiken die bekend zijn bij Pentiums.

Dit is analoog aan het vertellen van een vertaler welk minimaal leesniveau zijn publiek zal hebben:een document dat voor een kind is vertaald, is begrijpelijk voor een volwassene, maar een document dat voor een volwassene is vertaald, kan voor een kind heel goed gebrabbel zijn.

GERELATEERD WERKBLAD:

  • Werkblad Microprocessorprogrammering

Industriële technologie

  1. 10 coolste programmeertalen voor de cloud
  2. C Programmeren van operators
  3. C Programmeertaal PDF:Basishandleiding voor beginners
  4. Bosque:de nieuwe programmeertaal van Microsoft zonder lussen
  5. 9 nieuwe programmeertalen om te leren in 2021
  6. C Zelfstudie
  7. C Taal - Overzicht
  8. C - Programmastructuur
  9. C# - Overzicht
  10. Heidenhain publiceert online CNC-trainingsprogramma
  11. Vul de blanco CNC-programmeerfreesoefening in