Hallo,
wenn ich in C wissen will, was in EAX steht, wie kann ich das machen? Und kann ich das in ne Variable kopieren?
wenn ich in C wissen will, was in EAX steht, wie kann ich das machen? Und kann ich das in ne Variable kopieren?
09. November 2026, 18:25
void main(void)
{
int variable;
_asm{mov variable, eax};
printf ("%d,variable");
}Oh, iich hab mich falsch ausgedrückt....
Ich hab gemeint, ob ich den Wet, der in EAX steht in eine Variable schreiben kann, die von meinem C Programm gelesen werden kann. Oder würde dieser Code gehen:Code: [Auswählen]
void main(void)
{
int variable;
_asm{mov variable, eax};
printf ("%d,variable");
}
int main(void)
{
int variable;
_asm{mov variable, eax};
printf ("%d,variable");
}

Warum willst du denn den Wert von EAX in eine Variable speichern?
Vielleicht sagst du mal was du "als ganzes" vor hast. Dann kann man dir dazu vielleicht auch ne Lösung sagen.
unsigned long GetMemSize();
unsigned long GetMemSize()
{
_asm
{
_GetMemSize:
push ebp
mov ebp, esp
push eax
push edx
mov eax, 0 ;EAX ist Zähler für die MBs
mov edx, 0x1EFFFC ;EDX auf 3 Bytes vor die 2 MB Grenze setzen
.1:
inc eax
mov DWORD [edx], 0xAAAAAAAA ;0xAAAAAAAA an die Speicherstelle schreiben
mov ebx, [edx] ;Speicherstelle wieder lesen
add edx, 0x100000 ;Adresse um 1 MB erhöhen
cmp ebx, 0xAAAAAAAA ;Stimmt gelesener Wert mit dem geschriebenen überein?
je .1
pop edx
pop eax
mov esp, ebp
pop ebp
ret
}
}
oder wie?
unsigned char inb(unsigned int _port)
{
unsigned char result;
asm volatile ("inb %%dx, %%al" : "=a" (result) : "d" (_port) );
return result;
};
void outb(unsigned int _port, unsigned char _value)
{
asm volatile ("outb %%al, %%dx" : : "d" (_port), "a" (_value));
};