Benützung von tasm, tlink und td

 

tasm:

-----

  

  - ist ein Assembler, der aus der ihm übergebenen Quelldatei  eine sogenannte Objektdatei mit der Erweiterung .obj erzeugt.

  (Datei.asm -> Datei.obj)

 

  Wenn ohne Parameter aufgerufen, zeigt die richtige Syntax.

 

Beispiel:

...>tasm Beispiel[.asm]

 

Wichtigere Option: /zi

  (weist TASM an, komplette Debug-Informationen in die Objekt-Datei zu  schreiben)

 

 

tlink:

------

   Ist ein Linker der eine Objekt-Datei in eine ausführbare Datei transformiert.

Es kann auch mehrere Objekt-Dateien in ein ausführbares Programm zusammenbinden.

   Datei1.obj + Datei2.obj +... -> Datei.exe (oder Datei.com)

 

   Wenn ohne Parameter aufgerufen, zeigt die richtige Syntax.

 

Beispiel:

...>tlink Beispiel[.obj]

 

Wichtigere Optionen: /v, /t

 

 

Das ausführbare (exe oder com) Programm kann sofort gestartet werden.

 

td

--

   Ist ein Debugger - der als zusätzliches Hilfsmittel wirkt, damit man die logischen Fehler leichter finden kann. Ist ein Fehlersuchprogramm das uns erlaubt das (exe oder com) Programm schrittweise auszuführen.

 

 

Beispiel:

...>td Beispiel[.exe]

 

 

   mit TD ist die Suche nach Fehler auf zwei verschiedene Weisen möglich:

  

1. Fehlersuche auf der Stufe der Machinensprache

   Das ist für jedes ausführbaren (exe oder com) Programm möglich

  

 

2. Fehlersuche auf der Stufe der Quellcode

   Das ist für die ausführbare Programmen möglich, die auch Debug-Informationen enthalten und für welche der Quellcode auch zur

   Verfügung steht.

 

 

Für Fehlersuche auf der Stufe der Machinensprache verwenden wir:

...> tasm Beispiel

...> tlink Beispiel

...> td Beispiel

 

Für Fehlersuche auf der Stufe des Quellcodes verwenden wir:

...> tasm /zi Beispiel

...> tlink /v Beispiel

...> td Beispiel

 

Die Ausführung des Programmes können wir mit Turbo Debugger im CPU-Fenster verfolgen (es kann vom Menü View|CPU geöffnet werden). 

Hier sehen wir den Inhalt der Register und der Flags bzw. das Programm zum ausführen. Das ist in Assembler Sprache und auch direkterweise im Maschinencode (d.h. Oktett für Oktett der Inhalt des Speichers) zu sehen.

Den Inhalt des Datensegmentes (in Hexa) und des Stacksegmentes kann man auch sehen.

Wir können den sichtbaren Teil der Code- Stack- oder Datenzone mit dem Befehl 'Go to' vom lokalen Menü (es kann mit Alt-F10

aktiviert werden) positionieren.

Wir können sogar den Wert einer Variable mit dem Dialog-Fenster Evaluate/Modify (es kann mit Ctrl-F4 geöffnet werden) anschauen oder ändern.

 

 

Ein minimales Beispiel für einen Assembler-Programm:

 

; wir sagen dem Assembler was für Segmenten wir benützen werden

 

ASSUME cs: code, ds:data

 

; data - das Datensegment wo wir die Variablen definieren werden

 

data SEGMENT

a db 7              ; a ist ein Oktett(Byte)

b dw 10           ; b ist ein Wort (Wort - 2 Bytes)

c db 3,5,6,1     ; c ist eine Folge von Bytes

data ENDS

;code - Name des Codesegmentes

code SEGMENT

start:

mov ax,data     ; die Segmentadresse des Datensegmentes möchten wir ins

                        ; Register DS laden, und weil das direkterweise nicht

mov ds,ax         ; möglich ist, verwenden wir behelfsmäßig das Register Ax

                         

; .......

; hier sind die Befehle unseres Programms

;........

 

mov ax,4C00h  ;wir schreiben die Funktion 4C (Programm Beenden) nach AH

                        ;und die Rückgabe (Exit code) 00 nach AL

int 21h              ;Interrupt 21 ist gerufen (deren 4C Funktion wird ausgeführt)

 

code ENDS

END start

 

 

Für mehrere Informationen über die Befehle und Direktiven kann man im Norton Guide nachschauen.