All pastes #247535 Raw Edit

asm uzd2

public text v1 · immutable
#247535 ·published 2006-11-13 16:53 UTC
rendered paste body
.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     AH, 0
        MOV     BL, 10
        DIV     BL

        CMP     AL, 0
        JE      Praleisti

;-----------------------------

Spausdinti:

        PUSH    AX
        ADD     AL, 30h
        MOV     AH, 0Eh
        INT     10h
        POP     AX

;-----------------------------

Praleisti:

        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