dosseg .model small .stack .data text db 'Hello World' db 0ah,0dh,'$' len dw 11 .code start: mov ax,@data mov ds,ax lea dx,text mov ah,09h int 21h mov ax,offset text ;pass array by address push ax mov ax,len ;pass length by value push ax call upper lea dx,text mov ah,09h int 21h mov ax,4c00h int 21h upper proc near push bp mov bp,sp mov bx,[bp+6] ;address of array to process mov cx,[bp+4] ;size of array to process top: cmp byte ptr [bx],'a' ;test if a lower case letter jb not_low cmp byte ptr [bx],'z' ja not_low and byte ptr [bx],11011111b ;if lower case, then make upper not_low: inc bx ;get ready for next character loop top mov sp,bp ;all done, restore bp pop bp ret 4 upper endp end start