Eenvoudige 8086 assembleertaalprogramma's met uitleg

Probeer Ons Instrument Voor Het Oplossen Van Problemen





Programmering op montageniveau is erg belangrijk voor low-level ingebouwd systeem ontwerp wordt gebruikt om toegang te krijgen tot de processorinstructies om hardware te manipuleren. Het is een zeer primitieve taal op machineniveau die wordt gebruikt om efficiënte code te maken die minder klokcycli verbruikt en minder geheugen in beslag neemt in vergelijking met de programmeertaal op hoog niveau ​Het is een complete hardware-georiënteerde programmeertaal om een ​​programma te schrijven waarvan de programmeur op de hoogte moet zijn van embedded hardware. Hier bieden we de basisprincipes van programmering op montageniveau 8086.

Assemblage niveau programmeren 8086

Assemblage niveau programmeren 8086



Assemblage niveau programmeren 8086

De assembly programmeertaal is een taal op laag niveau die is ontwikkeld met behulp van geheugensteuntjes. De microcontroller of microprocessor kan alleen de binaire taal zoals nullen of enen begrijpen, daarom converteert de assembler de assembleertaal naar binaire taal en slaat deze op in het geheugen om de taken uit te voeren. Voordat we het programma schrijven, moeten de embedded designers voldoende kennis hebben van bepaalde hardware van de controller of processor, dus eerst moesten we de hardware van de 8086 processor kennen.


Hardware van de processor

Hardware van de processor



8086 Processorarchitectuur

De 8086 is een processor die wordt weergegeven voor alle randapparatuur, zoals de seriële bus, en RAM en ROM, I / O-apparaten enzovoort, die allemaal extern zijn verbonden met de CPU via een systeembus. De 8086 microprocessor heeft CISC-gebaseerde architectuur , en het heeft randapparatuur zoals 32 I / O, Seriële communicatie , herinneringen en tellers / timers ​De microprocessor heeft een programma nodig om de bewerkingen uit te voeren die een geheugen nodig hebben om de functies te lezen en op te slaan.

8086 Processorarchitectuur

8086 Processorarchitectuur

De programmering op montageniveau 8086 is gebaseerd op de geheugenregisters. Een register is het belangrijkste onderdeel van het microprocessors en controllers die zich in het geheugen bevinden, wat een snellere manier biedt om de gegevens te verzamelen en op te slaan. Als we gegevens naar een processor of controller willen manipuleren door vermenigvuldiging, optelling, etc., kunnen we dat niet rechtstreeks in het geheugen doen waar registers nodig zijn om de gegevens te verwerken en op te slaan. De 8086-microprocessor bevat verschillende soorten registers die kunnen worden geclassificeerd volgens hun instructies, zoals

Registers voor algemene doeleinden : De 8086 CPU heeft 8 registers voor algemene doeleinden en elk register heeft zijn eigen naam zoals weergegeven in de afbeelding, zoals AX, BX, CX, DX, SI, DI, BP, SP. Dit zijn allemaal 16-bits registers waarbij vier registers zijn verdeeld in twee delen, zoals AX, BX, CX en DX, die voornamelijk worden gebruikt om de nummers te bewaren.

Registers voor speciale doeleinden : De 8086 CPU bestaat uit 2 speciale functieregisters zoals IP- en vlaggenregisters. Het IP-register verwijst naar de huidige uitvoerende instructie en werkt altijd samen met het CS-segmentregister. De belangrijkste functie van vlaggenregisters is om de CPU-bewerkingen te wijzigen nadat mechanische functies zijn voltooid en we geen directe toegang hebben
Segmentregisters: de 8086 CPU bestaat uit 4-segmentregisters zoals CS, DS, ES, SS die voornamelijk worden gebruikt om gegevens in de segmentregisters op te slaan en we hebben toegang tot een blok geheugen met behulp van segmentregisters.


Eenvoudige assembleertaalprogramma's 8086

De assembleertaal programmeren 8086 heeft enkele regels, zoals

  • Het montage niveau programmeren 8086 code moet in hoofdletters worden geschreven
  • De labels moeten worden gevolgd door een dubbele punt, bijvoorbeeld: label:
  • Alle labels en symbolen moeten beginnen met een letter
  • Alle opmerkingen worden in kleine letters getypt
  • De laatste regel van het programma moet worden afgesloten met de END-richtlijn

8086-processors hebben twee andere instructies om toegang te krijgen tot de gegevens, zoals WORD PTR - voor woord (twee bytes), BYTE PTR - voor byte.

Op-Code and Operand

Op-Code and Operand

Op-code: Een enkele instructie wordt een op-code genoemd die door de CPU kan worden uitgevoerd. Hier wordt de ‘MOV’ instructie een op-code genoemd.

Operanden: Gegevens uit één stuk worden operanden genoemd die kunnen worden bediend door de op-code. Aftrekken wordt bijvoorbeeld uitgevoerd door de operanden die worden afgetrokken door de operand.
Syntaxis: SUB b, c

8086 assembleertaalprogramma's voor microprocessors

Schrijf een programma om een ​​personage van het toetsenbord te lezen

MOV ah, 1h // subprogramma voor toetsenbordinvoer
INT 21h // tekeninvoer
// karakter wordt opgeslagen in al
MOV c, al // kopieer karakter van alto c

Schrijf een programma om een ​​personage te lezen en weer te geven

MOV ah, 1h // subprogramma voor toetsenbordinvoer
INT 21h // teken in al
MOV dl, al // kopieer karakter naar dl
MOV ah, 2h // subprogramma voor tekenuitvoer
INT 21h // toon teken in dl

Schrijf een programma met algemene registers

ORG 100 uur
MOV AL, VAR1 // controleer de waarde van VAR1 door deze naar AL te verplaatsen.
LEA BX, VAR1 // verkrijg het adres van VAR1 in BX.
MOV BYTE PTR [BX], 44h // wijzig de inhoud van VAR1.
MOV AL, VAR1 // controleer de waarde van VAR1 door deze naar AL te verplaatsen.
RECHTSAF
VAR1 DB 22 uur
EINDE

Schrijf een programma om de string weer te geven met behulp van bibliotheekfuncties

include emu8086.inc // Macro-declaratie
ORG 100 uur
PRINT ‘Hallo wereld!’
GOTOXY 10, 5
PUTC 65 // 65 - is een ASCII-code voor ‘A’
PUTC ‘B’
RET // terug naar het besturingssysteem.
END // instructie om de compiler te stoppen.

Rekenkundige en logische instructies

De 8086-processen van rekenkundige en logische eenheid zijn onderverdeeld in drie groepen, zoals optellen, delen en ophogen. Meest Rekenkundige en logische instructies invloed hebben op het processorstatusregister.

De assembleertaal programmeren 8086 mnemonics hebben de vorm van op-code, zoals MOV, MUL, JMP, enzovoort, die worden gebruikt om de bewerkingen uit te voeren. Assembleertaal programmeren 8086 voorbeelden

Toevoeging
ORG0000h
MOV DX, # 07H // verplaats de waarde 7 naar het register AX //
MOV AX, # 09H // verplaats de waarde 9 naar accumulator AX //
Voeg AX, 00H toe // voeg CX-waarde toe met R0-waarde en slaat het resultaat op in AX //
EINDE
Vermenigvuldiging
ORG0000h
MOV DX, # 04H // verplaats de waarde 4 naar het register DX //
MOV AX, # 08H // verplaats de waarde 8 naar accumulator AX //
MUL AX, 06H // Het vermenigvuldigde resultaat wordt opgeslagen in de Accumulator AX //
EINDE
Aftrekken
ORG 0000 uur
MOV DX, # 02H // verplaats de waarde 2 om DX te registreren //
MOV AX, # 08H // verplaats de waarde 8 naar accumulator AX //
SUBB AX, 09H // Resultaatwaarde wordt opgeslagen in de Accumulator A X //
EINDE
Divisie
ORG 0000 uur
MOV DX, # 08H // verplaats de waarde 3 om DX te registreren //
MOV AX, # 19H // verplaats de waarde 5 naar accumulator AX //
DIV AX, 08H // eindwaarde wordt opgeslagen in de accumulator AX //
EINDE

Daarom draait het allemaal om Assembly Level Programming 8086, 8086 Processor Architecture, eenvoudige voorbeeldprogramma's voor 8086 processors, rekenkundige en logische instructies.Bovendien kunt u met vragen over dit artikel of elektronicaprojecten contact met ons opnemen door in het commentaargedeelte hieronder te reageren.