Einfache 8086-Assembler-Programme mit Erläuterung

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





Die Programmierung auf Baugruppenebene ist für niedrige Ebenen sehr wichtig Eingebettetes System Mit design wird auf die Prozessoranweisungen zugegriffen, um die Hardware zu manipulieren. Es ist eine primitivste Sprache auf Maschinenebene, die verwendet wird, um effizienten Code zu erstellen, der weniger Taktzyklen benötigt und im Vergleich zu weniger Speicher benötigt Programmiersprache auf hohem Niveau . Es ist eine vollständige hardwareorientierte Programmiersprache, um ein Programm zu schreiben. Der Programmierer muss sich der eingebetteten Hardware bewusst sein. Hier bieten wir Grundlagen der Programmierung auf Baugruppenebene 8086.

Programmierung auf Baugruppenebene 8086

Programmierung auf Baugruppenebene 8086



Programmierung auf Baugruppenebene 8086

Das Assembler-Programmiersprache ist eine einfache Sprache, die mithilfe von Mnemonik entwickelt wurde. Der Mikrocontroller oder Mikroprozessor kann nur die Binärsprache wie 0 oder 1 verstehen, daher konvertiert der Assembler die Assemblersprache in eine Binärsprache und speichert den Speicher, um die Aufgaben auszuführen. Vor dem Schreiben des Programms müssen die eingebetteten Designer über ausreichende Kenntnisse der jeweiligen Hardware des Controllers oder Prozessors verfügen. Daher müssen wir zunächst die Hardware des 8086-Prozessors kennen.


Hardware des Prozessors

Hardware des Prozessors



8086 Prozessorarchitektur

Der 8086 ist ein Prozessor, der für alle Peripheriegeräte wie den seriellen Bus sowie RAM und ROM, E / A-Geräte usw. dargestellt wird, die alle über einen Systembus extern mit der CPU verbunden sind. Der 8086 Mikroprozessor hat CISC-basierte Architektur und es hat Peripheriegeräte wie 32 I / O, Serielle Kommunikation , Erinnerungen und Zähler / Timer . Der Mikroprozessor benötigt ein Programm, um die Operationen auszuführen, die einen Speicher zum Lesen und Speichern der Funktionen erfordern.

8086 Prozessorarchitektur

8086 Prozessorarchitektur

Die Programmierung auf Baugruppenebene 8086 basiert auf den Speicherregistern. Ein Register ist der Hauptteil des Mikroprozessoren und Steuerungen Diese befinden sich im Speicher, der eine schnellere Möglichkeit zum Sammeln und Speichern der Daten bietet. Wenn wir Daten zu einem Prozessor oder Controller manipulieren möchten, indem wir Multiplikation, Addition usw. durchführen, können wir dies nicht direkt im Speicher tun, wo Register zum Verarbeiten und Speichern der Daten benötigt werden. Der 8086-Mikroprozessor enthält verschiedene Arten von Registern, die gemäß ihren Anweisungen klassifiziert werden können, wie z

Allzweckregister : Die 8086-CPU besteht aus 8 Allzweckregistern, und jedes Register hat seinen eigenen Namen, wie in der Abbildung gezeigt, z. B. AX, BX, CX, DX, SI, DI, BP, SP. Dies sind alles 16-Bit-Register, bei denen vier Register in zwei Teile unterteilt sind, z. B. AX, BX, CX und DX, die hauptsächlich zum Speichern der Zahlen verwendet werden.

Sonderregister : Die 8086-CPU besteht aus 2 Sonderfunktionsregistern wie IP- und Flag-Registern. Das IP-Register zeigt auf den aktuellen Ausführungsbefehl und arbeitet immer mit dem CS-Segmentregister zusammen. Die Hauptfunktion von Flag-Registern besteht darin, die CPU-Operationen zu ändern, nachdem die mechanischen Funktionen abgeschlossen sind und wir nicht direkt darauf zugreifen können
Segmentregister: Die 8086-CPU besteht aus 4-Segment-Registern wie CS, DS, ES, SS, die hauptsächlich zum Speichern von Daten in den Segmentregistern verwendet werden, und wir können mithilfe von Segmentregistern auf einen Speicherblock zugreifen.


Einfache Assembler-Programme 8086

Die Assembler-Programmierung 8086 hat einige Regeln wie

  • Die Baugruppenebene Programmierung 8086 Code muss in Großbuchstaben geschrieben werden
  • Auf die Beschriftungen muss ein Doppelpunkt folgen, zum Beispiel: label:
  • Alle Beschriftungen und Symbole müssen mit einem Buchstaben beginnen
  • Alle Kommentare werden in Kleinbuchstaben eingegeben
  • Die letzte Zeile des Programms muss mit der Anweisung END beendet werden

8086-Prozessoren haben zwei weitere Anweisungen für den Zugriff auf die Daten, z. B. WORD PTR - für Wort (zwei Bytes), BYTE PTR - für Byte.

Op-Code und Operand

Op-Code und Operand

Op-Code: Ein einzelner Befehl wird als Op-Code bezeichnet, der von der CPU ausgeführt werden kann. Hier wird der Befehl 'MOV' als Op-Code bezeichnet.

Operanden: Einzelstückdaten werden Operanden genannt, die vom Op-Code bedient werden können. Beispielsweise wird eine Subtraktionsoperation von den Operanden ausgeführt, die vom Operanden subtrahiert werden.
Syntax: SUB b, c

Assembler-Sprachprogramme für 8086-Mikroprozessoren

Schreiben Sie ein Programm zum Lesen eines Zeichens von der Tastatur

MOV ah, 1h // Tastatureingabe-Unterprogramm
INT 21h // Zeicheneingabe
// Zeichen ist in al gespeichert
MOV c, al // Zeichen aus Alt c kopieren

Schreiben Sie ein Programm zum Lesen und Anzeigen eines Zeichens

MOV ah, 1h // Tastatureingabe-Unterprogramm
INT 21h // Zeichen in al lesen
MOV dl, al // Zeichen nach dl kopieren
MOV ah, 2h // Zeichenausgabe-Unterprogramm
INT 21h // Zeichen in dl anzeigen

Schreiben Sie ein Programm mit Universalregistern

ORG 100h
MOV AL, VAR1 // Überprüfen Sie den Wert von VAR1, indem Sie ihn in den AL verschieben.
LEA BX, VAR1 // Adresse von VAR1 in BX abrufen.
MOV BYTE PTR [BX], 44h // den Inhalt von VAR1 ändern.
MOV AL, VAR1 // Überprüfen Sie den Wert von VAR1, indem Sie ihn in den AL verschieben.
RICHTIG
VAR1 DB 22h
ENDE

Schreiben Sie ein Programm zum Anzeigen der Zeichenfolge mithilfe von Bibliotheksfunktionen

include emu8086.inc // Makrodeklaration
ORG 100h
DRUCKEN SIE 'Hallo Welt!'
GOTOXY 10, 5
PUTC 65 // 65 - ist ein ASCII-Code für 'A'
PUTC 'B'
RET // zurück zum Betriebssystem.
END // Anweisung zum Stoppen des Compilers.

Arithmetik- und Logikanweisungen

Die 8086-Prozesse der Arithmetik- und Logikeinheit wurden in drei Gruppen unterteilt, z. B. Addition, Division und Inkrementoperation. Die meisten Arithmetik- und Logikanweisungen das Prozessorstatusregister beeinflussen.

Die 8086-Mnemonik für die Assembler-Programmierung besteht aus Op-Code wie MOV, MUL, JMP usw., die zur Ausführung der Operationen verwendet werden. Assembler-Programmierung 8086 Beispiele

Zusatz
ORG0000h
MOV DX, # 07H // verschiebe den Wert 7 in das Register AX //
MOV AX, # 09H // verschiebe den Wert 9 zum Akkumulator AX //
Addiere AX, 00H // addiere CX-Wert mit R0-Wert und speichere das Ergebnis in AX //
ENDE
Multiplikation
ORG0000h
MOV DX, # 04H // verschiebe den Wert 4 in das Register DX //
MOV AX, # 08H // verschiebe den Wert 8 zum Akkumulator AX //
MUL AX, 06H // Das multiplizierte Ergebnis wird im Akkumulator AX // gespeichert
ENDE
Subtraktion
ORG 0000h
MOV DX, # 02H // Verschiebe den Wert 2, um DX zu registrieren //
MOV AX, # 08H // verschiebe den Wert 8 zum Akkumulator AX //
SUBB AX, 09H // Ergebniswert wird im Akkumulator A X // gespeichert
ENDE
Teilung
ORG 0000h
MOV DX, # 08H // Verschiebe den Wert 3, um DX zu registrieren //
MOV AX, # 19H // verschiebe den Wert 5 zum Akkumulator AX //
DIV AX, 08H // Endwert wird im Akkumulator AX // gespeichert
ENDE

Daher dreht sich hier alles um einfache Beispielprogramme für 8086-Prozessoren, Arithmetik- und Logikanweisungen für die Programmierung auf Baugruppenebene 8086, 8086-Prozessorarchitektur. Bei Fragen zu diesem Artikel oder zu Elektronikprojekten können Sie uns im Kommentarbereich unten kontaktieren.