The preferred solution would be to insert "the lowercase letter the user inputted" in the output string. I see you already $-terminated the string so it can get printed all at once using the DOS.PrintString function 09h.
Define the uppercase string with a placeholding question mark (or any other character that you like):
uppercase db "The uppercase equivalent of letter ? is: $"
^
placeholder
For ease of addressing the placeholder, you can write the string on 2 lines, so you can put a label in front of the placeholder:
uppercase db "The uppercase equivalent of letter "
uppercase_ db "? is: $"
^
placeholder
Replace the placeholder by the lowercase letter from user input:
mov [uppercase_], al ; AL is lowercase
Print the string with DOS.PrintString function 09h:
mov dx, offset uppercase
mov ah, 09h
int 21h
What about displaying the capitalized letter?
No need to output it separately. The simplest solution is to also include it in the output string.
Just add a second placeholder right before the terminating $ character. Instead of splitting off a third line we can easily establish an offset by counting characters (The 2 placeholders are 6 characters apart):
uppercase db "The uppercase equivalent of letter "
uppercase_ db "? is: ?$"
^ ^
placeholder1 placeholder2
Replace both placeholders. At the ellipsis ... you must convert from lowercase to uppercase!
mov [uppercase_], al ; AL is lowercase
...
mov [uppercase_ + 6], al ; AL is uppercase
Print the string with DOS.PrintString function 09h.
mov dx, offset uppercase
mov ah, 09h
int 21h
For some background information about displaying text read this Q/A Displaying characters with DOS or BIOS. It has examples of printing strings of text character per character.
Bringing it more in line with what cout
does
The above solution no longer holds true if the datum that needs to overwrite the placeholder is of varying lengths. Using a 5-character placeholder, consider:
db 'Your donation of € is much appreciated.$'
If the donated amount has 5 digits this will print out just fine:
Your donation of 20000 € is much appreciated.
but if the donated amount is small, it's no longer that nice to look out:
Your donation of 5 € is much appreciated.
In this scenario we'll have to use the different approach of outputting the accompanying texts separately from the number that goes in between.
ThankYou1 db 'Your donation of $'
ThankYou2 db ' € is much appreciated.$'
...
mov dx, offset ThankYou1
mov ah, 09h
int 21h
mov ax, [amount]
call DisplayNumber
mov dx, offset ThankYou2
mov ah, 09h
int 21h
For ideas about how to write the DisplayNumber routine, see Displaying numbers with DOS.