Procedure.l Inp8(Adresse.w)
MOV dx, Adresse
IN al, dx
AND eax, $FF
ProcedureReturn
EndProcedure
Procedure Out8(Adresse.w, Daten.b)
MOV dx, Adresse
MOV al, Daten
OUT dx, al
EndProcedure
For z.w = 0 To $FF
Out8($378, z)
Debug Hex(Inp8($378))
Next z
End
Unter Win2k sollte dieser Code ja eine Expression auslösen, tut er aber nicht sondern er funzt prächtig! ? Kann sich das einer erklären oder bringe ich hier was durcheinander?
Durch den NT-Kernel sollten eigentlich 'unsichere' Asm Befehle nicht mehr zugelassen sein und einen Crash des Programms verursachen (WinXP).
Hab aber keine Ahnung ab welcher Version.
Ist mir auch grad n Rätsel...
Eine Expression wird vom Prozessor ausgelöst wenn z.B ein privilegierter Befehl von einem normalem Programm ausgeführt werden soll. Das dürfen im Falle von "In" und "Out" nur Treiber und das Betriebssystem selber. Zumindestens bei Windows NT 2K XP. In diesem Fall könnte man sagen es ist eine Fehlermeldung und das Programm wird beendet. Normalerweise, aber was ist schon normal
topsoft hat geschrieben:
Eine Expression wird vom Prozessor ausgelöst wenn z.B ein privilegierter Befehl von einem normalem Programm ausgeführt werden soll. Das dürfen im Falle von "In" und "Out" nur Treiber und das Betriebssystem selber. Zumindestens bei Windows NT 2K XP. In diesem Fall könnte man sagen es ist eine Fehlermeldung und das Programm wird beendet. Normalerweise, aber was ist schon normal
Du meinst jetzt aber nicht eine Exception, oder? Denn Expression habe ich in dem Zusammenhang noch nie gehört. Für mich ist ein "Expression" ein (mathematischer) Ausdruck oder Äußerung bei der Programmierung, also sowas wie i + 5 * x
Beginne jeden Tag als ob es Absicht wäre! BILDblog