home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s235 / 1.ddi / BCD.ASM next >
Encoding:
Assembly Source File  |  1988-09-06  |  3.8 KB  |  297 lines

  1. ;
  2. ;THIS IS A FILE OF BCD.ASM
  3. ;
  4. BCDC:    MOV   A,@R0        ;THIS IS  SUBROUTING 6-1
  5.     SWAP  A
  6.     INC   R0
  7.     XCHD  A,@R0
  8.     MOV   @R1,A
  9.     XCHD  A,@R0
  10.     INC   R0
  11.     INC   R1
  12.     DJNZ  R3,BCDC
  13.     RET
  14. ;
  15. ;
  16. ;
  17. ;
  18. ;
  19. ;
  20. ;
  21. CBCD:    MOV   A,@R0        ;THIS IS  SUBROUTING 6-2
  22.     SWAP  A
  23.     ANL   A,#0FH
  24.     MOV   @R1,A
  25.     MOV   A,@R0
  26.     INC   R1
  27.     ANL   A,#0FH
  28.     MOV   @R1,A
  29.     INC   R0
  30.     INC   R1
  31.     DJNZ  R3,CBCD
  32.     RET
  33. ;
  34. ;
  35. ;
  36. ;
  37. ;
  38. ;
  39. ;
  40. ;
  41. CCMP:    MOV   A,R0        ;THIS IS  SUBROUTING 6-3
  42.     ADD   A,R2
  43.     MOV   R0,A
  44.     DEC   R0
  45. CCML:    MOV   A,@R0
  46.     CPL   C
  47.     CPL   A
  48.     ADDC  A,#9AH
  49.     MOV   @R0,A
  50.     DEC   R0
  51.     DJNZ  R2,CCML
  52.     RET
  53. ;
  54. ;
  55. ;
  56. ;
  57. ;
  58. ;
  59. ;
  60. ;
  61. ;
  62. ;            ;THIS IS  SUBROUTING 6-4
  63. CADD:    MOV   A,R0    ;N BYTE BCD ADD
  64.     ADD   A,R3    ;NOT SIGN
  65.     MOV   R0,A
  66.     DEC   R0
  67.     MOV   A,R1
  68.     ADD   A,R3
  69.     MOV   R1,A
  70.     DEC   R1
  71.     CLR   C
  72. CADL:    MOV   A,@R0
  73.     ADDC  A,@R1
  74.     DA    A
  75.     MOV   @R0,A
  76.     DEC   R0
  77.     DEC   R1
  78.     DJNZ  R3,CADL
  79.     RET
  80. ;
  81. ;                ;THIS IS  SUBROUTING 6-5 ;
  82. CSUB1:    MOV   A,R0        ;N BYTE N SIGN BCD SUB
  83.     ADD   A,R3
  84.     MOV   R0,A
  85.     DEC   R0
  86.     MOV   A,R1
  87.     ADD   A,R3
  88.     MOV   R1,A
  89.     DEC   R1
  90.     SETB  C
  91. CSUL1:    CLR   A
  92.     ADDC  A,#99H
  93.     SUBB  A,@R1
  94.     ADD   A,@R0
  95.     DA    A
  96.     MOV   @R0,A
  97.     DEC   R0
  98.     DEC   R1
  99.     DJNZ  R3,CSUL1
  100.     RET
  101. ;
  102. ;
  103. ;
  104. ;
  105. ;    THIS IS SUBROUTING    ;THIS IS  SUBROUTING 6-6
  106. CSUB2:    MOV   A,R0        ;N BYTE N SIGN
  107.     ADD   A,R3        ;BCD SUB
  108.     MOV   R0,A
  109.     DEC   R0
  110.     MOV   A,R1
  111.     ADD   A,R3
  112.     MOV   R1,A
  113.     DEC   R1
  114.     CLR   C
  115.     CPL   C
  116. CSUL2:    MOV   A,@R1
  117.     CPL   A
  118.     ADDC  A,#9AH
  119.     ADD   A,@R0
  120.     DA    A
  121.     MOV   @R0,A
  122.     DEC   R0
  123.     DEC   R1
  124.     DJNZ  R3,CSUL2
  125.     RET
  126. ;
  127. ;
  128. ;
  129. ;
  130. ;                ;THIS IS  SUBROUTING 6-8
  131. CDSUB:    MOV   A,@R1        ;N  BYTE O SIGN BCD SUB
  132.     CPL   A
  133.     ANL   A,#1
  134.     MOV   @R1,A
  135. CDADD:    MOV   A,R3
  136.     MOV   R2,A
  137.     MOV   A,@R0
  138.     XRL   A,@R1
  139.     ANL   A,#01H
  140.     INC   R0
  141.     INC   R1
  142.     JNZ   CDSB
  143.     LCALL  CADD
  144.     RET
  145. CDSB:    LCALL  CSUB2
  146.     JC    CDRT
  147.     INC   R0
  148.     INC   R1
  149.     LCALL  CCMP
  150.     MOV   A,@R1
  151.     MOV   @R0,A
  152. CDRT:    CLR   C
  153.     RET
  154. ;
  155. ;
  156. ;
  157. ;
  158. ;
  159. ;
  160. ;
  161. ;            ;THIS IS  SUBROUTING 6-7
  162. CMUL:    MOV   A,R3    ;N BYTES BCD MUL
  163.     MOV   R6,A    ;R6 = n
  164.     ADD   A,R3
  165.     MOV   R2,A    ;R2 = 2n
  166.     MOV   A,R3
  167.     ADD   A,R0
  168.     MOV   R0,A
  169.     MOV   A,R1
  170.     ADD   A,R3
  171.     DEC   A
  172.     MOV   R1,A
  173.     CLR   A
  174. CMUL1:    MOV   @R0,A
  175.     INC   R0
  176.     DJNZ  R6,CMUL1
  177.     MOV   A,R2
  178.     MOV   R6,A
  179.     DEC   R0
  180. CMUL2:    CLR   A
  181. CMUL3:    XCH   A,@R0    ;(B,S) * 10
  182.     SWAP  A
  183.     XCHD  A,@R0
  184.     XCH   A,@R0
  185.     DEC   R0
  186.     DJNZ  R2,CMUL3
  187.     MOV   R7,A    ;R7 = bi
  188.     JZ    CMUL7
  189. CMUL4:    MOV   A,R3
  190.     MOV   R2,A
  191.     ADD   A,R3
  192.     ADD   A,R0
  193.     MOV   R0,A
  194.     CLR   C
  195. CMUL5:    MOV   A,@R0    ;S + A -> S
  196.     ADDC  A,@R1
  197.     DA    A
  198.     MOV   @R0,A
  199.     DEC   R0
  200.     DEC   R1
  201.     DJNZ  R2,CMUL5
  202.     MOV   A,R3
  203.     MOV   R2,A
  204. CMUL6:    CLR   A
  205.     ADDC  A,@R0
  206.     DA    A
  207.     MOV   @R0,A
  208.     DEC   R0
  209.     DJNZ  R2,CMUL6
  210.     MOV   A,R3
  211.     ADD   A,R1
  212.     MOV   R1,A
  213.     DJNZ  R7,CMUL4
  214. CMUL7:    MOV   A,R3
  215.     ADD   A,R3
  216.     MOV   R2,A
  217.     ADD   A,R0
  218.     MOV   R0,A
  219.     DJNZ  R6,CMUL2
  220.     RET
  221. ;
  222. ;
  223. ;
  224. ;
  225. ;
  226. ;
  227. ;
  228. ;            ;THIS IS  SUBROUTING 6-8
  229. CDIV:    MOV   A,R3    ;2N BYTE BCD / N BYTE BCD
  230.     ADD   A,R3
  231.     MOV   R7,A    ;R7 = 2n
  232.     DEC   R0
  233.     DEC   R1
  234. CDIV1:    MOV   A,R3
  235.     ADD   A,R3
  236.     MOV   R2,A    ;R2 = 2n
  237.     ADD   A,R0
  238.     MOV   R0,A
  239.     CLR   A
  240. CDIV2:    XCH   A,@R0
  241.     SWAP  A
  242.     XCHD  A,@R0
  243.     XCH   A,@R0
  244.     DEC   R0
  245.     DJNZ  R2,CDIV2
  246.     MOV   R4,A
  247. CDIV3:    MOV   A,R3
  248.     MOV   R6,A    ;R6 = n
  249.     ADD   A,R0
  250.     MOV   R0,A
  251.     ADD   A,R3
  252.     XCH   A,R0
  253.     INC   @R0
  254.     XCH   A,R0
  255.     MOV   A,R1
  256.     ADD   A,R3
  257.     MOV   R1,A
  258.     SETB  C
  259. CDIV4:    CLR   A
  260.     ADDC  A,#99H
  261.     SUBB  A,@R1
  262.     ADD   A,@R0
  263.     DA    A
  264.     MOV   @R0,A
  265.     DEC   R0
  266.     DEC   R1
  267.     DJNZ  R6,CDIV4
  268.     CPL   C
  269.     MOV   A,R4
  270.     SUBB  A,#0
  271.     MOV   R4,A
  272.     JNC   CDIV3
  273.     MOV   A,R3
  274.     MOV   R6,A
  275.     ADD   A,R0
  276.     MOV   R0,A
  277.     ADD   A,R3
  278.     XCH   A,R0
  279.     DEC   @R0
  280.     XCH   A,R0
  281.     MOV   A,R1
  282.     ADD   A,R3
  283.     MOV   R1,A
  284.     CLR   C
  285. CDIV5:    MOV   A,@R0
  286.     ADDC  A,@R1
  287.     DA    A
  288.     MOV   @R0,A
  289.     DEC   R0
  290.     DEC   R1
  291.     DJNZ  R6,CDIV5
  292.     DJNZ  R7,CDIV1
  293.     RET
  294. ;
  295. ;
  296. ;
  297.