ASM wypisywanie tekstu

0

mam taki kod

 #include <stdio.h>
#include <string.h>
int main()
{
	char s[] = "aqq b qabxas ryc  pqr";   //char *s = "Abcdefg";
    char t[100];
	asm volatile(
	".intel_syntax noprefix;"
	"mov ebx,%0;"
	"mov ecx, %1;"



	"petla:"
	"mov al, [ebx];"
	"sub al, 0;"
	"jz koniec;"

/// sprawdzamy czy jest p albo q albo r ///
	"cmp al,0x70;"
	"JL nie_dodaj_cx;"
    "cmp al,0x72;"
    "JG nie_dodaj_cx;"  /// koniec warunkuw je¿eli jest [pqr] to zwiêksza cx;

    "mov edx,ebx;"                    /// sprawdzamy czy nast. znak po p albo q albo r jest różny od q albo r...
    "inc ebx;"
    "mov al, [ebx];"
    "cmp al,0x72;"
    "je przenies_do_petla;"
    "cmp al,0x71;"
    "je przenies_do_petla;"


         "petla2:"          /// petla ktora sprawdza czy dalej nie ma gdzies q,  jeżeli jest r to podnosi wartosc cx - znaleziono dopasowanie.
         "inc ebx;"
         "mov al, [ebx];"
         "sub al, 0;"
         "jz przenies_do_petla;"

         "cmp al,0x71;"
         "je przenies_do_petla;"
         "cmp al,0x72;"
         "jne petla2;"


            "jmp wypisz;"       /// po napotkaniu pierwszego zgodnego wyrażenia przenosi do wypisywania


         "jmp petla2;"

         "przenies_do_petla:"
         "mov ebx,edx;"

    "nie_dodaj_cx:"    /// je¿eli nie jest to omija zwiêkszanie i przechodzi dalej czyli zwiêkszenia ebx - iteratora pêtli
	"inc ebx;"
    "jmp petla;"



"wypisz:"

"call przepiszznak;"   
"inc edx;"
"inc ecx;"
"cmp edx, ebx;"    /// sprawdzamy czy edx jest mniejsze niż ebx - ilosc znakow do wypisania
"jle wypisz;"


		"jmp koniec;"

		"przepiszznak:"   


	                  
		"push ax;" 
		"mov al, [edx];"
        "mov [ecx], al;"
		"pop ax;"
		"ret;"
		




	"koniec:"



	".att_syntax prefix;"
	:
	: "r" (s),"r" (t)
	: "ebx", "ecx", "al", "eax", "dx", "ah"

	);

    printf("wejscie=%s \n\nwyrazenie regularne: \[pqr\]\[^qr\]+r \n=%s \n", s,t);

	return 0;
}

Potrzebuje na jutro zrobić wypisywanie z assemblera, a nie przez C. Próbowałem ale nie wychodziło mi. Program pisałem sam więc na pewno rejestry są źle użyte.
Proszę Was o pomoc.

0

Ale wypisywanie czego? o_O Bo póki co wstawiłeś kupę spaghetti code bez koniecznych informacji:

  • co to w ogóle ma robić?
  • co ci nie działa?
    • jakiego efektu oczekujesz?
    • jaki efekt uzyskujesz w zamian?

1 użytkowników online, w tym zalogowanych: 0, gości: 1