.model small .stack 100h ;isskiriamas 256 bit stekas .data msg1 db 'Iveskite eilute: $' msg2 db 'Ilgiausio zodzio ilgis: $' msg3 db 'Nebuvo ivesta duomenu! $' eilute db 255, 255 dup (0) nauja db 13,10,'$' .code start: mov ax, @data mov ds, ax mov ah, 09h ;iraso i 8 bit reg reiksme 09h lea dx, msg1 ;perkelia msg1 bit-string`a i reg dx int 21h ;dos f-ja, kadangi reg ah reiksme yra 9, tai isves reg. dx reiksme mov ah, 0Ah ;i reg ah perkelia reiksme 0Ah lea dx, eilute ;perkelia eilute reiksme i reg dx mov si, dx ;dx reg. reiksme perkelia i reg. si int 21h ;kadangi reg ah saugo reiksme 0Ah tai nuskaitys komandine eilute mov ah, 09h ; lea dx, nauja ;perkelia nauja reiksme i reg dx int 21h inc si ;padidina si reg reiskme vienetu mov cl, [si] inc si cmp cl, 0 ;tikrinama ar eilute nera tuscia, ar skaitliuko CL reiksme nelygi 0 je Neivesta sub dx, dx ;apnulinam dx, jis bus zodzio ilgis sub bx, bx ;ilgiausio zodzio ilgis ciklas: dec cx mov ah, ' ' cmp [si], ah ;jei zodzio pabaiga. ar ne tarpas je ilgis ; inc dx cmp cx, 0h ;jei paskutinis eilutes simbolis je ilgis ; inc si ;kitas eilutes simbolis jmp ciklas ;tesiam cikla ilgis: cmp bx, dx jb keisti sub dx, dx ;dx = 0, zodzio ilgis inc si ;kitas eilutes simbolis cmp cx, 0h ;jei eilute nesibaige ja ciklas ;sokam i cikla je print ;jei eilute baiges, spausdinam keisti: mov bx, dx sub dx, dx ;dx = 0, zodzio ilgis inc si ;kitas eilutes simbolis cmp cx, 0h ;jei eilute nesibaige ja ciklas ;sokam i cikla je print ;jei eilute baiges, spausdinam Neivesta: lea dx, msg3 ;uzkraunamas pran3 adresas i DX registra mov ah, 09h ;kreipiamasi su 09h funkcija spausdinimui int 21h ;pertraukimas mov ax, 4c00h ;isejimas int 21h print: mov ah, 09h ;msg2 isvedimas ekrane lea dx, msg2 int 21h ;mov dx, bx ;add dl, 30h ;va cia kazka nuveikt reikia... ;) !@#!@#!@#$@#%#$@#$!#!@#!@#@!#!@#!@# ;mov ah, 02h ;int 21h MOV AX, BX MOV DX, 0 MOV AH, 0 MOV BL, 100 DIV BL CMP AL, 0 JE Praleisti PUSH AX ADD AL, 30h MOV AH, 0Eh INT 10h MOV DX, 1 POP AX ;--------------------------------------- Praleisti: MOV AL, AH MOV AH, 0 MOV BL, 10 DIV BL CMP AL, 0 JNE Spausdinti CMP DX, 1 JNE Praleisti2 ;--------------------------------------- Spausdinti: PUSH AX ADD AL, 30h MOV AH, 0Eh INT 10h POP AX ;--------------------------------------- Praleisti2: MOV AL, AH ADD AL, 30h MOV AH, 0Eh INT 10h ;--------------------------------- mov ah, 09h ;nauja eilute lea dx, nauja int 21h mov ax, 4c00h ;isejimas int 21h end start