And this works? It's better if you mention whether the code works or not so we can adjust our comments accordingly. Here are the things that I took note of:
This looks like a typo, and you probably meant AX. You also don't need to terminate a statement with a semicolon in assembly. What you're doing is starting an empty comment. It's harmless, but confusing.
How is this supposed to place the largest of the three values in AX? The cmp instruction doesn't write to either of its operands, so you're basically setting the flags for ax-bx, then overwriting the flags with ax-cx. Whatever ax was originally is printed, so your algorithm won't work as you intend.
You need to either print the correct register, or move the correct value to AX, and that means a conditional test, which means a jump: