Diskussion:Assemblersprache
Auf dieser Seite werden Abschnitte ab Überschriftenebene 2 automatisch archiviert, die seit 21 Tagen mit dem Baustein {{Erledigt|1=--~~~~}} versehen sind. Das aktuelle Archiv befindet sich unter Diskussion:Assemblersprache/Archiv/1. |
Modernes Code-Beispiel
[Quelltext bearbeiten]Willkommen in der Gegenwart
[Quelltext bearbeiten]Dieser Artikel beweisst mir, dass in Bezug auf Assembler die meisten (auch die Autoren hier) auf dem Stand von vor 15 Jahren stehen geblieben sind. Es ist schon etwas arm wenn man mit Beispielen hantiert, die man schon vor 20 Jahren unter MS/DOS verwendet hat und mit der heutigen Programmierung in Assembler nichts mehr zu tun hat. Als wichtigste Assembler werden noch immer MASM und TASM bezeichnet - wie vor 15 Jahren auch. Wo bleiben die Verweise auf MASM32 oder andere High-Level-Acssembler? So wie in diesen Beispielen programmiert man schon lange nicht mehr in Assembler.--84.170.109.177 13:06, 2. Mai 2010 (CEST)
- Wie sieht denn der heutige Stand aus? Wie programmiert man den heute, was ist an den Beispielen zu bemängeln? Ich wäre für Hinweise sehr dankbar, da ich mich für das Thema sehr interessiere. 92.231.47.8 08:33, 21. Jul. 2010 (CEST)
- Ich hab gerade mit Assemblerprogrammierung mit dem Handbuch des Turbo-Assemblers von Borland (5. Auflage 1989) angefangen und die Beispieltexte in dem Artikel kommen denen im Handbuch sehr nahe, TASM ≠ MASM ≠ NASM, aber seht selbst:
Hello World in TASM
[Quelltext bearbeiten] .MODEL SMALL
.STACK 100h
.DATA
HW DB 'Hello World',13,10,'$'
.CODE
mov ax,@data
mov ds,ax ; DS zeigt auf das Datensegment
mov ah,09h ; DOS-Funktion Stringausgabe
mov dx,OFFSET HW ; Zeiger auf „Hello World“
int 21h ; Ausgabe „Hello World“
mov ah,4Ch ; DOS-Funktion Programmende
int 21h ; Programm beenden
END
- Wenn es jemand für sinnvoll hält, kann er/sie es zum Artikel dazufügen. --79.230.75.46 00:12, 21. Aug. 2010 (CEST)
Zeitgemäßes Hello World
[Quelltext bearbeiten]Es wurde ja oben schon einmal angesprochen, dass die bisherigen Beispiele aus Büchern stammen, die mindestens 15-20 Jahre auf dem Buckel haben. Da wird zweimal der gleiche Code - einmal für TASM und einmal für MASM - abgedruckt... beide Produkte sind 20 Jahre alt und das Betriebssystem MS/DOS sogar noch älter.Hier stellt sich für mich die Frage was das soll?
Assembler ist ein schnelle Sprache und dies ist auch der wesentliche Vorteil. Dann aber mit einer Notation aus der EDV-Steinzeit zu aggieren, zeugt dann doch schon ein wenig von Unwissenheit. Wer auf einem modernen Core2Duo mit x86 Assembler angerückt kommt, der rüstet auch einen Supertanker mit einem Außenbordmotor aus.
Es ist leider auch genau dass das Dilemma: Jeder weiß hier was Assembler ist und hat die große Ahnung von der Materie - aber weder im Artikel noch in der Diskussion ist ein aktuelles Beispiel zu finden. Dann kommt naoch dazu, das auch die alten 8-Bit-CPUS sowie eine Vielzahl von anderen Rechenknechten Assemblercode haben - was ist mit denen.
War noch was...achja - so sieht ein Hello World in Assembler heute aus: (Heute bedeutet: iA32_64 unter Linux)
LC0: .string "Hello, World" ; Definition des Ausgabestrings
.globl main ; Definition der main-Funktion
.type main @function ; (wird nur für die "Vergewaltigung" des C-Compilers gebraucht)
main:
pushq %rbp ; Basepointer retten
movq %rsp,%rbp ; Stackpointer als Basepointer setzen
movl $LC0,%edi ; Referenz des Ausgabestrings laden
call puts ; Systemfunktion puts aufrufen
leave ; Systemkontext wieder herstellen für Rücksprung
ret ; und zurück zur aufrufenden Instanz
Hat irgendwie wenig Ähnlichkeit mit dem alten TASM und MASM Code für DOS...
läßt sich auf jedem 64-Bit Linux unter Vergewaltigung des C-Compiler assemblieren:
cc -s test.asm
Dadurch, dass der C-Compiler vergewaltigt wird, entsteht ein mit 5kb recht großes Binary mit gas wird es kürzer - der Aufruf aber auch nicht mehr wikipediatauglich. Thomas Merbold 14:41, 24. Nov. 2010 (CET)
- hmmm....
- Sollte der Artikel evtl. deutlich machen, dass es ...
- 1. ein "Ursprüngliches/Historisches" Assembler gibt, bei dem jeder "Assemberbehelt" (direkt) eins zu eins in Maschienensprache übersetzt wrid
- und dann
- 2. ein "modernes" Assembler gibt, welches um Elemente einer Hochsprache erweitert wurde. Denn bei dem oberen Beispiel seht ja z.B. ".sting". Den Datentyp kennt ja noch nicht einmal die Hochspache c. Und eine CPU kennt diesen Befehl/Definition auch nicht. Hier muss ein "Assembler-Compiler" 'umständlich' ggf. sogar über mehrere Zwischenschritte diesen Befehl übersetzen. --2A02:908:2214:E5C0:E520:63C5:F436:9DC4 12:52, 28. Mai 2023 (CEST)
Der Vollständigkeit halber noch eine weitere Version - diesmal für den Amiga auf 68k Prozessor:
SysBase equ 4
OpenLibrary equ -552
CloseLibrary equ -414
Output equ -60
Write equ -40
; --- CODE ---------------------------------------------------------------------
; Schritt 1: DOS Bibliothek öffnen
main: move.l #dosname,a1 ; Name der DOS-Bilbliothek in A1
moveq #0,d0 ; D0 löschen
move.l SysBase,a6 ; Systembasis in A6
jsr OpenLibrary(a6) ; und Library öffnen
tst.l d0 ; hat es geklappt?
beq ende ; Nein --> und Tschüss
move.l d0,DOSBase ; ansonsten Zeiger retten
; Schritt 2: String ausgeben
move.l DOSBase,a6 ; Zeiger aus DOS-Lib in A6 laden
jsr Output(a6) ; Dateiident für Ausgabe holen (aktuelles CLI-Fenster)
move.l d0,d1 ; und in D1 umkopieren
move.l #string,d2 ; Referenz auf den String in D2
moveq #12,d3 ; Länge in D3
move.l DOSBase,a6 ; DOS-Basis in A6
jsr Write(a6) ; und String ausgeben
move.l DOSBase,a1 ; DOS-Basis in A1
move.l SysBase,a6 ; SysBase in A6
jsr CloseLibrary(a6) ; und DOS_Lib schließen
ende: rts ; zurück zum System
; --- DATA --------------------------------------------------------------------
DOSBase: dc.l 0
align 4
dosname: dc.b "dos.library",0
align 4
string: dc.b 'Hello World',10
Thomas Merbold 22:05, 24. Nov. 2010 (CET)
Info zum NASM hello world-Beispiel eines COM-Programms
[Quelltext bearbeiten]Für DOS-COM-Programme kann nur ein einziges 64 KB-Segment verwendet werden und beim Starten bekommt DS deswegen schon die selbe Segment-Adresse wie CS zugewiesen. Ein "push cs" und "pop ds" am Anfang des Programm-Codes macht daher bei einem COM-Programm keinen wirklichen Sinn.
Das Beenden eines COM-Programms kann (ab MSDOS 2) auch mit dem ret-Befehl erfolgen, wenn der Stack erhalten bleibt und CS nicht ungünstig manipuliert wurde, sondern ein Rücksprung zum "int 20h" im PSP möglich bleibt. (Im PSP wird von DOS vor dem Starten der Opcode für "int 20h" eingetragen und ein Word mit 0000h auf den Stack gepusht.)
Dirk (nicht signierter Beitrag von 92.231.183.13 (Diskussion) 08:11, 9. Mär. 2013 (CET))
- Für DOS-COM Programme kann auch mehr als ein Segment verwendet werden, allerdings muss dann der Programmierer das Segmenthandling und das Speichermanagement komplett selbst übernehmen. Diese Technik wurde in der Demo-Programmierung sehr gerne verwendet - an dieser Stelle sei das Uneatable-Demo genannt, welches aus einem 2MB großen .COM besteht. .COM-Programme unterscheiden sich von .EXE darin, das es keinen Header gibt, alle Segmentregister auf ein und dasselbe Segment zeigen und die Startadresse der ersten Instruktion auf 100h festgelegt ist. DOS reserviert für eine .COM Programm immer 64kB - unabhängig wie groß das Programm selbst ist. Was danach passiert kann der Programmierer selbst entscheiden. Dieser kann danach die Segmentregister nach Belieben ändern. Thomas Merbold (Diskussion) 01:45, 17. Jun. 2013 (CEST)
MASM
[Quelltext bearbeiten]Auf die Frage ob nur DATEN und DATA, oder auch einfach nur (frisches) BLUT verwendet werden darf antwortete Dr. Frankenstein wie folgt:
Als Geburtshelfer dürfen wir ihnen auch selber einen Namen geben.
Defines a program segment called name having segment attributes
name SEGMENT READONLY align combine use characteristics ALIAS(string) 'class'
statements
name ENDS
.MODEL small
assume cs:HERZ,ds:BLUT,ss:NIEREN
HERZ SEGMENT use16 'CODE'
start:
mov ax,BLUT
mov ds,ax
; weitere Befehle HERZ ends
BLUT SEGMENT use32 'DATA'
Transfusion DD ?
BLUT ends
NIEREN SEGMENT use16 STACK 'STACK'
DB 10h dup (0)
NIEREN ends
END start
(...nun müssen wir nur noch den Blitz einschlagen lassen..)
Zombiegeburt mit DATA:
.MODEL small
.CODE
start:
mov ax,@DATA
mov ds,ax
.DATA
WERT DD
.STACK 10h
END start
- ------------------Frankensteins Geburtshelfer Ende-------------------------------------------------------
MS-DOS COM-Programm-Beispiel für MASM (Änderungsvorlage)
(konvertieren mit exe2bin.exe muster.exe muster.com)
.model tiny
.code
mov dx,offset STRING
mov ah,9
int 21h
ret
.data
STRING DB "hello world$"
end
Dirk (nicht signierter Beitrag von 92.231.182.133 (Diskussion) 09:34, 13. Mär. 2013 (CET))
- In welcher Hinsicht soll das 'den Artikel verbessern' (= der Zweck von Diskussionen). Jedenfalls sehe ich (und meine OMA!) hier keinerlei Sinn: Es gibt bereits MASM als Beispiel, und das sollte genügen. --VÖRBY (Diskussion) 10:30, 13. Mär. 2013 (CET)
- Vor allem weil so nicht korrekt ist. Es werden "Tricks" des Assemblers präsentiert, aber zwei wichtige Dinge im letzten Beispiel komplett vergessen: 1. wenn es ein COM-Programm werden soll, fehlt die lebensnotwendige Anweisung "ORG 100h" um die Startadresse festzulegen und 2. ist das Speichermodell TINY die Voraussetzung für ein COM-Program - aber damit ist es noch keines. Zu diesem wird es erst, wenn es mit TASM/TLINK mit der Option -t übersetzt wird oder das entstehende EXE mit EXE2BIN behandelt wird. Über den Nährwert lässt sich streiten, aber im Artikel Beispiele aus dem vorigen Jahrtausend stehen zu lassen ist so, wie wenn man im Artikel Fernseher nur das Bild eines 50Jahre alten Schwarzweißgerätes zeigt und LCD oder Plasmageräte vollständig ignoriert. Die OMA von heute fragt nicht mehr nach dem Weg - dafür hat sie eine App Thomas Merbold (Diskussion) 08:08, 1. Dez. 2016 (CET)
Zum besseren Vergleichen der MS-DOS-Programm-Beispiele von NASM und von MASM wäre es zweckmäßig das selbe Zielformat zu verwenden und nicht einmal eine Vorlage für eine .Exe and beim anderen Beispiel eine Vorlage für eine .Com-Datei zu zeigen, weil das könnte sonst schon etwas verwirrend sein.
Auch könnten diese beiden Beispiele für MS-DOS auch ohne die Hilfe von Betriebssystem-, oder Biosfunktionen einen String auf den Textbildschirm bringen können, wobei diese Methode unter einem anderen Betriebssystem an den fehlenden Zugriffsrechten scheitern könnte. Weil die Verwendung von assembler ist ja nicht zwingend an ein bestimmtes Betriebssystem gebunden, sondern eher von der jeweiligen Architektur der verwendeten Hardware und Umgebung abhängig.
Dirk
- Könnte man die 'hello World' Varianten nicht entsprechend angleichen? Das wäre doch sinnvoller als ein neues, m.E. total 'schräges' Beispiel hier zu posten? Wir bewegen uns hier in einer Enzyklopädie und sollten entsprechend kurze und allgemeinverständliche Texte einstellen. Wer mich fragt: Ein Link auf diesen Artikel wäre die nloch bessere Variante; in der Kürze liegt die Würze. --VÖRBY (Diskussion) 11:10, 13. Mär. 2013 (CET)
- Im Artikel sind reine Demonstrations-Beispiele und keine Programmier-Anleitungen. Anders geht's immer, besser schon schwerer. Man müsste ja sonst auch erklären, was ".EXE" oder ".COM" zu bedeuten hat. Und noch mehr. Assembler hängt eben voll vom Betriebssystem ab. --RobTorgel (Diskussion) 11:22, 13. Mär. 2013 (CET)
- Im Artikel wurde der Begriff MS-DOS-Com-Programm schon ohne eine weitere Erklärung dazu neben dem Beispiel einer Vorlage für eine Exe (ebenfalls ohne eine Erklärung dazu) verwendet. Weil so eine genauere Erklärung dazu dann wohl doch über das Ziel(einfach erkennbare Beispiele zeigen) hinausgehen würde, deswegen sollten beide Beispiele und auch deren Zielformate so weit wie möglich identisch bleiben und nicht so sehr von einander abweichen.
- Dirk
Hallo zusammen, die im Artikel schon vorhandenen Beispiele zum Hallo-Welt-Programm sind redundant zu den Hello-World-Listen, die in jenem Artikel bei 'Siehe auch' verlinkt sind. Ich schlage vor, die Beispielcodes aus dem Artikel zu entfernen und durch allgemeine Aussagen sowie Links zu diesen Artikeln zu ersetzen. Der 'Frankenstein' (desses Sinn ich hier immer noch nicht verstehe) hätte sich damit auch erledigt.
Zu 'DOS ohne weitere Erklärung': Da ist ein Link drin, mehr braucht es nicht.--VÖRBY (Diskussion) 12:05, 13. Mär. 2013 (CET)
"Frankensteins" Antwort bezog sich nur auf die Frage/Aussage(von Rotkaeppchen68 01:44, 30. Sep. 2007 (CEST)), ob DATEN, oder DATA die richtige Bezeichnung für unser Datensegment ist.
(..ich habe unter "Frankenstein" nun eine Trennlinie plaziert..)
...
Ich denke das im Artikel selber auch solche kleinen Code-Beipiele mit hinein gehören und auch dort aufgelistet bleiben sollten.
Dirk (nicht signierter Beitrag von 92.231.182.133 (Diskussion) 12:27, 13. Mär. 2013 (CET))
- Warum sollte man im Artikel weitere Beispielprogramme aufnehmen? Da könntest du Tausende davon (er)finden. Und was soll der ganze Firlefanz mit Herz, Blut und Nieren etc. im Code? Wenn die Beispiele zu Hello-World unpassend sind, kann und sollte man sie korrigieren, braucht aber keine weiteren, schon gar keine derart 'schrägen' Beispiele. Oder bin ich irgendwie blind?
- Das Entfernen der Redundanz (s.oben 12:05) scheint mir nach wie vor die richtige Vorgehensweise zu sein.--VÖRBY (Diskussion) 14:51, 13. Mär. 2013 (CET)
- +1. Wenn es so ausführliche Artikel zu "Hello, world" gibt, dann ist das hier wohl voll redundant. --RobTorgel (Diskussion) 14:57, 13. Mär. 2013 (CET)
Die unter "Frankenstein" gezeigten Beispiele sollten keine Hello-Wold-Beispiele für den Artikel werden, sondern lediglich zeigen wie man eigene Segment-Namen verwenden kann. Die beiden Programm-Beispiele für DOS, MASM und NASM im Artikel sollten möglichst identisch sein und aneinander angeglichen werden. Dafür habe ich ein möglichst kleines Beispiel gewählt, welches als Änderungsvorlage für das NASM-Beispiel dienen könnte. Dirk (nicht signierter Beitrag von 92.231.182.133 (Diskussion) 15:31, 13. Mär. 2013 (CET))
- Genau das ist das Problem: Warum hast du nicht die Hello-Texte benutzt und entsprechend modifiziert, sondern was ganz Neues (und 'Schräges', zumindest Verwirrendes) erfunden? Die von dir beklagte Uneinheitlichkeit hat ihre Ursache auch in redundanten Texten - weshalb ich diese auf das Notwendigste reduzieren, d.h. die Vergleiche durch Links ersetzen möchte. --VÖRBY (Diskussion) 15:43, 13. Mär. 2013 (CET)
- Ich habe doch den Hello-Text aus dem Artikel benutzt und entsprechend modifiziert und auf das nötigste reduziert(siehe Änderungsvorlage). Dirk
- Wozu brauchte es dann die Abschnitte 'cs:HERZ,ds:BLUT,ss:NIEREN' und 'Zombiegeburt mit DATA'? Und welchem Zweck soll eine 'Änderungsvorlage' dienen? Welches Original sollte da geändert werden? Warum gibt es dort keine Kommentare? Wo ist das, was du wirklich damit wolltest, beschrieben? Mindestens habe ich also deine Disk-Beiträge hier gründlich miss- oder besser nicht-verstanden. Sorry. Ansonsten siehe obige Texte. --VÖRBY (Diskussion) 19:17, 13. Mär. 2013 (CET)
- Ich bin für den Vorschlag 12:05, und dann lassen wir es erstmal. Wenn irgendeine geniale (andere) Idee auftaucht, können wir ja nochmal reden. @Dirk: Super, dass du dir Gedanken machst, aber wir können dir da nicht folgen und sehen keine Verbesserung --RobTorgel (Diskussion) 20:10, 13. Mär. 2013 (CET)
- Tolle Idee! Wir beschreiben hier die Assemblersprache, verwenden aber dann dieses Frankensteinbeispiel, das auf ganz spezielle Belange der Intel x86 Architektur eingeht. Ist nicht so zielführend finde ich....Thomas Merbold (Diskussion) 08:12, 1. Dez. 2016 (CET)
Hallo zusammen, ich habe die ASS-Code-Beispiele vorläufig nach Diskussion:Liste von Hallo-Welt-Programmen/Assembler kopiert und dazu Fragestellungen eingestellt. Wer könnte da mal reinschauen? --VÖRBY (Diskussion) 08:52, 14. Mär. 2013 (CET)
Im obigen Beispiel mit "cs:HERZ,ds:BLUT,ss:NIEREN" bekommen die Segmente einen Namen zugewiesen. So wie es hier von MS beschrieben wird:
Defines a program segment called name having segment attributes
name SEGMENT READONLY align combine use characteristics ALIAS(string) 'class'
statements
name ENDS
Im Anschluss daran habe ich es mit einem Beipiel doch auch gezeigt wie man Segmente einen Namen geben kann.
Hierbei geht es nur darum zu zeigen wie man Segmente in unserem Listing einen eigenen Namen geben kann.
Daran ist auch nichts schräg, sondern eigene Segmentnamen können völlig regulär verwendet werden, genauso wie es MS uns zeigt.
Solche eigenen Segmentnamen können wir dann auch in unserem Code verwenden, so wie es in meinem Beispiel mit dem Datensegment mit dem Namen BLUT und den darauf sich beziehenden Mov-Befehl zu sehen ist:
mov ax,BLUT
mov ds,ax
Der Assembler trägt für uns beim Assemblieren die Segmentadresse vom Segment mit dem Namen BLUT für unseren Mov-Befehl im Code als Immediatewert ein.
Ohne so eine Namensgebung von Segmentnamen läßt sich unser Datensegment nur über den Bezeichner "DATA" erreichen, so wie ich es im folgenden Zombiegeburt-Listing zeige.
Hello World in Assemblersprache (MASM für MS-DOS)
[Quelltext bearbeiten](Arbeitschritte: Zuerst wird das Listing mit MASM assembliert = erzeugt ein Objektfile(*.obj) welches wir im Anschluss mit dem 16Bit-Linker zu einer *.exe linken.
Danach Konvertieren wir diese *.exe mit "exe2bin.exe muster.exe muster.com" zu einer *.com-Datei.
Der hier verwendete Namen "muster" kann durch einen anderen Namen mit bis zu 8 Zeichen(gemäß dem 8-Punkt-3-Dateinamen-Format von DOS) ersetzt und ausgetauscht werden.)
.model tiny ; das Tiny memory model für COM-Programme auswählen
.code ; Beginn des Codebereiches deklarieren
mov dx, offset STRING ; Offsetadresse der Zeichenkette in ein Register laden
mov ah, 09h ; die Unterfunktion 9 des Betriebssysteminterrupts 21h auswählen
int 21h ; den Betriebssysteminterrupt 21h (hier erfolgt die Ausgabe der Zeichenkette) aufrufen
ret ; Programmbeendigung und Rücksprung zu DOS
.data ; Beginn des Datenbereiches deklarieren
STRING DB "Hello World$" ; Die Zeichenkette "Hello World mit dem $-Endzeichen"
end
Hello World in Assemblersprache (NASM für MS-DOS)
[Quelltext bearbeiten]ORG 100h ; Startoffset auf 100h setzen (Startpunkt für COM-Programme) mov dx, STRING ; Offsetadresse der Zeichenkette in ein Register laden
mov ah, 09h ; die Unterfunktion 9 des Betriebssysteminterrupts 21h auswählen
int 21h ; den Betriebssysteminterrupt 21h (hier erfolgt die Ausgabe der Zeichenkette) aufrufen
ret ; Programmbeendigung und Rücksprung zu DOS
STRING DB "Hello World$" ; Die Zeichenkette "Hello World mit dem $-Endzeichen"
Weitere Diskussion dazu
[Quelltext bearbeiten]Die Verbesserung:
Beide Assembler-Listings sind kürzer als die Originale im Artikel und zusätzlich sind auch beide Listings mit der gleichen Befehlsfolge ausgestattet und damit sollte sich auch eine identische COM-Datei erzeugen lassen, womit auch die assembler-spezifischen Unterscheidungsmerkmale der beiden Assembler deutlicher werden, im Gegensatz dazu als wenn unterschiedliche und voneinander abweichende Befehlsfolgen anzutreffen sind.
Mein Vorschlag ist es die beiden Original-Listings im Artikel durch diese beiden Listings zu ersetzen und auszutauschen, oder in beiden Artikel-Listings zumindest die selbe Befehlsfolge zu verwenden und entweder beide als COM-Datei, oder beide als EXE-Datei zu gestalten.
Dirk (nicht signierter Beitrag von 78.54.57.76 (Diskussion) 10:38, 14. Mär. 2013 (CET))
- Hallo Dirk, mit 'Verbesserungen' war gemeint, Inhalte i.S. des Wikipedia-Artikels zu verbessern, nicht den Programmcode - der soll ja nur beispielhaft gezeigt werden. Deshalb möchte ich (s.a. RobTorgel) HIER auch nur ein Beispiel belassen (vielleicht das mit dem detailliertesten Befehlslevel) und den Rest in die Liste übernehmen - die dem Zweck dient, Unterschiede aufzuzeigen. Ob man vorhandene Beispiele durch andere ersetzen soll, ist sekundär; die selbe Funktionalität und gute Kommentierungen wären dabei wichtig. Dabei kann man meinetwegen auch das Benennen von Segmenten zeigen, eigene "Frankenstein-Beispiele" führ(t)en nur zu Missverständnissen.
- Schau vielleicht auch mal in die Diskussion zum Listenartikel, ob du dort mit zur Lösung beitragen kannst (Unterschiede trotz gleicher Überschrift; Quellcode/Maschinencode ...
- Gruß von --VÖRBY (Diskussion) 12:44, 14. Mär. 2013 (CET)
Im Artikel sollte ein Beispiel-Programm sein, das idealerweise
- leicht verständlich ist;
- halbwegs modern ist;
- relativ kurz ist;
- keine Bibliotheken oder C-Funktionen verwendet;
- für halbwegs verbreitete Hardware + Assembler(Dialekt) geschrieben ist.
Es wurden vorgeschlagen
- "Hello World in TASM" .. nicht moderner als aktuelles; aber etwas kürzer, imo besser
- "Zeitgemäßes Hello World" .. 'call puts' ~ Bibliotheksfunktion? .. 'leave' ~ Makro?
- "Amiga auf 68k Prozessor" .. viel zu lang für ein "einfaches Beispiel"
- [Dirk] MASM DOS COM .. auch nicht moderner als aktuelles .. wohl unvollständig
- "Hello World in Assemblersprache (MASM für MS-DOS)" .. identisch mit Vorschlag 4
- "Hello World in Assemblersprache (NASM für MS-DOS)" .. nicht moderner als aktuelles .. aber etwas kürzer, imo besser
--arilou (Diskussion) 09:34, 1. Dez. 2016 (CET)
- Das Codebeispiel im Artikel soll und kann doch lediglich nur beispielhaft aufzeigen, wie die Ass-Syntax aussieht. Vor allem ist dabei (für die OMA) wichtig, dass jede Anweisung verständlich kommentiert ist. Welcher Dialekt da verwendet wird, ist egal. Beim Hello-World-Beispiel haben wir den Vorteil, dass andere Sprachversionen in der Liste nachgesehen werden können. Eine (1) ASS-Version davon sollte HIER im Artikel präsentiert werden, das genügt. Welche das ist, wäre egal - OMA-Tauglichkeit im vorgenannten Sinn vorausgesetzt. --VÖRBY (Diskussion) 10:42, 1. Dez. 2016 (CET)
- Natürlich liegt der Fokus auf der Verständlichkeit; dennoch würde ich es vorziehen, wenn es ein aktueller Assembler für eine verbreitete Plattform wäre. Etwas, das ein Leser, der heutzutage Assembler lernen möchte, mit ein wenig Glück wiedererkennt.
- --arilou (Diskussion) 12:06, 1. Dez. 2016 (CET)
- Gerne, nur sollte die neue Fassung auch so kurz und möglichst vollständig kommentiert sein, und auch im Listenlemma eingestellt werden. Machst Du? Danke. --VÖRBY (Diskussion) 16:35, 1. Dez. 2016 (CET)
"Assembler" = "Compiler" ?!?
[Quelltext bearbeiten]Ich habe gelernt, dass ein Assembler kein Compiler ist, da es ihm am "Com" fehlt. Den Compiler macht aus, dass ein Quellsprachenbefehl in mehrere Maschinencodes übersetzt wird/werden kann. Das kann ein Assembler nicht, und ist somit kein Compiler. Auch keine "spezielle Form".
Ein Motorrad ist auch kein "spezielles Auto". Auch wenn's was ähnliches sein mag.
--arilou (Diskussion) 11:02, 5. Feb. 2015 (CET)
- Steht doch so auch im Artikel (2. Absatz). Oder was meinst du?--Plankton314 (Diskussion) 11:48, 5. Feb. 2015 (CET)
- Zitat Artikel:
- Es wird durch einen speziellen Compiler, ebenfalls Assembler genannt, [...]
- Ein Assembler ist aber kein "spezieller Compiler".
- --arilou (Diskussion) 12:01, 5. Feb. 2015 (CET)
- Zitat Artikel:
- Ach, da eins weiter. Ja, der Satz ist schon komisch, vor allem das "ebenfalls".
- Ich habe den Abschnitt übersicht mal etwas überarbeitet bzw. gekürzt, insbesondere den vorherrschenden POV, Programme in Assembler wären heute noch allgemein effizienter/schneller/usw. als in einer Hochsprache geschriebene. Aber auch ein paar redundante Aussagen, die in den Abschnitten Vor-/Nachteile bereits aufgeführt sind.--Plankton314 (Diskussion) 12:42, 5. Feb. 2015 (CET)
- Das nenn' ich mal überschneidende Bearbeitung ;-)
- --arilou (Diskussion) 13:57, 5. Feb. 2015 (CET)
- Dann hast du in Compilerbau nicht aufgepaßt. Ein Compiler ist ein Stück Software, das Text (Quellcode) in eine ausführbare Form überführt - hierzu gerne mal das Referenzwerk "Compilerbau" von Niklas Wirth zu Rate ziehen. Leider ist die Aussage, das ein Assembler kein Compiler sei, auch in vielen Büchern zu finden - so wie auch viel Eisen im Spinat ist. Der Begriff des Compilers ist losgelöst von der Sprachdefinition. Es gibt eine weitere Definition, die selbst viele ITler nicht gebacken bekommen: Ein Programm, dass eine Text oder Objektrepräsentation in ein anzeigbares Bild verwandelt, nennt man Renderer und Renderer sind eben nicht nur Blender & Co, sondern ein Renderer ist auch Bestandteil eine Browsers. Ein Compiler beherrscht die lexikalische, syntaktische und semantische Analyse und dies ist unter Assembler genauso wichtig wie unter C oder Java. Der Unterschied istt lediglich der Codegenerator. Dieser ist bei einem Assembler deutlich vereinfacht - es verbleibt eigenttlich nur noch das Fixup. Thomas Merbold (Diskussion) 08:22, 1. Dez. 2016 (CET)
- Ich verbitte mir deinen Ton, anderen, z.B. mir, (in dieser Disku mehrfach!) die Kompetenz abzustreiten, vermeintlich "nicht aufgepasst" zu haben und ähnliches.
- Wenn die Mehrzahl reputabler Werke sagt "ein Assembler ist kein Compiler", dann ist das etabliertes Wissen. Das muss weder logisch noch sinnvoll sein.
- Da du ja reputable Quellen hast, die anderes aussagen, schreib' doch in den Artikel einen Zusatz "manchmal wird auch ein Assembler den Compilern zugerechnet"+REF, oder so ähnlich. Das sollte dann aber auch wirklich direkt so in der Quelle geschehen - die eigenen, persönlichen "logischen Folgerungen" eines WP-Autors zählen nicht.
- --arilou (Diskussion) 08:59, 1. Dez. 2016 (CET)
- Jetzt sei mir bitte nicht böse, aber dein Vorredner - über den Ton lässt sich streiten - hat leider nicht ganz unrecht. Ich zitiere an dieser Stelle den Artikel Compiler in der Wikipedia: "Ein Compiler [...] ist ein Computerprogramm, das Quellcodes einer bestimmten Programmiersprache in eine Form übersetzt, die von einem Computer (direkter) ausgeführt werden kann.". Präziser: Ein Compiler erzeugt aus einem Quellcode einen Objekcode und dies ist von der Sprache unabhängig. Ja, auch wenn es einigen nicht passt: Ein Assembler ist ein Compiler, denn er macht genaus das. Das sich die Assemblersprache in der Grammatik fundamental unterscheidet, ist ein ganz anderes Thema. Ein Ottomotor ist kein Benzinmotor - aber beides sind Verbrennungsmotoren. Verbrennungsmotor ist ein Oberbegriff genauso wie Compiler - Assembler ist eine Bauart davon. Die Abgrenzung in vielen repurtativen Werken hat die gleiche Ursache wie....nun ich musste über die "Eisen-im-Spinat"-Metapher schmunzeln. Jedes Buch, jedes Lehrwerk vetrat die Meinung, das Spinat besonders viel Eisen enthalten würde - bis mal jemand nachgemessen hat...und feststellte, dass sich alle Werke über Referenzen hinweg nur bei einer Messung trafen - und die war fehlerhaft. Wir lernen daraus: Ein Wahrheit wird nicht dadurch "wahrer", wenn sie von vielen Quellen behauptet wird - so seriös diese auch sein mögen. 2003:CB:A723:1601:F14B:CC22:3980:604 20:08, 20. Jun. 2019 (CEST)
- In meinem Compilerbau-Vorlesungsskript steht "ein Compiler setzt Programme zusammen", d.h. eine fundamentale Eigenschaft ist, dass eine Quellsprachen-Anweisung zu mehreren Zielsprachen-Anweisungen wird (oder werden kann). Genau das fehlt dem Assembler jedoch.
- Beim Eisen im Spinat handelt es sich um eine physikalisch messbare Größe. Bei der Einordnung, welche Kriterien für Compiler gelten sollen, ist es jedoch nicht damit getan, aus irgend welchen (Literatur-) oder (Wikipedia-)Werken einfach einen Satz rauszugreifen, und diesen als "einzige Wahrheit" zu verfechten.
- Wie ich bereits schrieb: Mit passabler Quellenangabe (und dazu zählen Wikipedia-Artikel nicht) kann durchaus in den Artikel aufgenommen werden, dass "manchmal der Assembler auch den Compilern zugerechnet wird", oder ähnliches.
- Gegenteilige Meinungen in WP-Artikeln sind zuzulassen, wenn sie (halbwegs passabel) belegt sind. Daran halte ich mich.
- --arilou (Diskussion) 09:24, 25. Jun. 2019 (CEST)
- PS: Ich empfehle, aus dem Artikel 'Compiler' nicht nur die Einleitung zu lesen, sondern zumindest auch noch den Abschnitt Compiler#Terminologie.
- Woraus leitest Du ab, dass "setzt Programme zusammen" wirklich und eindeutig "aus Anweisung mehrere Befehle erzeugen" bedeutet? Unter Zusammensetzen kann man eher verstehen, dass aus (mehreren) Bausteinen (hier Anweisungen) ein größeres Ganzes (das Programm) gebildet (zusammengesetzt) wird. Der erste Absatz von 'Terminologie' gilt zweifelsfrei auch für Assembler. Dabei wird als Synonym für Compiler auch 'Übersetzer' verwendet - was ein ASS ebenfallt ist bzw. tut. Lass einfach beide Varianten gelten - mit dem Hinweis, dass Assembler "zum Teil" (statt "im allgemeinen") nicht als Compiler gelten, denn sie sind eine Abart davon. Wenn für beide Varianten Belege (und vlt Begründungen) dazu vorhanden wären, wäre "die Welt wieder in Ordnung".--VÖRBY (Diskussion) 11:01, 25. Jun. 2019 (CEST)
- a) Belege - klaro, immer gut.
- b) Motorräder sind keine Abart der Autos, auch wenn sie ähnliche Funktionalität bieten.
Ob Assembler eine Abart von Compiler ist oder nicht ~ ihm fehlen einfach wesentliche Bestandteile. ABER: Das ist (sowohl 'pro' als auch 'contra Abart') POV.
Wie du bereits vorschlägst - wir sollten belegte Standpunkte im Artikel darstellen, wenn das Thema strittig ist. - --arilou (Diskussion) 14:51, 25. Jun. 2019 (CEST)
- hmm... Ist gibt doch einmal "Assember" als Sprache. Also Befehle wie "lda", "jmp", ....
- Und dann gibt es "Assember" als "Übersetzer". Also ein Programm, welches die Sprache ("lda", ...) in Maschinencode ("0010...") übersetzt.
- Soweit ich es verstehe, gibt es aber mindestes zwei verschiedene Arten von "Assembler" (Übersetzer).
- EInmal "Assembler", die wie ein "Compiler" den ganzen Text lesen und in Maschinensprache übersetzen. Wenn sie während des "compilens/assemblens" einen Fehler entdecken, dann wird der Vorgang abgebrochen und das Prgramm weder ganz übersetzt noch ausgeführt. Das ist z.B. https://www.onlinegdb.com/online_gcc_assembler (Das Übersetzen nennen die übrigens "Compiling")
- 2. Dann gibt es "Assembler" wie auf dem Commodore C16. Wenn ich dort einen Assemblerbefehl ("lda", ...) eingebe, dann übersetzt der Assembler diesen Befehl sofort in Maschinensprach und speichert nur die Madchinensprache ab (Der Befehl "lda" wird NICHT gespeichert, sondern nur der dazugehörige Maschinencode!), aber der Befehl wird nicht ausgeführt! Das Ausführen muss man extra anstoßen.
- Gibt es verschiendene Namen für 1. und 2. ? Das wird meines wissens nach beides einfach Assembler genannt, obwohl es ganz unterschiedlich vorgeht und die Programme ganz unterschiedlich gespeichert werden. Der erste Assembler speichert ja Text, während der zweite Assembler Maschienensprache speichert.
- 3. Theoretisch (vielleicht hat das sogar schon einer geeschrieben?) kann es noch einen 3. Assember geben. Einen "Interpreter". Sprich die Befehle ("lda", ... werden gelesen und wie bei 2. Interpretiert, aber dann sofort wie bei einem "normalen Interpreter" sofort ausgeführt.
- Wie würde man das dann nennen? "Assembler Interpreter"?
- Das erste ist dann ein "Assembler Compiler"?
- Und das zweite ist ein "'richtiger' Assembler"?
- Oder wie nennt man diese drei Arten des Assembelns? --2A02:908:2214:E5C0:E520:63C5:F436:9DC4 11:51, 28. Mai 2023 (CEST)
Bild mit einem Assembler-Programmformular
[Quelltext bearbeiten]Bild hat kein bezug zum fließtext; eher ein Beispiel für Artikel Lochkarte
(Die vorstehenden Anmerkungen wurde am 23.6.2015, 09:21 [MEZ] abgesendet[1] und nachträglich [zusammen mit dem Bild, rechts] – am 7.1.2017, 07:27 [MEZ] – aus der Seite nebenan hierher geschoben.[2])
- Warum soll dieses Bild keinen Bezug zum Lemma 'ASS-Sprache' haben? Es zeigt die Struktur einer Ablochvorlage eines Ass-Programms. Ich schlage vor, es beim Lemma zu belassen.--VÖRBY (Diskussion) 13:43, 7. Jan. 2017 (CET)
- Es stellt eine Möglichkeit dar, Assembler-Programme einzugeben ~ mitunter ein "Speichermedium", nämlich eine Lochkarte.
- Als "Kuriosum" kann es von mir aus in den Artikel, aber dann sollte der Fließtext auch darauf eingehen.
- --arilou (Diskussion) 09:16, 9. Jan. 2017 (CET)
- Das Schema zeigt die Struktur für ASS-Code, unabhängig vom Medium, über das der Code anschließend erfasst wurde. Ja, kurios aus heutiger Sicht ist es schon, dass Programmierer ihre Anweisungen in ein solches Formular schrieben - anstatt sie selbst zu erfassen, wie es dann später selbstverständlich wurde. Über die Nummerierung konnte man nachträglich Zeilen eintragen, die nach der Erfassung durch Sortierung in die richtige Reihenfolge kamen. Als File-Text schlage ich vor: "Schema für Assembler-Anweisungen - die in der 'Lochkartenzeit' zum Teil über derartige Formulare niedergeschrieben und anschließend erfasst wurden." --VÖRBY (Diskussion) 11:08, 9. Jan. 2017 (CET)
In dieser Form ziemlich nutzlos. Gibt es das auch ausgefüllt? --Siehe-auch-Löscher (Diskussion) 11:10, 9. Jan. 2017 (CET)
- Assemblercode kann auch ganz anders strukturiert sein, z.B. wie C-/Java-Code mit ';' als Befehlsende, und dann mehrere Befehle in einer Zeile.
- Auch andere Programmiersprachen können eine Zeilen-orientierte Syntax besitzen, das ist keine Assembler-Spezialität.
- Gibt es einen Hinweis auf die Verbreitung? (Solche Karten waren sicherlich deutlich vor meiner Zeit...) War das (weit/halbwegs) verbreitet? Oder nur an einer Handvoll Unis/Unternehmen?
- --arilou (Diskussion) 11:51, 9. Jan. 2017 (CET)
Meines Wissens war das (= die Spalteneinteilung, für Lochkarten) in den 60er bis 80er Jahren das Format für Assembler, z.B. für IBM 140x, IBM 360/370 Betriebssysteme und (siehe DDR) wohl auch für andere Systeme. Damit seinerzeit wohl sehr verbreitet, wenn nicht das einzige Format. Wohl immer Großrechnerbereich, es gab ja nichts anderes. Klar, man könnte vielleicht Beispiele (Hello World?) hier eintragen. --VÖRBY (Diskussion) 13:39, 9. Jan. 2017 (CET)
- Allerdings: Wenn man die Menge der verschiedenen ASS-Versionen, z.B. in Liste_von_Hallo-Welt-Programmen/Assembler zur Kenntnis nimmt, stellt man fest, dass die Veröffentlichung ausgerechnet dieses Formatmusters im Lemma Assemblersprache eher irreführend ist. Damit widerspreche ich meiner ursprünglich in <13:43, 7. Jan. 2017> geäußerten Meinung. Nach 'Lochkarte' gehört das Formular aber auch nicht.
- Evtl. könnte es neben dem Eintrag zu IBM-Mainframe aufgenommen werden; der Mehrwert scheint aber angesichts der dort bereits sichtbaren Spaltenstruktur eher gering. Fazit: Herauslassen, Disk erledigt. --VÖRBY (Diskussion) 17:01, 9. Jan. 2017 (CET)
Fragwürdige Änderungen
[Quelltext bearbeiten]In den Letzten Tagen wurden massiv Änderungen eingebracht, die mir nicht korrekt erscheinen, vor allem sind sie deutlich weniger verständlich als die bisherige Version. Beispiel, nur aus dem ersten Satz: Unter Assembler oder Assemblersprache (von englisch to assemble, deutsch ‚montieren‘) versteht man Programmiersprachen ohne Abstraktion der Prozessorarchitektur.
- Bereits der erste Ausdruck 'Assembler' ist in dieser Form falsch, denn der 'Assembler' ist der Übersetzer, nicht die Sprache. Die zuletzt stabile Fassung erläuterte dazu kurz auch „Assembler“ - das ist eine andere Aussage als "Assembler" hier sogar an erster Stelle zu nennen. Der Autor bringt seine 'Meinung' auch in [3] in dieser Form ein, m.E. unbewiesene TF.
- Wer soll verstehen was "Programmiersprachen ohne Abstraktion der Prozessorarchitektur" sind?
Weiterhin 'stößt mir auf':
- Die zahlreichen Entfernungen zu "hardwarenah" (im Vergleich zu Hochsprachen) sollten, wenn das überhaupt zutrifft, eher relativiert werden, denn i.W. ist das so.
- Auch die 'fehlende Standardisierung' im zweiten Satz scheint mir kein für die Assemblersprache ausschließlich gültiges (und sie somit definierendes) Kriterium.
- Auf Belege verweisen die Erweiterungen überhaupt nicht.
- Die Aufgaben eines Assemblers gehören nicht in dieses Lemma, sondern nach Assembler (Informatik).
So könnte man unzählige weitere Beispiele aufzählen, wo einfach "frei Schnauze" umformuliert wurde; nur an manchen Stellen wurden nützliche Präzisierungen eingearbeitet. Die Einleitung jedenfalls ist unpräzise und unenzyklopädisch, vor allem für viele Nutzer in dieser Form unverständlich. Ich wäre zunächst für Totalrevert. Oder stehe ich mit dieser Sicht auf die Aktion alleine? --VÖRBY (Diskussion) 10:33, 6. Mai 2018 (CEST)
Die Lemmabezeichnungen sind zugegebenermaßen verbesserungswürdig: Ja, 'Assembler' wird auch die Sprache genannt, so wie bei C++, PL/I oder Cobol - ohne den Zusatz '-sprache'; vgl die Namensregeln bei diesen Lemmas. Besser wäre es insofern, den Artikel hier in 'Assembler (Programmiersprache)' umzubenennen und 'Assembler' zu 'Assembler (Programmierwerkzeug)' (oder ähnlich) zu machen. Aus 'Assembler (Begriffsklärung)' könnte dann einfach die BKS 'Assembler' werden - oder die BKS bleibt unverändert, dann aber eine WLS 'Assembler' mit WL auf 'Assembler (Begriffsklärung)' anlegen. In den beiden Themenlemmas sollte man der Klarheit willen lediglich auf den jeweils anderen Artikel verweisen, ansonsten aber die Sprach- und Werkzeugaspekte im jeweiligen Artikel behandeln. --VÖRBY (Diskussion) 17:33, 6. Mai 2018 (CEST)
- Eine "kleine" Änderung wäre, 'Assemblersprache' auf 'Assembler (Sprache)' umzubenennen - sind nur 3 Zeichen Änderung X-) ...
- --arilou (Diskussion) 13:47, 7. Mai 2018 (CEST)
- Noch pragmatischer: In 'Assembler' einen 'Dieser Artkikel'-Baustein mit Verweis auf 'Assemblersprache'. Die sonstigen o.a. Anmerkungen bleiben aber relevant.--VÖRBY (Diskussion) 10:27, 12. Mai 2018 (CEST)
Habe zunächst mal den 'Dieser Artikel'-Baustein in Assembler (Informatik) gesetzt und auf Assemblersprache verwiesen, außerdem 'Aufgaben eines Assembler' nach Assembler (Informatik) verschoben. Rest offen. --VÖRBY (Diskussion) 10:23, 13. Mai 2018 (CEST)
Nach wie vor kein Feedback: Demnach habe ich die Einleitung angepasst, indem ich ursprüngliche Texte und Teile aus der Überarbeitung übernommen habe. Sollte jetzt klarer sein als z.B. "ohne Abstraktion der Prozessorarchitektur". Auch Redundanzen oder für die Einleitung Unwesentliches entfernt, siehe [4]. --VÖRBY (Diskussion) 14:20, 14. Mai 2018 (CEST)
Mnemonic
[Quelltext bearbeiten]en:Mnemonic [5] verweist per Interwiki auf de:Merkspruch. de:Mnemonic ist eine Begriffsklärung, z. B. ein für den Menschen lesbares Kürzel für einen Befehl einer Assemblersprache und einen Buchstaben zur schnellen Auswahl eines Eintrags aus einem Menü (Computer). Unter siehe auch steht: Mnemotechnik (auch: Mnemonik): Gedächtniskunst. Der Artikel Mnemotechnik leider keine direkte Erklärung zu einer Verwendung eines mnemonische Symbols oder Mnemonics in der Assemblersprache. [6] --87.162.166.84 22:00, 18. Okt. 2018 (CEST)
- Auf de:Mnemonic verweisen einige Seiten (siehe [7]), alle im Sinne des ersten Begriffs "ein für den Menschen lesbares Kürzel für einen Befehl einer Assemblersprache". Ein Zeichen dafür, dass der dazu passende Artikel fehlt, aber auch ein Zeichen dafür, dass der Link auf die BKL valide ist. Immerhin hat sie einen Satz zu dem Begriff und grenzt ihn ab zu anderen Lemmas. Es spricht mMn nichts dagegen auf eine BKL zu verlinken bis der passende Artikel vorhanden ist. --Sebastian.Dietrich ✉ 09:48, 19. Okt. 2018 (CEST)
- Unter Wikipedia:Begriffsklärung#Nicht_existierende_Artikel gibts dazu auch eine Beschreibung, wie man damit umgehen soll... --Sebastian.Dietrich ✉ 09:51, 19. Okt. 2018 (CEST)
- Die Antwort auf die Frage, ob die Befehlskürzel einer ASS-Sprache 'Resultate' aus der Anwendung der Mnemotechnik sind, hängt wohl davon ab, ob das Abkürzen von Wörtern (move = MOV) oder das Verwenden von Anfangsbuchstaben (compare logical charakter = CLC) als Variante jener "Gedächtniskunst" gelten. Klar ist aber, dass solche Befehle häufig 'Mnemonic(s)' genannt werden (siehe dazu ein Referenzbeispiel im Artikeltext). Ausdrücke, für die nicht vorausgesetzt werden kann, dass sie allgemein-bekannt sind, sollten in der WP deshalb mit einem Link unterstürzt werden. Ich denke, das trifft hier auf jeden Fall zu.
- Da Mnemonik als Synonym für Mnemotechnik gilt (und deshalb auch eine WLS auf Mnemotechnik ist), eignet sich dieser Link wohl nicht - womit die Lösch-Reverts i.e.S. wohl berechtigt waren. Ich würde jedoch, wie auch @Sebastian.Dietrich vorschlug, auf die BKS Mnemonic verlinken. Da diese Seite unter 'siehe auch' auf Mnemotechnik hinweist, dürfte damit die Wortherkunft zur Genüge erklärt sein. In Mnemotechnik könnte man evtl. (falls o.g. Annahme zutrifft; Sprachwissenschaftler vor!) der Vollständigkeit halber ergänzen, dass die ERGEBNISSE dieser Technik in manchen Anwendungsgebieten 'Mnemonic' genannt werden.--VÖRBY (Diskussion) 13:22, 27. Okt. 2018 (CEST)
Beispiel Hallo Welt DATA
[Quelltext bearbeiten]Es ist sehr lange her, dass ich in Assembler programmiert habe. Dennoch kommt mir das Beispielprogramm an einer Stelle komisch vor:
Das Beispielprogramm hat als erste Zeile
ASSUME CS:CODE, DS:DATA
der ausführbare Code beginnt mit
mov ax, DATA mov ds, ax
? Ist die ASSUME -Anweisung nicht gerade dafür da, dass das Register ds nicht von Hand auf 'DATA' gesetzt werden muss? Oder umgekehrt: Wenn der Code ds sowieso von Hand setzt, wozu dann der ASSUME ?
--arilou (Diskussion) 09:15, 8. Dez. 2021 (CET)
Assembler in Computerspielen?
[Quelltext bearbeiten]Folgendes steht im Artikel:
Noch heute gehören Computerspiele zu den Programmen, bei denen am ehesten kleinere assemblersprachliche Programmteile zum Einsatz kommen, um so Prozessorerweiterungen wie SSE zu nutzen.
Wirklich? Ich kenne ASM in modernen Programmen meist aus Audio/Video-Encodern. Computerspiele kenne ich hauptsächlich als in C++ geschrieben, ohne Inline-ASM. --2A02:8071:62F1:19A0:3037:C696:6E38:9548 05:55, 11. Mär. 2024 (CET)