daten segment der 2. assembler datei verwenden stat das der ersten
-
Wie schaft man es, das man in einer 2ten Assemblerdatei, die ein eigendes Datensegmend hat, kurzzeitig das Daten Segmend von diesem zu verwenden.
Realmod-assembler mit masm
Bsp:
main.asm:
extrn upprint:far daten segment blabla db „Lalala etc“, „$“ daten ends staple segment dw 128 dup(?) staple ends code segment assume ds:daten, cs:code, ss:staple begin: mov ax, daten mov ds, ax call upprint mov ah, 4ch int 21h staple ends end begin
hw.asm:
public upprint daten segment text db „Hallo Welt“, „$“ daten ends code segment assume ds:daten, cs:code upprint proc far ;leider erscheint kein Text auf dem Bildschirm. ; meine Idee wäre gewesen, ; ein push ds einzufügen, und mit mov ax, daten und mov ds, ax den ds dazu zu bringen ; auf dieses segment zu zeigen. Kann das überhaupt funktionieren, wenn man push ds macht ; weil mov ds, daten geht ja auch nicht. push dx push ax lea dx, text mov ah, 9 int 21h pop ax pop dx ret upprint endp code ends end
-
BigGreenFoot schrieb:
staple ends end begin
das stimmt was nicht.
Außerdem:
man kann, segment public für die Zuordung zu einem Segment benutzen.
Und wenn man sich nicht dauernd mit Assemblerdirektiven herumärgern möchte, dann kann man die Segmentzuordnung auch selber machen, dabei ist zu berücksichtigen, dass im Realmode die Segmentaddressen per
Segment * 16 + Offset gebildet werden.
Für Module braucht man die Segmentezuordung nicht neu machen. Guck am besten immer genau nach, was im Debugger/Disassembler in dieser Richtung vor sich geht und probier ein bißchen herum und protokolliere die Fehler.
-
sofern deine Version es unterstützt, benutze EXTERNDEF.