EnglischFranzösischSpanisch

OnWorks-Favicon

as86 – Online in der Cloud

Führen Sie as86 im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl as86, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


as86 – Assembler für 8086..80386-Prozessoren

ZUSAMMENFASSUNG


as86 [-0123agjuw] [-lm[Liste]] [-n Name] [-o obj] [-b[Kasten]] [-s sym] [-t Textseg] src

as86_encap prog.s prog.v [Präfix_] [as86_options]

BESCHREIBUNG


as86 ist ein Assembler für die 8086..80386-Prozessoren, dessen Syntax näher an der liegt
Intel/Microsoft-Form und nicht die normalere generische Form des Unix-Systems
Assembler.

Das src file kann „-“ sein, um die Standardeingabe zusammenzustellen.

Dieser Assembler kann zur Unterstützung der 6809-CPU kompiliert werden und funktioniert möglicherweise sogar.

as86_encap ist ein Shell-Skript zum Aufrufen von as86 und zum Konvertieren der erstellten Binärdatei in eine C-Datei
prog.v um in Programme wie Bootblock-Installationsprogramme eingebunden oder mit diesen verknüpft zu werden. Der Präfix_
Das Argument ist ein Präfix, das allen von der Quelle definierten Variablen hinzugefügt wird. Der Standardwert lautet
der Name der Quelldatei. Zu den definierten Variablen gehören: präfix_start Präfixgröße und
Präfixdaten um den Code zu definieren und zu enthalten, plus Ganzzahlen, die die Werte aller enthalten
exportierte Etiketten. Entweder oder beides prog.s und prog.v Argumente können für Standard „-“ sein
rein/raus.

OPTIONAL


-0 Beginnen Sie mit einem 16-Bit-Codesegment und warnen Sie bei allen Anweisungen > 8086

-1 Beginnen Sie mit einem 16-Bit-Codesegment und warnen Sie bei allen Anweisungen > 80186

-2 Beginnen Sie mit einem 16-Bit-Codesegment und warnen Sie bei allen Anweisungen > 80286

-3 Beginnen Sie mit einem 32-Bit-Codesegment, warnen Sie nicht vor Anweisungen. (nicht einmal 486 oder
586)

-a Teilkompatibilität mit Minix asld aktivieren. Dies vertauscht die Interpretation von
runde Klammern und eckige Klammern sowie Änderungen am Code vornehmen
Generierung und Syntax für 16-Bit-Sprünge und -Aufrufe. ("jmp @(bx)" ist dann gültig
Anweisung)

-g Fügen Sie nur globale Symbole in Objekt- oder Symboldateien ein

-j Ersetzen Sie alle kurzen Sprünge durch ähnliche 16- oder 32-Bit-Sprünge, die 16-Bit-Bedingung
Zweige werden als kurzer bedingter und langer unbedingter Zweig kodiert.

-O Dies führt dazu, dass der Assembler zusätzliche Durchgänge hinzufügt, um zu versuchen, Vorwärtsverweise zu verwenden
Reduzieren Sie die für einige Anweisungen benötigten Bytes. Wenn sich die Etiketten beim letzten Durchgang verschieben
Der Assembler fügt so lange Durchgänge hinzu, bis sich alle Etiketten stabilisiert haben (bis zum Maximum).
von 30 Durchgängen) Es ist wahrscheinlich keine gute Idee, dies mit einem handgeschriebenen Assembler zu verwenden
Verwenden Sie das Explizite br bmi bcc Stil-Opcodes für 8086-Code oder den jmp in der Nähe von Stil für
Führen Sie bedingte i386-Anweisungen aus und stellen Sie sicher, dass alle Variablen vorher definiert sind
werden verwendet.

-l Listendatei erstellen, Dateiname kann folgen

-m Drucken Sie Makroerweiterungen in der Auflistung

-n Es folgt der Name des Moduls (geht in das Objekt statt in den Quellnamen)

-o Objektdatei erzeugen, Dateiname folgt

-b Erstellt eine rohe Binärdatei, der Dateiname kann folgen. Dies ist eine „rohe“ Binärdatei mit
kein Header, wenn es keinen gibt -s Option beginnt die Datei am Speicherort 0.

