Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 26.07.2023 savelij
  3.  
  4. ; перевод BCDE в HEX строку и возврат в HL адреса буфера
  5. HEX2TXT         LD HL,TXT_HEX
  6.                 PUSH HL
  7.                 LD A,B
  8.                 CALL HEX2HL
  9.                 LD A,C
  10.                 CALL HEX2HL
  11.                 LD A,D
  12.                 CALL HEX2HL
  13.                 LD A,E
  14.                 CALL HEX2HL
  15.                 LD (HL),0
  16.                 POP HL
  17.                 RET
  18.  
  19. ; перевод A в HEX и укладка в адрес HL
  20. HEX2HL          LD B,A
  21.                 RRCA
  22.                 RRCA
  23.                 RRCA
  24.                 RRCA
  25.                 CALL .L1
  26.                 LD A,B
  27. .L1             AND 0x0F
  28.                 ADD A,'0'
  29.                 CP '9'+1
  30.                 JR C,.L2
  31.                 ADD A,7
  32. .L2             LD (HL),A
  33.                 INC HL
  34.                 RET
  35.  
  36. ; перевод (64 бит) числа в десятичную систему и текстовый вид
  37. FHEX8DEC        EXX
  38.                 LD HL,TXT_DEC
  39.                 PUSH HL
  40.                 PUSH HL
  41.                 LD (BUF_IN_DIGIT + 6),BC
  42.                 LD (BUF_IN_DIGIT + 4),DE
  43.                 EXX
  44.                 LD (BUF_IN_DIGIT + 2),BC
  45.                 LD (BUF_IN_DIGIT + 0),DE
  46.                 LD HL,CHISLA._8_
  47.         REPT 5
  48.                 CALL BCDEBCDEMHL
  49.         ENDM
  50.                 JR FHEX6DEC.L1
  51.  
  52. ; перевод (48 бит) числа в десятичную систему и текстовый вид
  53. FHEX6DEC        EXX
  54.                 LD HL,TXT_DEC
  55.                 PUSH HL
  56.                 PUSH HL
  57.                 LD BC,0
  58.                 LD (BUF_IN_DIGIT + 6),BC
  59.                 LD (BUF_IN_DIGIT + 4),DE
  60.                 EXX
  61.                 LD (BUF_IN_DIGIT + 2),BC
  62.                 LD (BUF_IN_DIGIT + 0),DE
  63. .L1             LD HL,CHISLA._6_
  64.         REPT 14
  65.                 CALL BCDEBCDEMHL
  66.         ENDM
  67.                 LD A,(BUF_IN_DIGIT)
  68.                 ADD A,'0'
  69.                 JR FHEX4DEC.L5
  70.  
  71. ; перевод (32 бита) числа в десятичную систему и текстовый вид
  72. FHEX4DEC        EXX
  73.                 LD HL,TXT_DEC
  74.                 PUSH HL
  75.                 PUSH HL
  76.                 EXX
  77.                 LD HL,CHISLA._4_
  78.         REPT 5
  79.                 CALL BCDEMHL
  80.         ENDM
  81. ; для 16 битного числа
  82. .L4             CALL BCDEMHL
  83.                 CALL BCDEMHL
  84. ; для 8 битного числа
  85. .L1             CALL BCDEMHL
  86.                 CALL BCDEMHL
  87.                 LD A,'0'
  88.                 ADD A,E
  89. .L5             EXX
  90.                 LD (HL),A
  91.                 INC HL
  92.                 LD (HL),0
  93.                 EXX
  94.                 POP HL
  95. .L2             LD A,(HL)
  96.                 CP '0'
  97.                 JR NZ,.L3
  98.                 LD (HL),' '
  99.                 INC HL
  100.                 LD A,(HL)
  101.                 AND A
  102.                 JR NZ,.L2
  103. .L3             POP HL
  104.                 RET
  105.  
  106. ; перевод (16 бит) числа в десятичную систему и текстовый вид
  107. FHEX2DEC        EXX
  108.                 LD HL,TXT_DEC
  109.                 PUSH HL
  110.                 PUSH HL
  111.                 EXX
  112.                 LD HL,CHISLA._2_
  113.                 LD BC,0
  114.                 JR FHEX4DEC.L4
  115.  
  116. ; перевод (8 бит) числа в десятичную систему и текстовый вид
  117. FHEX1DEC        EXX
  118.                 LD HL,TXT_DEC
  119.                 PUSH HL
  120.                 PUSH HL
  121.                 EXX
  122.                 LD HL,CHISLA._1_
  123.                 LD BC,0
  124.                 LD D,B
  125.                 JR FHEX4DEC.L1
  126.  
  127. CHISLA
  128. ; 64 бита          18446744073709551615
  129. ._8_            DQ 10000000000000000000
  130.                 DQ  1000000000000000000
  131.                 DQ   100000000000000000
  132.                 DQ    10000000000000000
  133.                 DQ     1000000000000000
  134. ; 48 бит           281474976710655
  135. ._6_            DQ      100000000000000
  136.                 DQ       10000000000000
  137.                 DQ        1000000000000
  138.                 DQ         100000000000
  139.                 DQ          10000000000
  140.                 DQ           1000000000
  141.                 DQ            100000000
  142.                 DQ             10000000
  143.                 DQ              1000000
  144.                 DQ               100000
  145.                 DQ                10000
  146.                 DQ                 1000
  147.                 DQ                  100
  148.                 DQ                   10
  149.                
  150. ; 32 бита          4294967295
  151. ._4_            DD 1000000000
  152.                 DD  100000000
  153.                 DD   10000000
  154.                 DD    1000000
  155.                 DD     100000
  156. ; 16 бит           65535
  157. ._2_            DD      10000
  158.                 DD       1000
  159. ; 8 бит            255
  160. ._1_            DD        100
  161.                 DD         10
  162.  
  163. BUF_IN_DIGIT    DQ 0
  164.  
  165. ; BCDE'BCDE - (ADR) = BCDE
  166. BCDEBCDEMHL     LD DE,BUF_IN_DIGIT
  167.                 XOR A
  168.                 EX AF,AF'
  169.                 LD BC,-8
  170. .L1            
  171.                 LD A,(DE)
  172.                 SUB (HL)
  173.                 LD (DE),A
  174.                 INC HL
  175.                 INC DE
  176.         REPT 7
  177.                 LD A,(DE)
  178.                 SBC A,(HL)
  179.                 LD (DE),A
  180.                 INC HL
  181.                 INC DE
  182.         ENDM
  183.                 EX AF,AF'
  184.                 EX DE,HL
  185.                 ADD HL,BC
  186.                 EX DE,HL
  187.                 ADD HL,BC
  188.                 INC A
  189.                 EX AF,AF'
  190.                 JP NC,.L1
  191.                 LD A,(DE)
  192.                 ADD A,(HL)
  193.                 LD (DE),A
  194.                 INC HL
  195.                 INC DE
  196.         REPT 7
  197.                 LD A,(DE)
  198.                 ADC A,(HL)
  199.                 LD (DE),A
  200.                 INC HL
  201.                 INC DE
  202.         ENDM
  203.                 JR BCDEMHL.L2
  204.  
  205. ; BCDE - (ADR) = BCDE
  206. BCDEMHL         XOR A
  207.                 EX AF,AF'
  208. .L1             LD A,E
  209.                 SUB (HL)
  210.                 INC HL
  211.                 LD E,A
  212.                 LD A,D
  213.                 SBC A,(HL)
  214.                 INC HL
  215.                 LD D,A
  216.                 LD A,C
  217.                 SBC A,(HL)
  218.                 INC HL
  219.                 LD C,A
  220.                 LD A,B
  221.                 SBC A,(HL)
  222.                 LD B,A
  223.                 DEC HL
  224.                 DEC HL
  225.                 DEC HL
  226.                 EX AF,AF'
  227.                 INC A
  228.                 EX AF,AF'
  229.                 JP NC,.L1
  230.                 LD A,(HL)
  231.                 ADD A,E
  232.                 LD E,A
  233.                 INC HL
  234.                 LD A,(HL)
  235.                 ADC A,D
  236.                 LD D,A
  237.                 INC HL
  238.                 LD A,(HL)
  239.                 ADC A,C
  240.                 LD C,A
  241.                 INC HL
  242.                 LD A,(HL)
  243.                 ADC A,B
  244.                 LD B,A
  245.                 DEC HL
  246.                 DEC HL
  247.                 DEC HL
  248.                 INC HL
  249.                 INC HL
  250.                 INC HL
  251.                 INC HL
  252. .L2             EXX
  253.                 EX AF,AF'
  254.                 DEC A
  255.                 ADD A,'0'
  256.                 LD (HL),A
  257.                 INC HL
  258.                 EXX
  259.                 RET
  260.