<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Turbo_Assembler</id>
	<title>Turbo Assembler - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Turbo_Assembler"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Turbo_Assembler&amp;action=history"/>
	<updated>2026-06-02T14:30:29Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Turbo_Assembler&amp;diff=763686&amp;oldid=prev</id>
		<title>~2025-37157-85: /* Beispiel */  Formulierung</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Turbo_Assembler&amp;diff=763686&amp;oldid=prev"/>
		<updated>2025-11-29T18:09:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiel: &lt;/span&gt;  Formulierung&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name                 = &amp;lt;!-- Nur falls abweichend vom Artikelnamen --&amp;gt;&lt;br /&gt;
| Logo                 =&lt;br /&gt;
| Screenshot           = &amp;lt;!-- Bildschirmfoto --&amp;gt;&lt;br /&gt;
| Beschreibung         = &amp;lt;!-- Beschreibung des Bildschirmfotos --&amp;gt;&lt;br /&gt;
| Maintainer           =&lt;br /&gt;
| Hersteller           = [[Borland]]&lt;br /&gt;
| Erscheinungsjahr     = 1989&lt;br /&gt;
| AktuelleVersion      = 5.0&lt;br /&gt;
| AktuelleVersionFreigabeDatum =&lt;br /&gt;
| AktuelleVorabVersion =&lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum =&lt;br /&gt;
| Betriebssystem       = [[DOS]], [[Microsoft Windows]]&lt;br /&gt;
| Programmiersprache   =&lt;br /&gt;
| Kategorie            = [[Assembler (Informatik)|Assembler]]&lt;br /&gt;
| Lizenz               = [[Proprietäre Software|proprietär]]&lt;br /&gt;
| Deutsch              =&lt;br /&gt;
| Website              = {{Webarchiv|url=http://info.borland.com/borlandcpp/cppcomp/tasmfact.html | wayback=20101023185143 | text=Produktseite von Turbo Assembler}}&lt;br /&gt;
| Sonstiges            =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;&amp;#039;Turbo Assembler&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;TASM&amp;#039;&amp;#039;&amp;#039;) ist ein [[Assembler (Informatik)|Assembler]] für [[x86-Prozessor]]en auf dem Betriebssystem [[MS-DOS]]. Er wurde 1989 von [[Borland]] als Bestandteil von [[Turbo C]] 2.0 vorgestellt, war aber auch als separates Paket zusammen mit dem &amp;#039;&amp;#039;&amp;#039;Turbo Linker&amp;#039;&amp;#039;&amp;#039; erhältlich. Zur Unterstützung des [[Programmierer]]s war zuerst als separates Produkt und später im Paket mit dem TASM der [[Turbo Debugger]] von Borland erhältlich. Die letzte veröffentlichte Version 5 unterstützte auch [[Microsoft Windows 95|Windows 95]] und [[Microsoft Windows NT|NT]] und Prozessoren bis zum [[Pentium]].&lt;br /&gt;
&lt;br /&gt;
Der [[Microsoft Macro Assembler]] war zum Erscheinungszeitpunkt des Turbo Assemblers der vorherrschende Assembler für MS-DOS.&amp;lt;ref&amp;gt;DOS International 06/1989 S. 50 - MASM 5.1 oder TASM 1.0 Die Qual der Wahl&amp;lt;/ref&amp;gt; Der TASM und der MASM deckten danach zusammen den Bedarf für Assembler für IBM-PCs und IBM-PC-ähnliche Systeme fast alleine ab.&amp;lt;ref&amp;gt;V. Rajaraman, S. Rajasekaran, T. Radhakrishnan: &amp;#039;&amp;#039;Essentials of Assembly Language Programming for the IBM PC&amp;#039;&amp;#039;. 2004, S. 5&amp;lt;/ref&amp;gt; Dennoch gab es noch den [[A86 (Software)|A86]] von Eric Isaacson und Chasm von David Whitman.&amp;lt;ref&amp;gt;DOS International 06/1989 S. 56 - Assembler aus dem Shareware-Fundus A86 und Chasm&amp;lt;/ref&amp;gt; Der TASM verspricht Unzulänglichkeiten des MASM zu beheben, eine bessere [[Leistung (Informatik)|Leistung]], und verwirklicht darüber hinaus auch eine flexiblere und erweiterte Funktionalität z.&amp;amp;nbsp;B. in der Verwendung von Prozeduren, Symbolen, und einem mächtigeren Befehlsvorrat. Um Assemblerprogramme für den MASM möglichst unverändert übersetzen zu können, verfügt der TASM über verschiedene Modi, die einen unterschiedlichen Grad der Kompatibilität zum MASM einstellen. Er stellt im Package neben den assemblerüblichen Kernbestandteilen (Assembler und Linker) auch diverse Hilfs- und Zusatzprogramme bereit.&lt;br /&gt;
&lt;br /&gt;
Heute wird der TASM mangels Nachfrage nicht mehr weiterentwickelt.&amp;lt;ref&amp;gt;Trutz Eyke Podschun: &amp;#039;&amp;#039;Das Assemblerbuch – Grundlagen, Einführung und Hochsprachenoptimierung&amp;#039;&amp;#039;. Addison-Wesley, 2002, ISBN 3-8273-1929-3, S. 557&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Bestandteile des Verkaufspakets ==&lt;br /&gt;
&lt;br /&gt;
Der &amp;#039;&amp;#039;Turbo-Assembler&amp;#039;&amp;#039; war von Borland anfänglich nicht als eigenständiges Produkt konzipiert. Er war eher zur internen und externen Unterstützung/Bewerbung für die [[Inline-Programmierung]] ihrer damals erfolgreichen Produkte wie &amp;#039;&amp;#039;Turbo C&amp;#039;&amp;#039; oder &amp;#039;&amp;#039;[[Turbo Pascal]]&amp;#039;&amp;#039; angedacht.&lt;br /&gt;
&lt;br /&gt;
Der TASM wurde nicht als eine Programmdatei, sondern in vielen unabhängigen, aber aufeinander abgestimmten Modulen ausgeliefert. Ein eigener [[Texteditor]] ist wie bei allen Assemblern überflüssig und nicht vorhanden. Er enthält damit folgende Komponenten:&lt;br /&gt;
&lt;br /&gt;
Im Kernbereich das unverzichtbare Paar aus Assemblierer &amp;#039;&amp;#039;(TASM.EXE)&amp;#039;&amp;#039; und [[Linker (Computerprogramm)|Linker]] &amp;#039;&amp;#039;(TLINK.EXE)&amp;#039;&amp;#039;. Daneben fünf weitere Hilfsprogramme:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;[[Make|MAKE]]&amp;#039;&amp;#039;: Eine Programmverwaltung zum automatisierten Assemblieren und Linken von Programmen.&lt;br /&gt;
* &amp;#039;&amp;#039;TLIB&amp;#039;&amp;#039;: Ein Programm zur einfacheren Verwaltung und Zusammenführung von einzelnen [[Objektdatei]]en &amp;#039;&amp;#039;(.OBJ)&amp;#039;&amp;#039; zu Bibliotheken.&lt;br /&gt;
* &amp;#039;&amp;#039;[[Grep|GREP]]&amp;#039;&amp;#039;: Ein [[Unix]]/[[Linux]]-identisches Programm zur Suche nach Textstrings in Dateien.&lt;br /&gt;
* &amp;#039;&amp;#039;OBJXREF&amp;#039;&amp;#039;: Ein Tool zur Erzeugung von Cross-Referenzen für Objektdateien.&lt;br /&gt;
* &amp;#039;&amp;#039;TCREF&amp;#039;&amp;#039;: Selbiges für Quelldateien.&lt;br /&gt;
&lt;br /&gt;
== Delphi ==&lt;br /&gt;
Aktuelle Versionen von Delphi enthalten die neueste TASM Version 5.4 von 2010 weiterhin als Kommandozeilenversion. TLink.exe scheint jedoch nicht beizuliegen, da Ziel der erzeugten Objektdateien ist, sie in Delphi bzw. C++ Builder Projekte einzubinden und nicht zu selbständigen Programmen zu linken.&lt;br /&gt;
&lt;br /&gt;
== Modi ==&lt;br /&gt;
Die verschiedenen Modi des TASM sind der Anpassung an und der Verbesserung des MASM geschuldet. Sie garantieren dem Programmierer ein Arbeiten in gewohnten Strukturen und eine nahezu vollkommene Kompatibilität/Assemblierung von MASM-Quellcode. Zwischen den verschiedenen Modi kann innerhalb des Programms beliebig oft gewechselt werden.&lt;br /&gt;
&lt;br /&gt;
== MASM-Modus ==&lt;br /&gt;
&lt;br /&gt;
In diesem Modus verhält sich TASM sehr ähnlich zum MASM, ohne jedoch offensichtliche Fehler des MASM zu emulieren. Dies ist die Standardeinstellung. Dabei sind im Modus MASM (die Bezeichnung ist hier etwas irreführend) die meisten Möglichkeiten von MASM 5.1 schon verwirklicht.&lt;br /&gt;
&lt;br /&gt;
=== MASM 5.1 ===&lt;br /&gt;
&lt;br /&gt;
Die Anweisung MASM 5.1 ermöglicht die im Detail etwas anderen Möglichkeiten der Version 5.1 des MASM fast vollständig. Folgende Fähigkeiten sind nur mit der expliziten Anweisung MASM 5.1 verfügbar:&lt;br /&gt;
* Die Anweisungen &amp;#039;&amp;#039;SUBSTR&amp;#039;&amp;#039;, &amp;#039;&amp;#039;CATSTR&amp;#039;&amp;#039;, &amp;#039;&amp;#039;SIZESTR&amp;#039;&amp;#039; und &amp;#039;&amp;#039;INSTR&amp;#039;&amp;#039;.&lt;br /&gt;
* Die Möglichkeit der Zeilenfortsetzung mit einem [[Backslash]].&lt;br /&gt;
* Eine alternative Syntax für die Anweisung LOCAL.&lt;br /&gt;
&lt;br /&gt;
Allerdings sind folgende Möglichkeiten nur bei gleichzeitiger Aktivierung von MASM 5.1 und QUIRKS-Modus verfügbar.&lt;br /&gt;
&lt;br /&gt;
* Lokale mit @@ definierte Labels auf die mit @F und @B zugegriffen werden kann.&lt;br /&gt;
* Die Redefinition von Variablen in PROC-Blöcken (dies betrifft auch Unterschiede in der Zusammenarbeit mit der Sprache C in Bezug auf PROC-Bezeichnungen).&lt;br /&gt;
&lt;br /&gt;
== Quirks-Modus ==&lt;br /&gt;
&lt;br /&gt;
In diesem Modus wird der MASM vollständig auch mit dessen bekanntem Fehlverhalten nachgebildet. Einige Eigenschaften des MASM können unter Umständen so problematisch sein, dass sie selbst im MASM und MASM 5.1-Modus nicht implementiert wurden. Um aber Programmierern bei Bedarf die Weiterverwendung dieser Eigenarten zu gestatten und eine vollständige Kompatibilität herzustellen, wurde der Quirks-Modus geschaffen. Dieser Modus kann entweder in der [[Quelltext|Quelldatei]] durch die Anweisung QUIRKS, oder bei der Assemblierung mit der [[Kommandozeile]]noption /QUIRKS aktiviert werden.&lt;br /&gt;
&lt;br /&gt;
== Ideal-Modus ==&lt;br /&gt;
&lt;br /&gt;
Dieser Modus enthält TASM-spezifische Erweiterungen und Änderungen zur MASM-Syntax, mit dem Ziel, den Assembler-Code übersichtlicher und konsistenter gestalten zu können. Borland verspricht mit dem IDEAL-Modus, „die Ecken und Kanten der MASM-Programmierung etwas zu glätten“, sowie „eine bis zu 30 % schnellere Übersetzung (Assemblierung)“.&amp;lt;ref&amp;gt;&amp;#039;&amp;#039;Borland Turbo Assembler – Benutzerhandbuch&amp;#039;&amp;#039;, Band 1, in der deutschen Übersetzung von Alois Stocklauser. 2. Auflage. Heimsoeth software, München 1988, S. 579&amp;lt;/ref&amp;gt; Die Möglichkeiten sind Erweiterungen oder Veränderungen von bereits unter dem MASM existierenden Möglichkeiten. Es erfolgt eine strengere Überprüfung von [[Datentyp]]en, was eine Erkennung von Fehlern ermöglicht, welche ohne diesen Modus erst zur [[Laufzeit (Informatik)|Laufzeit]] festgestellt würden. Des Weiteren implementiert der Modus eine konsistentere und verständlichere Bezeichnung von Operatoren und Schlüsselworten. Des Weiteren werden einige wenige neue Prinzipien und Befehle eingeführt. Der TASM verwendet dabei eine neue [[Syntax]], welche von der des MASM allerdings nicht radikal abweicht. Die Unterschiede sind im Einzelnen:&lt;br /&gt;
&lt;br /&gt;
=== Regeln für Token ===&lt;br /&gt;
{{Siehe auch|Token (Compilerbau)}}&lt;br /&gt;
Der Punkt (.) darf nicht innerhalb einer Symbolbezeichnung verwendet werden, sondern nur als Operator für Strukturelemente oder in [[Gleitkommazahl]]en. Deshalb fangen MASM-Symbole, welche mit einem Punkt beginnen, im TASM entweder mit dem [[Prozentzeichen]] (%) oder ohne Sonderzeichen am Anfang an, oder sind umbenannt. Also beispielsweise:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;%CREF&amp;#039;&amp;#039; anstatt &amp;#039;&amp;#039;.CREF&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;CONST&amp;#039;&amp;#039; anstatt &amp;#039;&amp;#039;.CONST&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;.ERRIF2&amp;#039;&amp;#039; anstatt &amp;#039;&amp;#039;.ERR2&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Im IDEAL-Modus ist die Verwendung eines [[Dezimalpunkt]]es immer zwingend vorgeschrieben. Eine Gleitkommazahl mit dem Wert &amp;#039;&amp;#039;1.0e7&amp;#039;&amp;#039; wäre beispielsweise so darzustellen: &amp;#039;&amp;#039;FKZ DT 1.0e7.&amp;#039;&amp;#039; Die im MASM und MASM-Modus mögliche vereinfachte Darstellung der Form&amp;#039;&amp;#039; FKZ DT 1e7&amp;#039;&amp;#039; ist nicht erlaubt. Diese Strenge verhindert eine mögliche Fehlinterpretation des MASM, welcher nach manchen Befehlen diesen Wert als [[Hexadezimalzahl]] &amp;#039;&amp;#039;01E7&amp;#039;&amp;#039; übersetzen könnte.&lt;br /&gt;
&lt;br /&gt;
=== Global versus Lokal ===&lt;br /&gt;
&lt;br /&gt;
Strukturelemente werden im IDEAL-Modus nicht global definiert und existieren nur innerhalb der jeweiligen Struktur. Dies ermöglicht im Gegensatz zum MASM-Modus die Verwendung zweier gleichbenannter Elemente innerhalb und außerhalb einer Struktur bzw. in zwei verschiedenen Strukturen. So wäre folgender Codeausschnitt mit der Verwendung des Elementes Artikel in zwei Strukturen, sogar trotz des zusätzlich unterschiedlichen Datentyps (&amp;#039;&amp;#039;DW – DB&amp;#039;&amp;#039;), erlaubt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;STRUC WikipediaEins&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Artikel DW?&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;ENDS&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;STRUC WikipediaZwei&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Artikel DB?&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;ENDS&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
&lt;br /&gt;
Ein Turbo-Assembler-Programm, das „Frohe Weihnachten!“ ausgibt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
.model small&lt;br /&gt;
.stack	100h&lt;br /&gt;
.data&lt;br /&gt;
msg	db &amp;quot;Merry christmas!&amp;quot;,&amp;#039;$&amp;#039; ; Definition des Labels msg, &lt;br /&gt;
                              ; gefolgt von dem String &amp;quot;Merry christmas!&amp;quot; &lt;br /&gt;
                              ; mit dem Stringendezeichen &amp;#039;$&amp;#039;. &lt;br /&gt;
.code&lt;br /&gt;
main	proc&lt;br /&gt;
    mov ax, SEG msg      ; Übergabe der Anfangsadresse zu den Daten an das AX Register&lt;br /&gt;
	mov	ds, ax           ; Übergabe der im AX Register zuvor abgelegten&lt;br /&gt;
                         ; Adresse an das Datensegment DS.&lt;br /&gt;
	mov	dx, offset msg   ; Das DX Register zeigt nun auf den Anfang &lt;br /&gt;
                         ; des via Label msg zugänglichen Strings.&lt;br /&gt;
	mov	ah, 9            ; DOS INT 21h service 09h &amp;quot;Display string&amp;quot; &lt;br /&gt;
	int	21h              ; Aufruf der Interruptroutine 21h zur Stringausgabe&lt;br /&gt;
	mov	ax, 4c00h        ; DOS INT 21h service 4ch &amp;quot;Terminate with return code&amp;quot;&lt;br /&gt;
                         ; mit 00h als Returncode&lt;br /&gt;
	int	21h              ; Aufruf der Interruptroutine 21h zum Beenden des Programms&lt;br /&gt;
main	endp&lt;br /&gt;
end	main&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* [[Jörg Schieb]], Michael Tischer: &amp;#039;&amp;#039;Das große Turbo Assembler Buch&amp;#039;&amp;#039;. Data Becker, 1990, 2. leicht veränderte Auflage, ISBN 3-89011-282-X&lt;br /&gt;
* Peter Monadjemi: &amp;#039;&amp;#039;Turbo Assembler – Das Buch für den Einstieg&amp;#039;&amp;#039;. Addison-Wesley, 1992, ISBN 3-89319-225-5&lt;br /&gt;
* Ernst-Wolfgang Dieterich: &amp;#039;&amp;#039;Turbo Assembler&amp;#039;&amp;#039;. R. Oldenbourg Verlag, 1993&lt;br /&gt;
* Tom Swan: &amp;#039;&amp;#039;Mastering Turbo Assembler&amp;#039;&amp;#039;. Sams Publishing, 1995, ISBN 0-672-30526-7&lt;br /&gt;
* Joachim Rohde, Marcus Roming: &amp;#039;&amp;#039;Assembler – Grundlagen der Programmierung&amp;#039;&amp;#039;. mitp Verlag, 2006, 2. Auflage, ISBN 3-8266-1469-0&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten |TYP=s |GND=4238613-5 |VIAF=185545613}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Assembler]]&lt;br /&gt;
[[Kategorie:DOS-Software]]&lt;br /&gt;
[[Kategorie:Historische Software]]&lt;/div&gt;</summary>
		<author><name>~2025-37157-85</name></author>
	</entry>
</feed>