.model small .stack 100h .data NAPIS1 db 'Wprowadzone parametry to:$' NAPIS2 db 10,13,'Ilosc parametrow:$' NAPIS3 db 10,13,'Ilosc znakow w parametrach:$' licznik1 db 0 licznik2 db -1 li dw 0 li1 dw 0 .code start: mov ax,@data mov ds,ax mov ax,0600h mov bh,07h mov cx,0000h mov dx,184fh int 10h mov dx,offset NAPIS1 mov ah,09h int 21h xor si,si etykieta: mov dl,[es:81h+si] mov ah,2 int 21h inc si cmp dl,0dh jnz etykieta xor si,si licz: mov dl,[es:81h+si] cmp dl,0dh je koniec cmp dl,20h je spacja inc licznik1 inc si jmp licz spacja: inc si inc licznik2 jmp licz koniec: inc licznik2 ;========================== mov al,licznik2 mov bl, 10 ; ustawiamy dzielnik na 10 dzielenie: mov ah, 00h ; zerujemy rejestr ah div bl ; dzielimy kod znaku przez 10 push ax ; wrzucamy wynik na stos add li, 1 ; zwiekszamy licznik cmp al, 0 ; sprawdzamy, czy reszta jest rowna zero (= koniec dzielenia) jg dzielenie ; jesli nie, dzielimy dalej kon: mov dx,offset NAPIS2 mov ah,09h int 21h mov cx, li ; ustawiamy licznik petli rowny zmiennej licz wypisz: pop dx ; zdejmujemy wartosc ze stosu mov ah, 02h ; wywolujemy funkcje wyswietlajaca znak add dh, '0' ; dodajemy '0' (48) mov dl, dh int 21h loop wypisz ;=========================== mov al,licznik1 mov bl, 10 ; ustawiamy dzielnik na 10 dzielenie1: mov ah, 00h ; zerujemy rejestr ah div bl ; dzielimy kod znaku przez 10 push ax ; wrzucamy wynik na stos add li1, 1 ; zwiekszamy licznik cmp al, 0 ; sprawdzamy, czy reszta jest rowna zero (= koniec dzielenia) jg dzielenie1 ; jesli nie, dzielimy dalej kon1: mov dx,offset NAPIS3 mov ah,09h int 21h mov cx, li1 ; ustawiamy licznik petli rowny zmiennej licz wypisz1: pop dx ; zdejmujemy wartosc ze stosu mov ah, 02h ; wywolujemy funkcje wyswietlajaca znak add dh, '0' ; dodajemy '0' (48) mov dl, dh int 21h loop wypisz1 ;=========================== mov ah,4CH int 21H end start end