-s Erzeugen Sie eine ASCII-Symboldatei, der Dateiname folgt. Das Format dieser Tabelle ist
Entwickelt, um eine einfache Analyse für die Kapselung und damit verbundene Aktivitäten zu ermöglichen
in Binärdateien, die mit dem erstellt wurden -b Möglichkeit. Wenn eine Binärdatei nicht mit beginnt
Standort Null Die ersten beiden Elemente in der Tabelle sind die Start- und Endadressen von
die Binärdatei.

-u Gehen Sie davon aus, dass undefinierte Symbole mit nicht spezifiziertem Segment importiert werden.

-w- Erlauben Sie dem Assembler, Warnmeldungen zu drucken.

-t n Verschieben Sie alle Textsegmentdaten in Segment n+3.

AS86 SOURCE


Spezielle Charaktere

* Adresse des Anfangs der aktuellen Zeile.

; ! Beides markiert den Beginn eines Kommentars. Darüber hinaus sind alle „unerwarteten“
Das Zeichen am Anfang einer Zeile wird als Kommentar angesehen (aber es ist auch so).
am Terminal angezeigt).

$ Präfix für Hexadezimalzahlen, auch die 'C'-Syntax, z. B. 0x1234, wird akzeptiert.

% Präfix für Binärzahlen.

# Präfix für unmittelbare Operanden.

[ ] Gibt einen indirekten Operanden an.
Im Gegensatz zu MASM verfügt der Assembler über keine Typinformationen zu Etiketten, sondern nur zu einem Segment und
versetzt. Dies bedeutet, dass die Funktionsweise dieses Operators und des unmittelbaren Präfixes ist
wie herkömmliche Assembler.

Beispiele:
mov ax,bx
jmp bx
Direkte Registeradressierung, der Sprung kopiert BX in PC.

mov axt,[bx]
jmp [bx]
Einfache indirekte Registeradressierung, der Sprung verschiebt den Inhalt des Speicherorts
von BX vorgegebenen Daten in den PC übertragen.

MOV-Axt,#1234
Sofortiger Wert, Axt wird 1234.

MOV-Axt,1234
mov ax,_hello
mov ax,[_hello]
Absolute Adressierung, ax wird auf den Inhalt von Speicherort 1234 gesetzt. Beachten Sie die dritte Option
ist nicht streng konsistent, sondern dient hauptsächlich der ASD-Kompatibilität.

mov ax,_table[bx]
mov ax,_table[bx+si]
mov eax,_table[ebx*4]

mov ax,[bx+_table]
mov ax,[bx+si+_table]
mov eax,[ebx*4+_table]
Indizierte Adressierung, beide Formate sind in Ordnung, ich denke, das erste ist korrekter, aber ich
neigen dazu, die zweite zu verwenden. :-)

Bedingte

WENN, ANDERS, ELSEIF, ENDIF
Numerischer Zustand

IFC, ELSEIFC
String-Vergleich (str1,str2)

FAIL .SCHEITERN
Benutzerfehler generieren.

Segmentbezogen

.TEXT .ROM .DATEN .BSS
Aktuelles Segment festlegen. Diesen kann das Schlüsselwort vorangestellt werden .SEKTE

LOC Stellen Sie das numerische Segment auf 0=TEXT, 3=DATA,ROM,BSS, 14=MAX ein. Die durch die festgelegte Segmentreihenfolge
Linker ist jetzt 0,4,5,6,7,8,9,A,B,C,D,E,1,2,3. Segment 0 und alle Segmente über 3
werden als Textsegment angenommen. Beachten Sie, dass die Größenbeschränkungen auf 64 KB nicht gelten
Segmente 3-14.

Definition des Etikettentyps

EXPORT ÖFFENTLICHKEIT .DEFINIEREN
In diesem Objekt definiertes Exportlabel

EINTRAG Erzwingen Sie, dass der Linker die angegebene Bezeichnung in a.out einschließt

.GLOBL .GLOBAL
Definieren Sie die Bezeichnung als extern und erzwingen Sie den Import, auch wenn sie nicht verwendet wird.

EXTRN AUSSEN EINFÜHREN .EXTERN
Liste extern definierter Labels importieren
NB: Es macht keinen Sinn, Importe für rohe Binärdateien zu verwenden.

.EINGEBEN Eintrag für alte Binärdatei (obs) markieren

Datendefinition

