;konverzia male-velke ;z nacitaneho retazca zmeni male pismena na velke a vypise iba velke pismena ;vsimnime si sposob nacitania retazca ( DOS funkcia OAH pre INT 21H) zas segment stack 'stack' dw 64 dup(?) zas ends data segment vstup db 80 ;bude sa citat 80 znakov pocet db 0 ;tu sa ulozi ich skutocny pocet db 80 dup(?) ; miesto pre citany retazec nr db 0dh, 0ah vystup db 83 dup(?); miesto pre vysledok+13,10,$ data ends code segment assume cs:code,ss:zas, ds:data start: mov ax,seg data mov ds,ax mov ah,0ah ;sluzba pre vstup retazca z klavesnice mov dx,offset vstup int 21h xor ax,ax ; nulovanie ax xor cx,cx ; nulovanie pocitadla mov cl,pocet ; pocet znakov do cl add dx,2 ; nastav sa na citanie prveho znaku mov si,dx ; adresa prveho znaku v si mov bx, offset vystup ; priprav adresu pre vystupny retazec znova:mov al, [si] ; uloz znak do al ; cmp al, 60h ; je to male pismeno a? 'a' = 61h jbe dalej ; znak nebude male pismeno,v ascii tabulke je pod znakom 'a' cmp al, 7bh ; je to male pismeno z? jnb dalej ; znak nebude male pismeno, v ascii tabulke je nad znakom 'z' sub al, 20h ; je to male pismeno, "vyrob" velke mov [bx], al ; uloz velke pismeno na vystup inc bx ; priprav dalsiu adresu pre vystup velkeho pismena dalej:inc si ; priprav dalsi znak loop znova ; opakuj prehladavanie retazca mov byte ptr[bx], 13 mov byte ptr[bx]+1, 10 mov byte ptr[bx]+2, '$' mov ah,9 mov dx, offset nr ; este jeden riadok int 21h mov ax,4c00h int 21h code ends end start