taaak...myslim ze uz som skoro pri konci...mam toto
------------------------------------
.MODEL small
.STACK 100h
.DATA
retazec DB 255, 0, 253 dup (24h)
male_znaky DB 0
operatory DB 0
vyhovujuce_slova DB 0
text DB 10,13,"Pocet slov : $"
.CODE
ByteToString PROC
push bp
mov bp, sp
push cx
mov ax, WORD PTR [bp+4] ; v prvom parametri je číslo, teda vyhovujuce_slova
mov bx, WORD PTR [bp+6] ; v druhom parametri je reťazec, do ktorého vypišeš
prevedené číslo
xor cx, cx
cmp ax, 99
jng desiatky
mov ax, -1 ; v prípade veľkého čísla vráť -1
jmp pr_koniec
desiatky:
mov cl, 10
div cl
cmp al, 0
je jednotky
add al, 30h
mov BYTE PTR [bx], al
inc bx
sub al, 30h
mov cl, 10
mul cl
mov cx, WORD PTR [bp+4]
sub cx, ax
mov WORD PTR [bp+4], cx
jednotky:
mov ax, WORD PTR [bp+4]
add al, 30h
mov BYTE PTR [bx], al
mov BYTE PTR [bx+1], 24h
pr_koniec:
pop cx
pop bp
ret 4
ByteToString ENDP
start:
mov ax, @data
mov ds, ax
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 [bx+si], 20h ; medzera = nove slovo
je kontrola
cmp WORD PTR [bx+si], 61h ; kontrola, ci sa jedna o male pismeno
jl operator
cmp WORD PTR [bx+si], 7Ah
jg operator
inc male_znaky
jmp dalsi_znak
operator:
cmp WORD PTR [bx+si], 2Ah ; kontrola, ci sa jedna o operator
jl dalsi_znak
cmp WORD PTR [bx+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
call ByteToString
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
ale program nevypise ten pocet slov nevite preco??vyzera to takto
[url=http://i41.tinypic.com/27ywsqo.png]http://i41.tinypic.com/27ywsqo.png[/url]