DOS Internal - Sum memory

Entry:
AX = 121Dh
DS:SI -> memory to add up
CX = 0000h
DX = limit
Return:
AL = byte which exceeded limit
CX = number of bytes before limit exceeded
DX = remainder after adding first CX bytes