Sq10Bit3:   ;input: r0,r1; output: r2,r3,r4; all LSB first
   mov  DPTR,#Table1
   mov  a,r0
   movc a,@a+dptr
   mov  r2,a
   mov  a,r1
   jz   Sq10Bit3a
   add  a,r1
   add  a,#HIGH(Table2-2*256)
   mov  dph,a
   mov  a,r0
   movc a,@a+dptr
   mov  r3,a
   inc  dph
   mov  a,r0
   movc a,@a+dptr
   mov  r4,a
   ret
Sq10Bit3a:
   inc  dph
   mov  a,r0
   movc a,@a+dptr
   mov  r3,a
   mov  r4,#0
   ret   

Table1:  ;256 bytes: (X^2) MOD 256 for X=00h..FFh
         ;256 bytes: (X^2) DIV 256 for X=00h..FFh

   ORG  Table1+512
Table2:
         ;256 bytes: ((X^2) DIV 256) MOD 256 for X=100h..1FFh
         ;256 bytes: ((X^2) DIV 256) DIV 256 for X=100h..1FFh
         ;256 bytes: ((X^2) DIV 256) MOD 256 for X=200h..2FFh
         ;256 bytes: ((X^2) DIV 256) DIV 256 for X=200h..2FFh
         ;256 bytes: ((X^2) DIV 256) MOD 256 for X=300h..3FFh
         ;256 bytes: ((X^2) DIV 256) DIV 256 for X=300h..3FFh

   end   