..
volatile unsigned long esps;
volatile char* szFmt = "%i ";
volatile char* szNl = "\n";
printf("Von Jirka Klaue\n");
_asm{
jmp progstart; // zum programmanfang (asm)
/* Neue linie anfangen */
newline:
mov esps, esp; // sp sichern
mov edx, szNl; // 1. Parameter für printf
push edx;
call printf; // printf aufrufen
mov esp, esps; // sp widerherstellen
ret; // zurück
/* Programmstartpunkt */
progstart:
/* Raufzählen */
mov ecx, 10; // für loop (10x)
mov eax, 0; // zählregister
uploop:
inc eax; // zähler inkrementieren
push ecx; // zähler und loopregister sichern
push eax;
mov esps, esp; // sp sichern
push eax; // 2. Parameter für printf
push szFmt; // 1. Parameter für printf
call printf; // Ausgabe
mov esp, esps; // sp widerherstellen
pop eax; // zähler und loopregister widerherstellen
pop ecx;
loop uploop; // ecx dekrementieren und wenn nicht 0, dann nochmals
call newline; // Neue Zeile beginnen
/* Runterzählen */
mov ecx, 10; // für loop (10x)
downloop:
push ecx; // zähler sichern
mov esps, esp; // sp sichern
push ecx; // 2.Parameter für printf
push szFmt; // 1. Parameter für printf
call printf; // Ausgabe
mov esp, esps; // sp widerherstellen
pop ecx; // zähler widerherstellen
loop downloop; // ecx dekrementieren und wenn nicht 0, dann nochmals
call newline; // Neue Zeile beginnen
}
}
.. |