Enkle 8086 monteringsspråkprogrammer med forklaring

Prøv Instrumentet Vårt For Å Eliminere Problemer





Programmering på monteringsnivå er veldig viktig for lavt nivå integrert system design brukes til å få tilgang til prosessorinstruksjonene for å manipulere maskinvare. Det er et mest primitive maskinnivåspråk som brukes til å lage effektiv kode som bruker mindre antall klokkesykluser og tar mindre minne sammenlignet med programmeringsspråk på høyt nivå . Det er et komplett maskinvareorientert programmeringsspråk å skrive et program som programmereren må være klar over innebygd maskinvare. Her gir vi grunnleggende om programmering 8086 på monteringsnivå.

Programmering på monteringsnivå 8086

Programmering på monteringsnivå 8086



Programmering på monteringsnivå 8086

De monteringsprogrammeringsspråk er et lavnivåspråk som er utviklet ved hjelp av mnemonics. Mikrokontrolleren eller mikroprosessoren kan bare forstå det binære språket som 0 eller 1, og derfor konverterer montøren språket til det binære språket og lagrer minnet for å utføre oppgavene. Før du skriver programmet, må de innebygde designerne ha tilstrekkelig kunnskap om bestemt maskinvare til kontrolleren eller prosessoren, så først måtte vi kjenne maskinvaren til 8086-prosessoren.


Maskinvare til prosessoren

Maskinvare til prosessoren



8086 Prosessorarkitektur

8086 er en prosessor som er representert for alle eksterne enheter, for eksempel seriell buss, RAM og ROM, I / O-enheter og så videre, som alle er eksternt koblet til CPU ved hjelp av en systembuss. 8086-mikroprosessoren har CISC-basert arkitektur , og den har eksterne enheter som 32 I / O, Seriell kommunikasjon , minner og tellere / tidtakere . Mikroprosessoren krever et program for å utføre operasjonene som krever et minne for å lese og lagre funksjonene.

8086 Prosessorarkitektur

8086 Prosessorarkitektur

Monteringsnivåprogrammeringen 8086 er basert på minneregistrene. Et register er hoveddelen av mikroprosessorer og kontrollere som er plassert i minnet som gir en raskere måte å samle inn og lagre dataene på. Hvis vi vil manipulere data til en prosessor eller kontroller ved å utføre multiplikasjon, tillegg osv., Kan vi ikke gjøre det direkte i minnet der behovet registreres for å behandle og lagre dataene. 8086 mikroprosessor inneholder forskjellige typer registre som kan klassifiseres i henhold til deres instruksjoner, for eksempel

Generelle registre : 8086-CPUen har bestått 8-generelle formålsregistre, og hvert register har sitt eget navn som vist i figuren som AX, BX, CX, DX, SI, DI, BP, SP. Disse er alle 16-biters registre der fire registre er delt inn i to deler som AX, BX, CX og DX som hovedsakelig brukes til å beholde tallene.

Spesielle formålsregistre : 8086 CPU har bestått av 2 spesielle funksjonsregistre som IP- og flaggeregister. IP-registeret peker til gjeldende utføringsinstruksjon og jobber alltid med å samle seg med CS-segmentregisteret. Hovedfunksjonen til flaggeregister er å endre CPU-operasjonene etter at mekaniske funksjoner er fullført, og vi ikke får tilgang direkte
Segmentregistre: 8086 CPU har bestått av 4-segmentregistre som CS, DS, ES, SS som hovedsakelig brukes til å lagre data i segmentregistrene, og vi kan få tilgang til en blokk med minne ved hjelp av segmentregister.


Enkle monteringsspråkprogrammer 8086

Monteringsspråkprogrammeringen 8086 har noen regler som

  • Monteringsnivået programmering 8086 koden må skrives med store bokstaver
  • Etikettene må følges av et kolon, for eksempel: label:
  • Alle etiketter og symboler må begynne med en bokstav
  • Alle kommentarer er skrevet med små bokstaver
  • Den siste linjen i programmet må avsluttes med END-direktivet

