void run(char* address){
__asm
pop HL
jp (HL)
__endasm;
}Kompiluje się prawidłowo, ale nie działa. Ktoś może mi wytłumaczyć dlaczego? Ja to rozumiem w następujący sposób:
-argument przy wywołaniu funkcji jest wrzucany na stos
-instrukcja "pop HL" ściąga argument ze stosu do rejestru HL
-"jp (HL)" skacze bezwarunkowo pod adres przechowywany w rejestrze HL.
program zachowuje się tak, jakby nic się nie wykonało.
#programowanie #naukaprogramowania #retrocomputing
@6502 Właściwie, jakby tak pomyśleć, to zdjęcie ze stosu jest rzeczywiście zbędne, skoro w jp wołasz HL bezpośrednio. Nie wiem jak miałoby to psuć kompilację, ale widocznie psuło.
Gratulacje, że Ci działa!