Frage zu MASM inkey
-
Hi, ich habe gerade mit MASM angefangen und habe direkt eine Frage zu
inkey
Mein Programm sieht im Moment so aus:INCLUDE \masm32\include\masm32rt.inc .386 .MODEL flat,stdcall OPTION casemap :none .CODE start: call main main PROC inkey ret main ENDP END start
Wenn ich
inkey
weglasse, schließt sich die Konsole sofort. Wenn ich inkey jedoch reinschreibe, bekomm ich zwei mal die Meldung, dass ich die eine Taste drücken soll. Wieso ist das so?
-
es verhält sich genauso wie du es programmiert hast ... wenn vielleicht auch nicht absichtlich
-
Und wieso verhält es sich so?
-
_D schrieb:
Und wieso verhält es sich so?
gehe Es doch mal in einem Debugger durch
-
Ein Assembler macht sich nichts aus impliziten Grenzen von Strukturen wie Prozeduren oder Datendeklarationen.
Dh. der Assembler uebersetzt deine Quellcodes idR. wort-woertlich und baut auch keine DAU-Sicherungen ein. Die CPU selbst rennt dann solange gleichgueltig ueber alles drueber, sei es gueltiger Code, Daten oder einfach uninitialisierter RAM, bis sie durch Ausnahmefehler o.Ae. gestoppt wird.
Aus diesem Grund ist das Anlegen von Variablen mitten zwischen Code in Hochsprachen vielleicht usus, in Assembler meist aber eine bloede Idee...Wenn du deinen Code im Debugger betrachtest, wirst du sehen, dass direkt nach "call main" der Code von main selbst steht - und der wird nach der Rueckkehr aus main dann eben nochmal ausgefuehrt. Das ret beendet dann dein Programm...