![]() |
Inline ASM - Rückgabe
Hallöchen!
Ich habe ein ASM InlineCode:
Delphi-Quellcode:
Als Rückgabewerte bekomme ich: CH, CL, DH.. [Stunden, Minuten, Sekunden]
asm
mov AH, 2Ch int 21h end; Wie kann ich nun CH bzw die anderen in einer Variable speichern? Also ich habe eine function:
Delphi-Quellcode:
geht leider nicht...
function gettime: String;
var stunden, minuten, sekunden: integer; begin asm mov AH, 2Ch int 21h mov s, CH end; Result:= IntTOStr(s) Operandengröße stimmt nicht überein.. Kann mir jemand erklären und zeigen, wie man mit den Rückgabewerten umgeht? thx |
AW: Inline ASM - Rückgabe
Wo kommt bitte "s" her?
Zitat:
Integer = 4 Byte (z.B. EAX) Byte = 1 Byte (z.B. AL)
Delphi-Quellcode:
(ich persönlich schreib das "byte ptr" und "&" mit dazu und arbeite auch gern einheitlich mit der Delphi-Syntax für die Hex-Werte ... muß man aber nicht unbedingt)
var
stunden, minuten, sekunden: Byte; begin asm mov AH, $2C int $21 mov byte ptr &stunden, CH mov byte ptr &minuten, CL mov byte ptr &sekunden, DH end; Es gab aber auch noch irgendeinen Befehl (welcher mir grad nicht einfällt), um Byte nach LongWord/LongInt zu expandieren, aber ich glaub der ging nur innerhalb eines Registers. PS: Warum unbedingt via Interrupt? (wobei dieser vom Windows nicht unbedingt erlaubt sein muß) |
AW: Inline ASM - Rückgabe
Joa danke..
Ich habe erst gestern mit assembler beschäftigt, aber kann noch fast garnichts... Aber du hast Recht, das ist logisch... Habe gerade ein dt. ebook gefunden, damit werde ich asm lernen :P thx nochmal :-D Edit: habe falsch kopiert ^^ ich meine natürlich stunden statt s :D Ich habe diesen Code von dieser Seite ![]() Ich bin gerade sehr interessiert an assembler, deswegen probiere ich manche Sachen so aus ^^ Edit2: Ich bekomme auch bei dem Interrupt ne Zugriffsverletzung :D |
AW: Inline ASM - Rückgabe
Zitat:
ist dir klar, dass INT21 ein Software-Aufruf für MSDOS ist? Wahrscheinlich ist das Beispiel für Turbopascal für DOS. Gruss Reinhard |
AW: Inline ASM - Rückgabe
INT21 ist ein Hardware Interupt. Direkte Hardwarezugriffe sind unter Windows nur über Treiber möglich.
|
AW: Inline ASM - Rückgabe
Zitat:
Der Interrupt 3 ist auch im Usermode ganz nett oder böse, jenachdem wie und wo man den verwendet/antrifft. |
AW: Inline ASM - Rückgabe
Danke für die Aufklärungen!
Ich habe das, was ihr mir sagen wolltet, eigentlich schon verstanden... So weit so gut.. Wie kann man denn unter Windows das Datum via Assembler erhalten? Ich arbeite gerade an ein Assembler-Inline-Beispiel (wenn es fertig ist, kommt es in meine CodeLib), welches ich später nochmal angucken kann.. Naja, ich muss gerade Urzeit und Datum via Assembler rausfinden... Hat jemand eine Ahnung, wie man das realisieren könnte? Ps.: Ich weiß, dass Delphi schon von Haus aus die Funktionen: Date & Time hat Aber ich möchte ich das jetzt über ASM machen.. :thumb: |
AW: Inline ASM - Rückgabe
Das einzige was Du über ASM machen könntest wäre GetLocalTime aufzurufen. Die Systemzeit wird durch die Windows API zurückgegeben.
|
AW: Inline ASM - Rückgabe
Ja danke :-D
Habs geschafft |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz