I was looking at the specifications for DOS int 21h interrupts here http://spike.scu.edu.au/~barry/interrupts.html
I don't know much about assembly, but it seems like the AL register is the standard to store return values from an interrupt. For instance, service 01h (read character) stores the character read there. And service 02h (write character to stdout) stores the last character output there.
But when it comes to AH=09h (write string to stdout) the return value is ALWAYS 24h. Why is that?
First I thought that SOME value has to be set for some technical reason, but that does not seem to be the case. There are lots of DOS services that don't specify a return value at all. And some store the return value in other registers, such as 2Ch (get system time) which instead stores the result in CH, CL, DH and DL registers instead of AL.
So why does interrupt service AH=09h store a value in AL? And why 24h?