the thing I remember from my days of studying this module is that al refers to the lower half of the full ax register. so there might be a sizing issue when moving from the full dx reg into the lower half of the ax reg.
You are quite right in that AL does refer to the lower register of AX, but [DX] is actually referring to the contents at the memory location addressed in DX. Since this is a single memory location, the contents are not larger than a byte, and hence we refer to the lower order register.
Thanks for the thought though. I did try the change, but still it didnt work. Hopefully someone out there will be able to shed some light.