Montage - Einführung
Was ist Assemblersprache?
Jeder Personal Computer verfügt über einen Mikroprozessor, der die arithmetischen, logischen und Steuerungsaktivitäten des Computers verwaltet.
Jede Prozessorfamilie verfügt über eigene Anweisungen zum Behandeln verschiedener Vorgänge, z. B. zum Abrufen von Eingaben über die Tastatur, zum Anzeigen von Informationen auf dem Bildschirm und zum Ausführen verschiedener anderer Aufgaben. Diese Anweisungen werden als "Maschinensprachenanweisungen" bezeichnet.
Ein Prozessor versteht nur Anweisungen in Maschinensprache, die Zeichenfolgen von Einsen und Nullen sind. Die Maschinensprache ist jedoch zu dunkel und komplex für die Verwendung in der Softwareentwicklung. Daher ist die Assemblersprache auf niedriger Ebene für eine bestimmte Prozessorfamilie konzipiert, die verschiedene Anweisungen in symbolischem Code und in einer verständlicheren Form darstellt.
Vorteile der Assemblersprache
Ein Verständnis der Assemblersprache macht einen bewusst -
- Wie Programme mit Betriebssystem, Prozessor und BIOS kommunizieren;
- Wie Daten im Speicher und anderen externen Geräten dargestellt werden;
- Wie der Prozessor auf Anweisungen zugreift und diese ausführt;
- Wie Anweisungen auf Daten zugreifen und diese verarbeiten;
- Wie ein Programm auf externe Geräte zugreift.
Weitere Vorteile der Verwendung der Assemblersprache sind:
Es erfordert weniger Speicher und Ausführungszeit;
Es ermöglicht auf einfachere Weise hardwarespezifische komplexe Jobs.
Es ist für zeitkritische Jobs geeignet;
Es eignet sich am besten zum Schreiben von Interrupt-Serviceroutinen und anderen speicherresidenten Programmen.
Grundfunktionen der PC-Hardware
Die interne Haupthardware eines PCs besteht aus Prozessor, Speicher und Registern. Register sind Prozessorkomponenten, die Daten und Adressen enthalten. Um ein Programm auszuführen, kopiert das System es vom externen Gerät in den internen Speicher. Der Prozessor führt die Programmanweisungen aus.
Die grundlegende Einheit der Computerspeicherung ist ein bisschen; Es kann EIN (1) oder AUS (0) sein, und eine Gruppe von 8 verwandten Bits bildet auf den meisten modernen Computern ein Byte.
Das Paritätsbit wird also verwendet, um die Anzahl der Bits in einem Byte ungerade zu machen. Wenn die Parität gerade ist, geht das System davon aus, dass ein Paritätsfehler aufgetreten ist (obwohl selten), der möglicherweise auf einen Hardwarefehler oder eine elektrische Störung zurückzuführen ist.
Der Prozessor unterstützt die folgenden Datengrößen:
- Wort: Ein 2-Byte-Datenelement
- Doppelwort: Ein 4-Byte-Datenelement (32 Bit)
- Quadword: Ein 8-Byte-Datenelement (64 Bit)
- Absatz: Ein 16-Byte-Bereich (128 Bit)
- Kilobyte: 1024 Bytes
- Megabyte: 1.048.576 Bytes
Binärzahlensystem
Jedes Zahlensystem verwendet die Positionsnotation, dh jede Position, in die eine Ziffer geschrieben wird, hat einen anderen Positionswert. Jede Position ist die Potenz der Basis, die für das Binärzahlensystem 2 ist, und diese Potenzen beginnen bei 0 und erhöhen sich um 1.
Die folgende Tabelle zeigt die Positionswerte für eine 8-Bit-Binärzahl, bei der alle Bits auf ON gesetzt sind.
Bitwert | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
Positionieren Sie den Wert als Potenz der Basis 2 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Bitnummer | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Der Wert einer Binärzahl basiert auf dem Vorhandensein von 1 Bits und ihrem Positionswert. Der Wert einer bestimmten Binärzahl ist also -
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255
das ist das gleiche wie 2 8 - 1.
Hexadezimalzahlensystem
Das Hexadezimalzahlensystem verwendet die Basis 16. Die Ziffern in diesem System reichen von 0 bis 15. Konventionell werden die Buchstaben A bis F verwendet, um die Hexadezimalziffern darzustellen, die den Dezimalwerten 10 bis 15 entsprechen.
Hexadezimalzahlen beim Rechnen werden zum Abkürzen langer binärer Darstellungen verwendet. Grundsätzlich stellt das Hexadezimalzahlensystem binäre Daten dar, indem jedes Byte in zwei Hälften geteilt und der Wert jedes halben Bytes ausgedrückt wird. Die folgende Tabelle enthält die Dezimal-, Binär- und Hexadezimaläquivalente.
Dezimalzahl | Binäre Darstellung | Hexadezimale Darstellung |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | EIN |
11 | 1011 | B. |
12 | 1100 | C. |
13 | 1101 | D. |
14 | 1110 | E. |
15 | 1111 | F. |
Um eine Binärzahl in ihre hexadezimale Entsprechung umzuwandeln, teilen Sie sie von rechts beginnend in Gruppen von jeweils 4 aufeinanderfolgenden Gruppen auf und schreiben Sie diese Gruppen über die entsprechenden Ziffern der hexadezimalen Zahl.
Example - Die Binärzahl 1000 1100 1101 0001 entspricht hexadezimal - 8CD1
Um eine Hexadezimalzahl in eine Binärzahl umzuwandeln, schreiben Sie einfach jede Hexadezimalzahl in ihr 4-stelliges Binäräquivalent.
Example - Die Hexadezimalzahl FAD8 entspricht der Binärzahl - 1111 1010 1101 1000
Binäre Arithmetik
Die folgende Tabelle zeigt vier einfache Regeln für die binäre Addition:
(ich) | (ii) | (iii) | (iv) |
---|---|---|---|
1 | |||
0 | 1 | 1 | 1 |
+0 | +0 | +1 | +1 |
= 0 | = 1 | = 10 | = 11 |
Die Regeln (iii) und (iv) zeigen einen Übertrag eines 1-Bits in die nächste linke Position.
Example
Dezimal | Binär |
---|---|
60 | 00111100 |
+42 | 00101010 |
102 | 01100110 |
Ein negativer Binärwert wird in ausgedrückt two's complement notation. Nach dieser Regel bedeutet das Konvertieren einer Binärzahl in ihren negativen Wert das Umkehren ihrer Bitwerte und das Addieren von 1 .
Example
Nummer 53 | 00110101 |
Bits umkehren | 11001010 |
Addiere 1 | 0000000 1 |
Nummer -53 | 11001011 |
Um einen Wert von einem anderen zu subtrahieren, konvertieren Sie die zu subtrahierende Zahl in das Zweierkomplementformat und addieren Sie die Zahlen .
Example
Subtrahiere 42 von 53
Nummer 53 | 00110101 |
Nummer 42 | 00101010 |
Kehren Sie die Bits von 42 um | 11010101 |
Addiere 1 | 0000000 1 |
Nummer -42 | 11010110 |
53 - 42 = 11 | 00001011 |
Der Überlauf der letzten 1 Bit geht verloren.
Adressierung von Daten im Speicher
Der Prozess, durch den der Prozessor die Ausführung von Anweisungen steuert, wird als bezeichnet fetch-decode-execute cycle oder der execution cycle. Es besteht aus drei kontinuierlichen Schritten -
- Abrufen der Anweisung aus dem Speicher
- Dekodieren oder Identifizieren der Anweisung
- Anweisung ausführen
Der Prozessor kann gleichzeitig auf ein oder mehrere Speicherbytes zugreifen. Betrachten wir eine Hexadezimalzahl 0725H. Diese Nummer benötigt zwei Bytes Speicher. Das Byte höherer Ordnung oder das höchstwertige Byte ist 07 und das Byte niedriger Ordnung ist 25.
Der Prozessor speichert Daten in umgekehrter Bytesequenz, dh ein Byte niedriger Ordnung wird in einer Adresse mit niedrigem Speicher und ein Byte höherer Ordnung in einer Adresse mit hohem Speicher gespeichert. Wenn der Prozessor also den Wert 0725H vom Register in den Speicher bringt, überträgt er 25 zuerst an die niedrigere Speicheradresse und 07 an die nächste Speicheradresse.
x: Speicheradresse
Wenn der Prozessor die numerischen Daten aus dem Speicher zum Registrieren erhält, kehrt er die Bytes erneut um. Es gibt zwei Arten von Speicheradressen -
Absolute Adresse - eine direkte Referenz eines bestimmten Ortes.
Segmentadresse (oder Offset) - Startadresse eines Speichersegments mit dem Offsetwert.