caute neviete preco mi to nevypise spravny vystup ? pocet operatorov ma byt 2x vacsi ako poct malych pismen
dopredu dik
Kód:
.MODEL small
.STACK 100h
.DATA
oz DB "Zadaj retazec:",10,13,"$"
retazec DB "Zadaj retazec : $"
male_znaky DB 0
operatory DB 0
vyhovujuce_slova DB 0
text DB 10,13,"Pocet slov : $"
.CODE
start:
mov ax, @data
mov ds, ax
mov dx,OFFSET oz
int 21h
lea dx, retazec ; nacitanie retazca
mov ah, 0Ah
int 21h
lea bx, retazec
xor cx, cx
mov cl, [bx+1]
mov si, bx
add si, 2
main_loop:
cmp WORD PTR [si], 20h ; medzera = nove slovo
je kontrola
cmp WORD PTR [si], 61h ; kontrola, ci sa jedna o male pismeno
jl operator
cmp WORD PTR [si], 7Ah
jg operator
inc male_znaky
jmp dalsi_znak
operator:
cmp WORD PTR [si], 2Ah ; kontrola, ci sa jedna o operator
jl dalsi_znak
cmp WORD PTR [si], 2Fh
jg dalsi_znak
inc operatory
jmp dalsi_znak
kontrola: ; vyhovuje podmienka (operatory = 2 * male_znaky) ?
call skontroluj
dalsi_znak:
inc si
loop main_loop
call skontroluj
koniec:
mov ah,09h
mov dx,offset text
int 21h
mov ah,vyhovujuce_slova
mov ax, 4C00h
int 21h
skontroluj PROC
mov al, male_znaky
mov ah, 2
mul ah
cmp al, operatory
jne zmaz
inc vyhovujuce_slova
zmaz:
mov male_znaky, 0
mov operatory, 0
ret 0
skontroluj ENDP
END start