;funkce vracejici pocet velkych pismen v retezci, nejedna se o retezec ukonceny znakem \0 ;prototyp funkce v C: int numOfHi(char *inputString, int strLen); global numOfHi numOfHi: push ebp ;puvodni ebp:4, cs:2, ip:2, *inputString:4, strLen:4 mov ebp,esp ;volani porovnavani - provede se tolikrat kolik je hodnota promene strLen push ecx push edi push ebx push edx xor edx,edx xor ebx,ebx mov edi,[ebp+8] ;inputString mov ecx, dword[ebp+12] ;strLen cmp_loop: ;zavolani samotneho porovnani mov al, byte[edi+ebx] ;dalsi znak sub esp,1 mov [ss:esp], al ;sup do zasobniku call isHi add esp,1 ;vraceni zasobniku do puvodniho stavu ;jestlize je pismeno velke je navratova hodnota funkce isHi nenulova cmp eax,0 je numOfHi_neni_velke inc edx ;pocitadlo velkych pismen numOfHi_neni_velke: inc ebx ;index loop cmp_loop mov eax,edx ;navratova hodnota pop edx pop ebx pop edi pop ecx pop ebp ret isHi: ;porovnani jestli je velky push ebp mov ebp,esp ;puvodni ebp:4, cs:2, ip:2, znak:1 mov al,byte[ebp+8] ;znak cmp al,'A' jb isHi_neni_velke cmp al,'Z' ja isHi_neni_velke mov eax,1 ;je velke jmp isHi_end isHi_neni_velke: xor eax,eax isHi_end: pop ebp ret