home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / lib4a86 / lib / mengen.lib < prev    next >
Text File  |  1992-02-12  |  3KB  |  173 lines

  1. #IF !LIB4A86
  2. #ELSE
  3. #IF !INTERN_LIB4A86_S
  4. INTERN_LIB4A86_S EQU 01
  5. JMP START
  6. #ENDIF
  7. #ENDIF
  8. DEFINIEREMENGE MACRO
  9. #1 DW 16XD DUP 0
  10. #EM
  11. MENGE_DER_GROSSBUCHSTABEN DW 0000H, 0000H, 0000H, 0000H
  12. DW 0FFFEH, 07FFH, 0000H, 0000H
  13. DW 4000H, 0600H, 0000H, 0000H
  14. DW 0000H, 0000H, 0002H, 0000H
  15. MENGE_DER_KLEINBUCHSTABEN DW 0000H, 0000H, 0000H, 0000H
  16. DW 0000H, 0000H, 0FFFEH, 07FFH
  17. DW 0012H, 0010H, 0000H, 0000H
  18. DW 0000H, 0000H, 0002H, 0000H
  19. MENGE_DER_BUCHSTABEN DW 0000H, 0000H, 0000H, 0000H
  20. DW 0FFFEH, 07FFH, 0FFFEH, 07FFH
  21. DW 4012H, 0610H, 0000H, 0000H
  22. DW 0000H, 0000H, 0002H, 0000H
  23. BILDE_MENGE:
  24. PUSH DI
  25. CALL LOESCHE_MENGE
  26. XOR CH,CH
  27. JCXZ >L2
  28. L1:
  29. MOV AL,ES:[DI]
  30. INC DI
  31. CALL ADD_ELEMENT
  32. LOOP L1
  33. L2:
  34. POP DI
  35. RET
  36. ELEMENT_VORHANDEN?:
  37. MOV AH,-1
  38. JMP >L1
  39. ADD_ELEMENT:
  40. MOV AH,01
  41. JMP >L1
  42. SUB_ELEMENT:
  43. MOV AH,0
  44. L1:
  45. PUSH DX
  46. PUSH BX,CX
  47. MOV DH,AH
  48. XOR AH,AH
  49. MOV CL,8
  50. DIV CL
  51. ADD BL,AL
  52. ADC BH,0
  53. MOV AL,DS:[BX]
  54. MOV CL,AH
  55. MOV DL,01H
  56. SHL DL,CL
  57. OR DH,DH
  58. JG >L1
  59. JL >L2
  60. XOR DL,0FFH
  61. AND DS:[BX],DL
  62. JMP >L9
  63. L1:
  64. OR DS:[BX],DL
  65. JMP >L9
  66. L2:
  67. TEST DS:[BX],DL
  68. L9:
  69. POP CX,BX
  70. POP DX
  71. RET
  72. LOESCHE_MENGE:
  73. MOV AL,INTERN_LOESCHEO
  74. JMP >L1
  75. KOPIERE_MENGE:
  76. MOV AL,INTERN_KOPIEREO
  77. JMP >L1
  78. CARD_MENGE:
  79. MOV AL,INTERN_CARDO
  80. JMP >L1
  81. NEGIERE_MENGE:
  82. MOV AL,INTERN_NEGIEREO
  83. JMP >L1
  84. VEREINIGE_MENGEN:
  85. MOV AL,INTERN_VEREINIGEO
  86. JMP >L1
  87. SCHNEIDE_MENGEN:
  88. MOV AL,INTERN_SCHNEIDEO
  89. JMP >L1
  90. XOR_MENGEN:
  91. MOV AL,INTERN_XORO
  92. L1:
  93. PUSH BX,CX,DX,SI,DI
  94. MOV SI,BX
  95. CBW
  96. ADD AX,OFFSET INTERN_MENGENBASIS
  97. MOV BX,AX
  98. XOR DX,DX
  99. MOV CX,010H
  100. CLD
  101. L1:
  102. LODSW
  103. CALL BX
  104. INC DI,2
  105. LOOP L1
  106. POP DI,SI,DX,CX,BX
  107. RET
  108. INTERN_MENGENBASIS LABEL BYTE
  109. INTERN_LOESCHE:
  110. MOV W DS:[SI-2],DX
  111. RET
  112. INTERN_VEREINIGE:
  113. OR ES:[DI],AX
  114. RET
  115. INTERN_SCHNEIDE:
  116. AND ES:[DI],AX
  117. RET
  118. INTERN_XOR:
  119. XOR ES:[DI],AX
  120. RET
  121. INTERN_NEGIERE:
  122. XOR AX,0FFFFH
  123. INTERN_KOPIERE:
  124. MOV ES:[DI],AX
  125. RET
  126. INTERN_CARD:
  127. PUSH CX
  128. MOV CX,010H
  129. L1:
  130. SHR AX,1
  131. ADC DX,0
  132. LOOP L1
  133. MOV AX,DX
  134. POP CX
  135. RET
  136. INTERN_CARDO EQU (OFFSET INTERN_CARD - OFFSET INTERN_MENGENBASIS)
  137. INTERN_KOPIEREO EQU (OFFSET INTERN_KOPIERE - OFFSET INTERN_MENGENBASIS)
  138. INTERN_NEGIEREO EQU (OFFSET INTERN_NEGIERE - OFFSET INTERN_MENGENBASIS)
  139. INTERN_XORO EQU (OFFSET INTERN_XOR - OFFSET INTERN_MENGENBASIS)
  140. INTERN_SCHNEIDEO EQU (OFFSET INTERN_SCHNEIDE - OFFSET INTERN_MENGENBASIS)
  141. INTERN_VEREINIGEO EQU (OFFSET INTERN_VEREINIGE - OFFSET INTERN_MENGENBASIS)
  142. INTERN_LOESCHEO EQU (OFFSET INTERN_LOESCHE - OFFSET INTERN_MENGENBASIS)
  143. #IF !INTERN_CMARK0
  144. INTERN_CMARK0 EQU 01H
  145. INTERN_CMARK1:
  146. PUSH BP
  147. MOV BP,SP
  148. MOV BX,06H
  149. SUB CH,[BP+SI]
  150. SUB AH,[BX+SI]
  151. DEC SP
  152. DEC CX
  153. INC DX
  154. XOR AL,041H
  155. CMP B[02820H],DH
  156. INC BX
  157. SUB W[BX+SI],SP
  158. INC DX
  159. CS AND B[BP+DI+043H],DL
  160. DEC AX
  161. INC BP
  162. DEC BP
  163. DEC BP
  164. INC BP
  165. PUSH DX
  166. AND B[BP+SI],CH
  167. SUB CH,[BP+SI]
  168. POP DX
  169. MOV SP,BP
  170. POP BP
  171. RET
  172. #ENDIF
  173.