DB .DATA1 .BYTE FCB
Liste von 1-Byte-Objekten.

DW .DATA2 .KURZ FDB .WORT
Liste von 2-Byte-Objekten.

DD .DATA4 .LANG
Liste von 4-Byte-Objekten.

.ASCII FCC
ASCII-Zeichenfolge zur Ausgabe kopiert.

.ASCIZ ASCII-Zeichenfolge wird mit nachgestelltem Text in die Ausgabe kopiert nichtig Byte.

Raumdefinition

.BLKB RMB .RAUM
Der Speicherplatz wird in Bytes gezählt.

.BLKW .NULL
Der Raum wird in Worten gezählt. (jeweils 2 Byte)

COMM .COMM LCOMM .LCOMM
Definition von Gemeinschaftsbereichsdaten

Weitere nützliche Pseudooperationen.

.AUSRICHTEN .SOGAR
Ausrichtung

EQU Etikett definieren

SET Definieren Sie ein neu definierbares Etikett

ORG .ORG
Legen Sie den Montageort fest

BLOCK Legen Sie den Montageort fest und stapeln Sie das alte

ENDE Kehren Sie zum gestapelten Montageort zurück

BESTELLE eNTHALTEN
Neue Datei einfügen (keine Anführungszeichen beim Namen)

VERWENDE 16 [CPU]
Definieren Sie die Standardoperandengröße als 16 Bit, das Argument ist der CPU-Typ, den der Code voraussichtlich haben wird
Führen Sie die Befehle (86, 186, 286, 386, 486, 586) für CPU später als angegeben aus
eine Warnung geben.

VERWENDE 32 [CPU]
Definieren Sie die Standardoperandengröße als 32 Bit, das Argument ist der CPU-Typ, den der Code voraussichtlich haben wird
Führen Sie die Befehle (86, 186, 286, 386, 486, 586) für CPU später als angegeben aus
eine Warnung geben. Wenn die CPU nicht erwähnt wird, stellt der Assembler sicher, dass sie >= 80386 ist.

ENDE Ende der Kompilierung für diese Datei.

.WARNEN Warnungen wechseln

.AUFFÜHREN Einträge ein/aus (1,-1)

.MACLIST
Makrolisten ein/aus (1,-1)

Makros funktionieren jetzt, die allgemeine Form sieht so aus.

MACRO-Saxophon
mov ax,#?1
HEILEN
Saxophon(1)

Nicht implementiert/unbenutzt.

IDENT Objektidentitätszeichenfolge definieren.

SETDP DP-Wert auf 6809 einstellen

MAP Legt die Kartennummer der binären Symboltabelle fest.

Register
BP BX DI SI
EAX EBP EBX ECX EDI EDX ESI ESP
AX CX DX SP
AH AL BH BL CH CL DH DL
CS DS ES FS GS SS
CR0 CR2 CR3 DR0 DR1 DR2 DR3 DR6 DR7
TR3 TR4 TR5 TR6 TR7 ST

Spezifizierer für Operandentypen
BYTE DWORD FWORD FAR PTR PWORD QWORD TBYTE WORD NEAR

„Nah“ und „Fern“ ermöglichen keine Mehrsegmentprogrammierung, sondern alle „Fern“-Operationen
werden explizit durch die Verwendung der Anweisungen spezifiziert: jmpi, jmpf, callf,
retf usw. Der „Near“-Operator kann verwendet werden, um die Verwendung von 80386 16bit zu erzwingen
bedingte Zweige. Die Operatoren „Dword“ und „word“ können die Größe steuern
Operanden bei weiten Sprüngen und Aufrufen.

Allgemeine Anweisungen.
Diese stimmen im Allgemeinen mit den Anweisungen überein, die in jedem 8086-Assembler zu finden sind
Hauptausnahmen sind einige „Bcc“-Anweisungen (BCC, BNE, BGE usw.).
Abkürzungen für einen kurzen Zweig plus Weitsprung und „BR“ für den längsten
bedingungsloser Sprung (16 oder 32 Bit).

Lange Äste
BCC BCS BEQ BGE BGT BHI BHIS BLE BLO BLOS BLT BMI BNE BPC BPL BPS BVC BVS BR

Intersegment
KALLI CALLF JMPI JMPF

Anweisungen für Segmentmodifikatoren
ESEG FSEG GSEG SSEG

