home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / assemblr / library / lib4a86 / lib / strings1.lib < prev    next >
Text File  |  1992-02-02  |  3KB  |  275 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. #IF !REPMARKER
  9. REPMARKER EQU 00H
  10. #ENDIF
  11. KOMPRIMIERESTRING:
  12. PUSH SI,DI,CX,DX
  13. CLD
  14. LODSB
  15. MOV DI,SI
  16. MOV DX,SI
  17. OR AL,AL
  18. JZ >L9
  19. DEC AL
  20. JE >L9
  21. INC AL
  22. MOV CL,AL
  23. XOR CH,CH
  24. MOV AH,REPMARKER
  25. L0:
  26. JCXZ >L8
  27. LODSB
  28. CMP AL,AH
  29. JNZ >L01
  30. STC
  31. JMP >L9
  32. L01:
  33. DEC CL
  34. XOR BX,BX
  35. JCXZ >L2
  36. L1:
  37. CMP [SI+BX],AL
  38. JNE >L2
  39. INC BL
  40. DEC CL
  41. JCXZ >L2
  42. JMP L1
  43. L2:
  44. OR BL,BL
  45. JZ >L3
  46. ADD SI,BX
  47. CMP BX,1
  48. JNE >L21
  49. STOSB
  50. JMP >L3
  51. L21:
  52. INC BL
  53. MOV [DI],AH
  54. INC DI
  55. MOV [DI],BL
  56. INC DI
  57. L3:
  58. STOSB
  59. JMP L0
  60. L8:
  61. MOV SI,DX
  62. MOV CX,DI
  63. SUB CX,SI
  64. DEC SI
  65. MOV [SI],CL
  66. CLC
  67. L9:
  68. POP DX,CX,DI,SI
  69. RET
  70. DEKOMPRIMIERESTRING:
  71. PUSH DX,CX,BX,SI,DI
  72. CLD
  73. XOR DX,DX
  74. LODSB
  75. OR AL,AL
  76. JZ >L9
  77. XOR AH,AH
  78. MOV CX,AX
  79. INC DI
  80. L0:
  81. MOV BX,CX
  82. MOV CL,01
  83. LODSB
  84. CMP AL,REPMARKER
  85. JNZ >L1
  86. DEC BL
  87. JZ >L8
  88. LODSB
  89. CMP AL,REPMARKER
  90. JZ >L8
  91. DEC BL
  92. JZ >L8
  93. MOV CL,AL
  94. LODSB
  95. L1:
  96. ADD DL,CL
  97. REP STOSB
  98. MOV CX,BX
  99. JCXZ >L9
  100. LOOP L0
  101. JMP >L9
  102. L8:
  103. XOR DL,DL
  104. STC
  105. L9:
  106. POP DI
  107. MOV [DI],DL
  108. POP SI,BX,CX,DX
  109. RET
  110. #IF !NUMMERZ
  111. NUMMERZ EQU '#'
  112. #ENDIF
  113. #IF !MAXKONVERT
  114. MAXKONVERT EQU 32XD
  115. #ENDIF
  116. FORMATIEREASCIISTRING:
  117. PUSH CX,SI,DI
  118. CLD
  119. INC DI
  120. LODSB
  121. MOV CL,AL
  122. XOR CH,CH
  123. L1:
  124. OR CL,CL
  125. JZ >L9
  126. LODSB
  127. DEC CL
  128. CMP AL,NUMMERZ
  129. JNE >L3
  130. STOSB
  131. INC CH
  132. JC >L8
  133. L3:
  134. CMP AL,MAXKONVERT
  135. JB >L2
  136. STOSB
  137. INC CH
  138. JC >L8
  139. JMP L1
  140. L2:
  141. MOV B ES:[DI],NUMMERZ
  142. INC DI
  143. ADD CH,4
  144. JC >L8
  145. JMP >L3
  146. L8:
  147. MOV CH,0
  148. L9:
  149. POP DI
  150. MOV ES:[DI],CH
  151. POP SI,CX
  152. RET
  153. L3:
  154. XOR AH,AH
  155. MOV BL,100XD
  156. DIV BL
  157. ADD AL,'0'
  158. STOSB
  159. MOV AL,AH
  160. XOR AH,AH
  161. MOV BL,10XD
  162. DIV BL
  163. ADD AL,'0'
  164. STOSB
  165. MOV AL,AH
  166. ADD AL,'0'
  167. STOSB
  168. JMP L1
  169. DEFORMATIEREASCIISTRING:
  170. PUSH CX,SI,DI
  171. CLD
  172. INC DI
  173. LODSB
  174. MOV CL,AL
  175. XOR CH,CH
  176. L0:
  177. OR CL,CL
  178. JZ >L9
  179. LODSB
  180. DEC CL
  181. OR CL,CL
  182. JZ >L2
  183. CMP AL,NUMMERZ
  184. JNE >L2
  185. CALL INTERN_GETBYTE1
  186. JC >L1
  187. JMP >L2
  188. L1:
  189. DEC SI
  190. LODSB
  191. STOSB
  192. INC CH
  193. LODSB
  194. DEC CL
  195. CMP AL,NUMMERZ
  196. JE L0
  197. L2:
  198. INC CH
  199. STOSB
  200. JMP L0
  201. L9:
  202. POP DI
  203. MOV [DI],CH
  204. POP SI,CX
  205. RET
  206. INTERN_GETBYTE1:
  207. XOR BH,BH
  208. MOV BL,[SI]
  209. SUB BL,'0'
  210. CMP BL,0AH
  211. JC >L1
  212. RET
  213. L1:
  214. INC SI
  215. DEC CL
  216. XOR BH,BH
  217. MOV AX,BX
  218. INC BH
  219. L1:
  220. OR CL,CL
  221. JZ >L9
  222. CMP BH,3
  223. JE >L9
  224. MOV DX,AX
  225. MOV BL,[SI]
  226. SUB BL,'0'
  227. CMP BL,0AH
  228. JNC >L9
  229. INC BH
  230. PUSH BX
  231. MOV BH,10XD
  232. MUL BH
  233. POP BX
  234. ADD AL,BL
  235. INC SI
  236. DEC CL
  237. OR AH,AH
  238. JZ L1
  239. MOV AX,DX
  240. DEC SI
  241. INC CL
  242. L9:
  243. CLC
  244. RET
  245. #IF !INTERN_CMARK0
  246. INTERN_CMARK0 EQU 01H
  247. INTERN_CMARK1:
  248. PUSH BP
  249. MOV BP,SP
  250. MOV BX,06H
  251. SUB CH,[BP+SI]
  252. SUB AH,[BX+SI]
  253. DEC SP
  254. DEC CX
  255. INC DX
  256. XOR AL,041H
  257. CMP B[02820H],DH
  258. INC BX
  259. SUB W[BX+SI],SP
  260. INC DX
  261. CS AND B[BP+DI+043H],DL
  262. DEC AX
  263. INC BP
  264. DEC BP
  265. DEC BP
  266. INC BP
  267. PUSH DX
  268. AND B[BP+SI],CH
  269. SUB CH,[BP+SI]
  270. POP DX
  271. MOV SP,BP
  272. POP BP
  273. RET
  274. #ENDIF
  275.