Forum: PC-Programmierung MASM32-Testprogramm


von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich versuche unter Win-XP bzw. Vista ein winziges Assemberprog.
mit MASM32 zum Laufen zu bringen. Dieses verabschiedet sich aber beim 
int 21h.
Die Trace-Infos kommen noch raus, dann ist aber Schluß:
Kann mir jmd. sagen, was ich da falsch mache ?
------------------------------------------
DL = 41 (EXAMP1 - Kopie (2).asm, 22)
---- Test string --- (EXAMP1 - Kopie (2).asm, 23)
----------------------------------------

Programmcode
.386
.model flat, stdcall
.STACK 100h
 option casemap :none   ; case sensitive
 include \masm32\include\windows.inc
 include \masm32\include\kernel32.inc
 include \masm32\include\masm32.inc
 include \masm32\include\debug.inc
 includelib \masm32\lib\kernel32.lib
 includelib \masm32\lib\masm32.lib
 includelib \masm32\lib\debug.lib

;DBGWIN_DEBUG_ON = 1 ;turn it off if you don't want to include debug 
info into the program
;DBGWIN_EXT_INFO = 1 ;turn it off if you don't want to include extra 
debug info into the program

.stack
.data
.code
org 100h
BEGIN:
   mov DL,'A'
   PrintHex DL
   PrintText "---- Test string ---"
   PrintLine
   int 21h
end BEGIN

von Yagan Ζ. D. (yagan)


Lesenswert?

Joe,

dem int 21h müsste noch mitgeteilt werden, was er tun soll.
In deinem Fall wahrscheinlich das Programm beenden, also z.B.

MOV AX,4C00h ; beendet Programm mit Endecode 0.
INT 21h

Ciao, Yagan

von Bartli (Gast)


Lesenswert?

Kann es sein dass du versuchst, DOS-Code als Win32 programm zu 
assemblieren?

von Joe (Gast)


Lesenswert?

ja, stimmt, heisst das, dass man Ass Programme nur unter Dr.DOS
o.ä. ausführen kann ?

von dr HW (Gast)


Lesenswert?

naja - windows xp und vista untersagen den direkten hardwarezugriff ;) 
von daher würde ich sagen, das du so ohne weiteres keine dos progs ohne 
anpassung übersetzten kannst!

von Bartli (Gast)


Lesenswert?

>ja, stimmt, heisst das, dass man Ass Programme nur unter Dr.DOS
>o.ä. ausführen kann ?

Nein, das nicht, aber du scheinst ein Win32 Programm zu erzeugen, und 
diese können z.B. int 21h nicht aufrufen. Du musst wirklich ein 
DOS-Programm erzeugen, das darf dann gewisse Dinge schon tun (z.B. File 
I/O über die DOS-Funktionen). Wie das mit MASM geht weiss ich jetzt auch 
nicht mehr so genau.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.