Dear Sir: Recently, I use C51 6.23a to compile my program, and I find some problem. typedef UCHAR unsigned char; void WriteXY_StrScaler(UCHAR Attr,UCHAR x,UCHAR y); --> List file as below: ; FUNCTION _WriteXY_StrScaler (BEGIN) ; SOURCE LINE # 1591 ;---- Variable 'Attr' assigned to Register 'R5' ---- 0000 AD07 MOV R5,AR7 0002 8D00 R MOV x,R5 0004 8B00 R MOV y,R3 It has problem, because varible x always be change form AR7. I compare C51 V6.11, It is no problem, --> List file as below: ; FUNCTION _WriteXY_StrScaler (BEGIN) 0000 8D00 R MOV x,R5 0002 8B00 R MOV y,R3 ;---- Variable 'Attr' assigned to Register 'R7' ---- Pls tell me, what's difference about 6.23a & 6.11.