8086-prosessorer har to andre instruksjoner for å få tilgang til dataene, for eksempel WORD PTR - for word (to byte), BYTE PTR - for byte.

Op-Code og Operand

Op-Code og Operand

Op-kode: En enkelt instruksjon kalles som en op-kode som kan utføres av CPUen. Her kalles ‘MOV’-instruksjonen som en op-kode.

Operander: Data i ett stykke kalles operander som kan betjenes av op-koden. Eksempel, subtraksjonsoperasjon utføres av operandene som blir trukket av operanden.
Syntaks: SUB b, c

8086 språkprogrammer for mikroprosessormontering

Skriv et program for å lese et tegn fra tastaturet

MOV ah, 1h // tastaturinngangsprogram
INT 21h // tegninngang
// tegnet er lagret i al
MOV c, al // kopier karakter fra alt c

Skriv et program for å lese og vise et tegn

MOV ah, 1h // tastaturinngangsprogram
INT 21h // les karakter inn i al
MOV dl, al // kopier tegn til dl
MOV ah, 2h // tegnutgangsprogram
INT 21h // vis tegn i dl

Skriv et program ved hjelp av register for generelle formål

ORG 100 timer
MOV AL, VAR1 // sjekk verdien til VAR1 ved å flytte den til AL.
LEA BX, VAR1 // få adresse til VAR1 i BX.
MOV BYTE PTR [BX], 44h // modifiser innholdet i VAR1.
MOV AL, VAR1 // sjekk verdien til VAR1 ved å flytte den til AL.
IKKE SANT
VAR1 DB 22t
SLUTT

Skriv et program for å vise strengen ved hjelp av biblioteksfunksjoner

inkluderer emu8086.inc // Makrodeklarasjon
ORG 100 timer
SKRIV UT ‘Hello World!’
GOTOXY 10, 5
PUTC 65 // 65 - er en ASCII-kode for ‘A’
PUTC ‘B’
RET // gå tilbake til operativsystemet.
END // direktiv om å stoppe kompilatoren.

Aritmetiske og logiske instruksjoner

8086-prosessene for aritmetikk og logisk enhet har delt seg i tre grupper som tillegg, inndeling og inkrementoperasjon. Mest Aritmetiske og logiske instruksjoner påvirke prosessorstatusregisteret.

Montering språk programmering 8086 mnemonics er i form av op-kode, slik som MOV, MUL, JMP, og så videre, som brukes til å utføre operasjonene. Programmering av samlingsprogrammer 8086 eksempler

Addisjon
ORG0000h
MOV DX, # 07H // flytt verdien 7 til registeret AX //
MOV AX, # 09H // flytt verdien 9 til akkumulator AX //
Legg til AX, 00H // legg til CX-verdi med R0-verdi og lagrer resultatet i AX //
SLUTT
Multiplikasjon
ORG0000h
MOV DX, # 04H // flytt verdien 4 til registeret DX //
MOV AX, # 08H // flytt verdien 8 til akkumulator AX //
MUL AX, 06H // Multiplisert resultat lagres i Akkumulator AX //
SLUTT
Subtraksjon
ORG 0000h
MOV DX, # 02H // flytt verdien 2 for å registrere DX //
MOV AX, # 08H // flytt verdien 8 til akkumulator AX //
SUBB AX, 09H // Resultatverdi lagres i Akkumulator A X //
SLUTT
Inndeling
ORG 0000h
MOV DX, # 08H // flytt verdien 3 for å registrere DX //
MOV AX, # 19H // flytt verdien 5 til akkumulator AX //
DIV AX, 08H // sluttverdien lagres i Akkumulator AX //
SLUTT

Derfor er dette alt sammen om monteringsnivåprogrammering 8086, 8086 prosessorarkitektur, enkle eksempelprogrammer for 8086-prosessorer, aritmetiske og logiske instruksjoner. Videre, spørsmål angående denne artikkelen eller elektronikkprosjekter, kan du kontakte oss ved å kommentere i kommentarseksjonen nedenfor.