Enkla 8086 monteringsspråkprogram med förklaring

Prova Vårt Instrument För Att Eliminera Problem





Programmering på monteringsnivå är mycket viktigt för lågnivå inbyggda system design används för att komma åt processorinstruktionerna för att manipulera hårdvara. Det är ett mest primitivt språk på maskinnivå som används för att skapa effektiv kod som förbrukar mindre antal klockcykler och tar mindre minne jämfört med programmeringsspråk på hög nivå . Det är ett komplett maskinvarorienterat programmeringsspråk att skriva ett program som programmeraren måste vara medveten om inbäddad hårdvara. Här tillhandahåller vi grunderna för programmering 8086 på monteringsnivå.

Programmering av monteringsnivå 8086

Programmering av monteringsnivå 8086



Programmering av monteringsnivå 8086

De monteringsprogrammeringsspråk är ett lågnivåspråk som utvecklas med hjälp av minnestecken. Mikrokontrollern eller mikroprocessorn kan bara förstå det binära språket som 0 eller 1, därför konverterar monteraren monteringsspråket till det binära språket och lagrar minnet för att utföra uppgifterna. Innan du skriver programmet måste de inbäddade formgivarna ha tillräcklig kunskap om styrenhetens eller processorns specifika hårdvara, så först måste vi känna till hårdvara för 8086-processor.


Processorns hårdvara

Processorns hårdvara



8086 Processorarkitektur

8086 är en processor som är representerad för alla kringutrustning såsom seriell buss och RAM och ROM, I / O-enheter och så vidare som alla är externt anslutna till CPU med hjälp av en systembuss. 8086-mikroprocessorn har CISC-baserad arkitektur , och den har kringutrustning som 32 I / O, Seriekommunikation , minnen och räknare / timers . Mikroprocessorn kräver ett program för att utföra de operationer som kräver ett minne för att kunna läsa och spara funktionerna.

8086 Processorarkitektur

8086 Processorarkitektur

Monteringsnivåprogrammeringen 8086 baseras på minnesregistren. Ett register är huvuddelen av mikroprocessorer och styrenheter som finns i minnet som ger ett snabbare sätt att samla in och lagra data. Om vi ​​vill manipulera data till en processor eller styrenhet genom att utföra multiplikation, tillägg etc. kan vi inte göra det direkt i minnet där behovet registreras för att bearbeta och lagra data. 8086-mikroprocessorn innehåller olika typer av register som kan klassificeras enligt deras instruktioner, t.ex.

Register för allmänna ändamål : 8086-CPU: n har bestått 8-allmänna ändamålsregister och varje register har sitt eget namn som visas i figuren som AX, BX, CX, DX, SI, DI, BP, SP. Dessa är alla 16-bitars register där fyra register är indelade i två delar som AX, BX, CX och DX som huvudsakligen används för att behålla siffrorna.

Specialregister : 8086-CPU: n har bestått av 2 specialregister som IP och flaggregister. IP-registret pekar på den aktuella körinstruktionen och arbetar alltid med att samlas med CS-segmentregistret. Flaggregistrets huvudfunktion är att modifiera CPU-operationerna efter att de mekaniska funktionerna har slutförts och vi inte kan komma åt direkt
Segmentregister: 8086-CPU: n har bestått av 4-segmentregister som CS, DS, ES, SS som huvudsakligen används för att lagra all data i segmentregistren och vi kan komma åt ett minnesblock med segmentregister.


Enkla monteringsspråkprogram 8086

Monteringsspråkprogrammeringen 8086 har vissa regler som

  • Monteringsnivå programmering 8086 koden måste skrivas med versaler
  • Etiketterna måste följas av ett kolon, till exempel: label:
  • Alla etiketter och symboler måste börja med en bokstav
  • Alla kommentarer skrivs med gemener
  • Den sista raden i programmet måste avslutas med END-direktivet

8086-processorer har två andra instruktioner för att komma åt data, såsom WORD PTR - för ord (två byte), BYTE PTR - för byte.

Op-Code och Operand

Op-Code och Operand

Op-kod: En enda instruktion kallas som en op-kod som kan köras av CPU: n. Här kallas ”MOV” -instruktionen som en op-kod.

Operander: Enstaka data kallas operander som kan drivas av op-koden. Exempel, subtraktionsoperation utförs av operanderna som subtraheras av operanden.
Syntax: SUB b, c

8086 mikroprocessorsamlingsspråkprogram

Skriv ett program för att läsa en karaktär från tangentbordet

MOV ah, 1h // tangentbordets ingångsprogram
INT 21h // teckeninmatning
// karaktär lagras i al
MOV c, al // kopiera karaktär från alto c

Skriv ett program för läsning och visning av en karaktär

MOV ah, 1h // tangentbordets ingångsprogram
INT 21h // läs karaktär i al
MOV dl, al // kopiera tecken till dl
MOV ah, 2h // teckenutmatningsprogram
INT 21h // visa tecken i dl

Skriv ett program med register över allmänna ändamål

ORG 100h
MOV AL, VAR1 // kontrollera värdet på VAR1 genom att flytta det till AL.
LEA BX, VAR1 // få adressen till VAR1 i BX.
MOV BYTE PTR [BX], 44h // modifiera innehållet i VAR1.
MOV AL, VAR1 // kontrollera värdet på VAR1 genom att flytta det till AL.
RÄTT
VAR1 DB 22h
SLUTET

Skriv ett program för att visa strängen med hjälp av biblioteksfunktioner

inkluderar emu8086.inc // Makrodeklaration
ORG 100h
SKRIV UT 'Hello World!'
GOTOXY 10, 5
PUTC 65 // 65 - är en ASCII-kod för 'A'
PUTC 'B'
RET // återgå till operativsystemet.
END // direktiv för att stoppa kompilatorn.

Aritmetiska och logiska instruktioner

8086-processerna för aritmetik och logikenhet har delats in i tre grupper, såsom addition, uppdelning och inkrementoperation. Mest Aritmetiska och logiska instruktioner påverka processorstatusregistret.

Monteringsspråk programmering 8086 mnemonics är i form av op-kod, såsom MOV, MUL, JMP, och så vidare, som används för att utföra operationerna. Monteringsspråk programmering 8086 exempel

Tillägg
ORG0000h
MOV DX, # 07H // flytta värdet 7 till registret AX //
MOV AX, # 09H // flytta värdet 9 till ackumulator AX //
Lägg till AX, 00H // lägg till CX-värde med R0-värde och lagra resultatet i AX //
SLUTET
Multiplikation
ORG0000h
MOV DX, # 04H // flytta värdet 4 till registret DX //
MOV AX, # 08H // flytta värdet 8 till ackumulator AX //
MUL AX, 06H // Multipliserat resultat lagras i Ackumulator AX //
SLUTET
Subtraktion
ORG 0000h
MOV DX, # 02H // flytta värdet 2 för att registrera DX //
MOV AX, # 08H // flytta värdet 8 till ackumulator AX //
SUBB AX, 09H // Resultatvärde lagras i ackumulator A X //
SLUTET
Division
ORG 0000h
MOV DX, # 08H // flytta värdet 3 för att registrera DX //
MOV AX, # 19H // flytta värdet 5 till ackumulator AX //
DIV AX, 08H // slutvärde lagras i ackumulator AX //
SLUTET

Därför handlar det här om monteringsnivåprogrammering 8086, 8086 processorarkitektur, enkla exempelprogram för 8086-processorer, aritmetiska och logiska instruktioner. Dessutom kan alla frågor angående denna artikel eller elektronikprojekt kontakta oss genom att kommentera i kommentarsektionen nedan.