Byte-Operationsanweisungen
ADCB ADDB ANDB CMPB DECB DIVB IDIVB IMULB INB INCB MOVB MULB NEGB NOTB ORB OUTB
RCLB RCRB ROLB RORB SALB SARB SHLB SHRB SBBB SUBB TESTB XCHGB XORB

Standardanweisungen
AAA AAD AAM AAS ADC ADD UND ARPL BOUND BSF BSR BSWAP BT BTC BTR BTS CALL CBW CDQ
CLC CLD CLI CLTS CMC CMP CMPS CMPSB CMPSD CMPSW CMPW CMPXCHG CSEG CWD CWDE DAA DAS
DEC DIV DSEG ENTER HLT IDIV IMUL IN INC INS INSB INSD INSW INT INTO INVD INVLPG INW
IRET IRETD J JA JAE JB JBE JC JCXE JCXZ JE JECXE JECXZ JG JGE JL JLE JMP JNA JNAE
JNB JNBE JNC JNE JNG JNGE JNL JNLE JNO JNP JNS JNZ JO JP JPE JPO JS JZ LAHF LAR LDS
LEA VERLASSEN LES LFS LGDT LGS LIDT LLDT LMSW LOCK LODB LODS LODSB LODSD LODSW LODW
LOOP LOOPE LOOPNE LOOPNZ LOOPZ LSL LSS LTR MOV MOVS MOVSB ​​MOVSD MOVSW MOVSX MOVW
MOVZX MUL NEG NOP NICHT ODER OUT OUTS OUTSB OUTSD OUTSW OUTW POP POPA POPAD POPF POPFD
PUSH PUSHA PUSHAD PUSHF PUSHFD RCL RCR RDMSR REP REPE REPNE REPNZ REPZ RET RETF
RETI ROL ROR SAHF SAL SAR SBB SCAB SCAS SCASB SCASD SCASW SCAW SEG SETA SETAE SETB
SETBE SETC SETE SETG SETGE SETL SETLE SETNA SETNAE SETNB SETNBE SETNC SETNE SETNG
SETNGE SETNL SETNLE SETNO SETNP SETNS SETNZ SETO SETP SETPE SETPO SETS SETZ SGDT
SHL SHLD SHR SHRD SIDT SLDT SMSW STC STD STI STOB STOS STOSB STOSD STOSW STOW STR
SUB TEST VERR VERW WAIT WBINVD WRMSR XADD XCHG XLAT XLATB XOR

Gleitkomma
F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX FCOM FCOMP FCOMPP FCOS FDECSTP FDISI
FDIV FDIVP FDIVR FDIVRP FENI FFREE FIADD FICOM FICOMP FIDIV FIDIVR FILD FIMUL
FINCSTP FINIT FIST FISTP FISUB FISUBR FLD FLD1 FLDL2E FLDL2T FLDCW FLDENV FLDLG2
FLDLN2 FLDPI FLDZ FMUL FMULP FNCLEX FNDISI FNENI FNINIT FNOP FNSAVE FNSTCW FNSTENV
FNSTSW FPATAN FPREM FPREM1 FPTAN FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
FSQRT FST FSTCW FSTENV FSTP FSTSW FSUB FSUBP FSUBR FSUBRP FTST FUCOM FUCOMP FUCOMPP
FWAIT FXAM FXCH FXTRACT FYL2X FYL2XP1

Die richtigen GASP


Der Gnu-Assembler-Präprozessor bietet einige sinnvolle, benutzerorientierte Implementierungen
Pseudo-Opcodes.

Es kann in einer ähnlichen Form aufgerufen werden wie:

keuchen [-A...] Datei.s [Datei2.s] |
as86 [...] - [-o obj] [-b Kasten]

Beachten Sie jedoch, dass Gasp einen Fehler generiert .org €XNUMX Befehle, wenn Sie sie nicht verwenden
alternative Syntax, die Sie verwenden können org stattdessen, andernfalls verwenden Schutzmassnahmen bei und endb. Die Richtlinie
exportieren wird übersetzt in .global, was einen Import erzwingt, wenn Sie eine Datei mit erstellen
-b - Öffentlichkeit or .definieren stattdessen.

Die GASP-Listenoptionen werden in as86 nicht unterstützt.

Nutzen Sie as86 online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad