Heim >häufiges Problem >Was sind die Komponenten der Assemblersprache?
Die Zusammensetzung der Assemblersprache: 1. Übertragungsanweisungen, einschließlich allgemeiner Datenübertragungsanweisungen, bedingter Übertragungsanweisungen usw.; 2. Logische Operationen, dieser Teil der Anweisungen wird zum Ausführen arithmetischer und logischer Operationen verwendet; zum Übertragen von Registern oder zum Verschieben des Speicheroperanden um eine bestimmte Anzahl von Malen. 4. Bitoperationen, einschließlich Testanweisungen BT, Bittest- und Setzanweisungen usw. 5. Steuerübertragung, einschließlich unbedingter Übertragungsanweisungen JMP, bedingte Übertragungsanweisungen JCC/JCXZ“ usw.; 6, String-Operation, wird zum Bearbeiten von Datenstrings verwendet; 7. Eingabe und Ausgabe, werden zum Datenaustausch mit Peripheriegeräten verwendet.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, DELL G3-Computer.
Aufgrund des riesigen Assembler-Anweisungssystems ist es notwendig, ein Anweisungssystem mit einer großen Anzahl von Anweisungen, komplexen Formaten und schlechter Einprägsamkeit aufzubauen. Das Schwierigste an der Anweisung ist der von der Anweisung unterstützte Adressierungsmodus. Ihr Kern besteht darin, wie die Operanden in der Anweisung abgerufen werden. Für den Prozessor geht es darum, wie er die benötigten Daten findet. Für die zugrunde liegende Assemblersprache des Computers umfasst diese Adressierungsmethode jedoch eine große Anzahl von Berechnungsspeicherformaten und ist eng mit komplexen Speicherverwaltungsmethoden verbunden, was das Verständnis erschwert. Schließlich beziehen sich Montageanweisungen auch darauf, wie Flag-Bits beeinflusst werden. Prozessor-Flag-Bits sind jedoch sehr komplex, sodass es schwierig ist, ihre Mechanismen zu beherrschen.
Übertragungsanweisungen
umfassen allgemeine Datenübertragungsanweisungen MOV, bedingte Übertragungsanweisungen CMOVcc, Stapelbetriebsanweisungen PUSH/PUSHA/PUSHAD/POP/POPA/POPAD, Austauschanweisungen XCHG/XLAT/BSWAP, Adresse Oder Unterübertragungsanweisungen zur Segmentdeskriptorauswahl LEA/LDS/LES/LFS/LGS/LSS usw.
Logische Operationen
Dieser Teil der Anweisungen wird zur Durchführung arithmetischer und logischer Operationen verwendet, einschließlich Additionsanweisungen ADD/ADC, Subtraktionsanweisungen SUB/SBB sowie einer Anweisung INC und einer Subtraktionsanweisung DEC , Vergleichsoperationsanweisungen CMP, Multiplikationsanweisungen MUL/IMUL, Divisionsanweisungen DIV/IDIV, Vorzeichenerweiterungsanweisungen CBW/CWDE/CDQE, Dezimalanpassungsanweisungen DAA/DAS/AAA/AAS, logische Operationsanweisungen NOT/AND/OR/XOR/TEST , usw.
Verschiebungsanweisungen
Dieser Teil der Anweisung wird verwendet, um das Register oder den Speicheroperanden eine bestimmte Anzahl von Malen zu verschieben. Einschließlich logischer Linksschiebebefehl SHL, logischer Rechtsschiebebefehl SHR, arithmetischer Linksschiebebefehl SAL, arithmetischer Rechtsschiebebefehl SAR, kreisförmiger Linksschiebebefehl ROL, kreisförmiger Rechtsschiebebefehl ROR usw.
Bit-Operation
Dieser Teil der Anweisungen umfasst den Bittest-Befehl BT, den Bittest- und Setzbefehl BTS, den Bittest- und Reset-Befehl BTR, den Bittest- und Negierungsbefehl BTC sowie den Bit-Vorwärtsscan Befehl BSF, Bit-Rückwärtsscan-Befehl BSR usw.
Kontrollübertragung
Dieser Teil umfasst bedingungslose Übertragungsanweisungen JMP, bedingte Übertragungsanweisungen JCC/JCXZ, Schleifenanweisungen LOOP/LOOPE/LOOPNE, Prozeduraufrufanweisungen CALL, Unterprozessrückgabeanweisungen RET und Interrupt-Anweisungen INTn, INT3, INTO, IRET usw.
String-Operation
Dieser Teil der Anweisungen wird zum Betreiben der Datenzeichenfolge verwendet, einschließlich der Zeichenfolgenübertragungsanweisung MOVS, der Zeichenfolgenvergleichsanweisung CMPS, der Zeichenfolgenscananweisung SCANS, der Zeichenfolgenladeanweisung LODS und der Zeichenfolgenspeicherung Anweisung STOS können diese Anweisungen optional sequentiell mit den Präfixen REP/REPE/REPZ/REPNE und REPNZ ausgeführt werden.
Eingabe und Ausgabe
Dieser Teil der Anweisungen dient zum Datenaustausch mit Peripheriegeräten, einschließlich Port-Eingabeanweisungen IN/INS und Port-Ausgabeanweisungen OUT/OUTS.
Assemblersprache ist die schnellste und effizienteste Sprache, die Computer den Benutzern zur Verfügung stellen. Sie ist auch die einzige Sprache, die alle Hardwarefunktionen des Computers nutzen und die Hardware direkt steuern kann. Da das Schreiben und Debuggen von Assemblerprogrammen jedoch komplizierter ist als in Hochsprachen, ist seine Anwendung derzeit nicht so weit verbreitet wie in Hochsprachen. Assemblersprache ist besser lesbar als Maschinensprache, aber im Vergleich zu Hochsprachen ist ihre Lesbarkeit immer noch schlecht. Damit geschriebene Programme weisen jedoch die Merkmale einer geringen Speicherplatznutzung und einer schnellen Ausführungsgeschwindigkeit auf, die nicht durch Hochsprachen ersetzt werden können. In tatsächlichen Anwendungen hängt die Verwendung der Assemblersprache von den spezifischen Anwendungsanforderungen, der Entwicklungszeit und der Qualität ab.
VorteileAls Programmiersprache der zweiten Generation über der Maschinensprache hat die Assemblersprache auch viele Vorteile:
Sie kann den Speicherstatus und den Status der Hardware-E/A-Schnittstelle leicht lesen
Da weniger Code geschrieben werden muss Viele Kompilierungsschritte können genau ausgeführt werden
Als Low-Level-Sprache ist sie hoch skalierbar
NachteileDa der Code sehr eintönig ist und nur wenige Sonderanweisungszeichen enthält, ist der Code langwierig und schwierig zu schreiben. Da die Assembly immer noch den Speicher aufrufen muss, um Daten zu speichern, kann es leicht zu Fehlern kommen ist nicht einfach zu debuggen. Auch wenn Sie ein Programm erstellen, wird es später viel Zeit in Anspruch nehmen, es zu warten. Aufgrund der Besonderheiten der Maschine ist die Codekompatibilität schlecht. Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ“!
Das obige ist der detaillierte Inhalt vonWas sind die Komponenten der Assemblersprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!