.MODEL small .STACK .DATA init_ds macro ;Makro duomenu segmentui inicializuoti mov ax,data mov ds,ax endm out_str macro str ;Makro eilutes isvedimui push ax mov ah,09h mov dx,offset str int 21h pop ax endm get_chr macro ;Makro simbolio ivedimui is klaviaturos mov ah,1h int 21h endm data segment para public 'data' ;duomenu segmento apraso pradzia msg1 db 'Iveskite eilute: $' msg2 db 10,13,'Pakeista eilute atrodo: $' input db 200 dup('$') data ends stk segment stack db 256 dup ('?') stk ends code segment para public 'code' assume cs:code, ds:data, ss:stk main proc init_ds out_str msg1 mov bx,offset input ;patalpiname i BX input eilutes pradzios adresa inp: get_chr ;skaitome simbolius cmp al,13 ;sulyginame ar ivestas simbolis nera lygus ENTER je finish ;jeigu equal pereiname prie finish cmp al,41h ;lyginame ivesta simboli su 'A' kodu jb min ;jeigu reiksme mazesne tai pereiname prie next cmp al,5ah ;lyginame ivesta simboli su 'Z' kodu ja min ;jeigu reiskme didesne pereiname prie next add al,20h ;jeigu reiskme yra tarp a-z tai atimdami 20h gausime Didziaja raide jmp next min: cmp al,61h jb next cmp al,61h ja next sub al,20h next: mov [bx],al ;patalpiname simboli is al i atminti adresu patalpintu registre bx inc bx ;padidiname registro bx reiskme vienetu jmp inp ;pereiname prie inp finish: out_str msg2 out_str input get_chr mov ax,4c00h int 21h main endp code ends end main