Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.59 KB | None | 0 0
  1. ;7. Paraðykite programà, kuri visus faile rastus skaitmenis pakeistø þodþiais („1“ -> „vienas“,...)
  2. ;ir rezultatà iðsaugotø kitame faile.
  3.  
  4. .model small
  5.  
  6. .stack 100h
  7.  
  8. .data
  9.  
  10. DuomenuFailas db "duom.txt", 0
  11. RezultatuFailas db "rez.txt", 0
  12. SkaitBuf db 10 dup ('$')
  13. RasBuf db 100 dup ('$')
  14. DeskDuom dw ?
  15. DeskRez dw ?
  16. Char dw ?
  17.  
  18. ;Skaiciai
  19. nulis db "nulis$"
  20. vienas db "vienas$"
  21. du db "du$"
  22. trys db "trys$"
  23. keturi db "keturi$"
  24. penki db "penki$"
  25. sesi db "sesi$"
  26. septyni db "septyni$"
  27. astuoni db "astuoni$"
  28. devyni db "devyni$"
  29.  
  30. ;Errors
  31. ErrorOpenReadM db "Atidarant duomenu faila ivyko klaida$"
  32. ErrorOpenWriteM db "Atidarant duomenu faila ivyko klaida$"
  33. ErrorReadM db "Skaitant duomenis ivyko klaida$"
  34. ErrorWriteM db "Rasant duomenis i faila ivyko klaida$"
  35. ErrorCloseWriteM db "Uzdarant rezultatu faila ivyko klaida$"
  36. ErrorCloseReadM db "Uzdarant duomenu faila ivyko klaida$"
  37.  
  38.  
  39. .code
  40. pradzia:
  41. MOV ax, @data
  42. MOV ds, ax
  43.  
  44. ;Atidaryti skaitymui
  45. MOV ah, 3Dh
  46. MOV al, 00
  47. MOV dx, offset DuomenuFailas
  48. INT 21h
  49. JC ErrorOpenRead
  50. MOV DeskDuom, ax
  51.  
  52.  
  53. ;Atidaryti rasymui
  54. MOV ah, 3Ch
  55. MOV cx, 0
  56. MOV dx, offset RezultatuFailas
  57. INT 21h
  58. JC ErrorOpenWrite
  59. MOV DeskRez, ax
  60.  
  61. ;Skaitymas
  62. read:
  63. MOV bx, DeskDuom
  64. CALL ReadBuf
  65. CMP ax, 0
  66. JE uzdarytiRasymui ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  67.  
  68. ;Duomenu keitimas
  69. MOV cx, ax
  70. MOV si, offset SkaitBuf
  71. ;MOV di, offset ResBuf
  72.  
  73. PUSH ax
  74.  
  75. dirbk:
  76. PUSH cx
  77. MOV dl, [si]
  78. CMP dl, '0'
  79. JB tesk
  80. CMP dl, '9'
  81. JA tesk
  82.  
  83. CMP dl, '0'
  84. JE nulisc
  85. CMP dl, '1'
  86. JE vienasc
  87. CMP dl, '2'
  88. JE duc
  89. CMP dl, '3'
  90. JE trysc
  91. CMP dl, '4'
  92. JE keturic
  93. CMP dl, '5'
  94. JE penkic
  95. CMP dl, '6'
  96. JE sesic
  97. CMP dl, '7'
  98. JE septynic
  99. CMP dl, '8'
  100. JE astuonic
  101. CMP dl, '9'
  102. JE devynic
  103.  
  104. nulisc:
  105. MOV ah, 40h
  106. MOV bx, DeskRez
  107. MOV dx, offset nulis
  108. MOV cx, 5
  109. INT 21h
  110. JC ErrorWrite
  111. JMP dummy
  112.  
  113. vienasc:
  114. MOV ah, 40h
  115. MOV bx, DeskRez
  116. MOV dx, offset vienas
  117. MOV cx, 6
  118. INT 21h
  119. JC ErrorWrite
  120. JMP dummy
  121.  
  122. duc:
  123. MOV ah, 40h
  124. MOV bx, DeskRez
  125. MOV dx, offset du
  126. MOV cx, 2
  127. INT 21h
  128. JC ErrorWrite
  129. JMP dummy
  130.  
  131. trysc:
  132. MOV ah, 40h
  133. MOV bx, DeskRez
  134. MOV dx, offset trys
  135. MOV cx, 4
  136. INT 21h
  137. JC ErrorWrite
  138. JMP dummy
  139.  
  140. keturic:
  141. MOV ah, 40h
  142. MOV bx, DeskRez
  143. MOV dx, offset keturi
  144. MOV cx, 6
  145. INT 21h
  146. JC ErrorWrite
  147. JMP dummy
  148.  
  149. penkic:
  150. MOV ah, 40h
  151. MOV bx, DeskRez
  152. MOV dx, offset penki
  153. MOV cx, 5
  154. INT 21h
  155. JC ErrorWrite
  156. JMP dummy
  157.  
  158. sesic:
  159. MOV ah, 40h
  160. MOV bx, DeskRez
  161. MOV dx, offset sesi
  162. MOV cx, 4
  163. INT 21h
  164. JC ErrorWrite
  165. JMP dummy
  166.  
  167. septynic:
  168. MOV ah, 40h
  169. MOV bx, DeskRez
  170. MOV dx, offset septyni
  171. MOV cx, 7
  172. INT 21h
  173. JC ErrorWrite
  174. JMP dummy
  175.  
  176. astuonic:
  177. MOV ah, 40h
  178. MOV bx, DeskRez
  179. MOV dx, offset astuoni
  180. MOV cx, 7
  181. INT 21h
  182. JC ErrorWrite
  183. JMP dummy
  184.  
  185. devynic:
  186. MOV ah, 40h
  187. MOV bx, DeskRez
  188. MOV dx, offset devyni
  189. MOV cx, 6
  190. INT 21h
  191. JC ErrorWrite
  192. JMP dummy
  193.  
  194.  
  195. tesk:
  196. MOV ah, 40h
  197. MOV bx, DeskRez
  198. MOV Char, dx
  199. MOV dx, offset Char
  200. MOV CX, 1
  201. INT 21h
  202. dummy:
  203. POP cx
  204. INC si
  205. LOOP dirbk
  206.  
  207. POP ax
  208. CMP ax, 10
  209. JE read
  210.  
  211.  
  212. Pabaiga:
  213.  
  214. uzdarytiRasymui:
  215. MOV ah, 3Eh
  216. MOV bx, DeskRez
  217. INT 21h
  218. JC ErrorCloseWrite
  219.  
  220. uzdarytiSkaitymui:
  221. MOV ah, 3Eh
  222. MOV bx, DeskDuom
  223. INT 21h
  224. JC ErrorCloseRead
  225.  
  226.  
  227. MOV ah, 4Ch
  228. MOV al, 0
  229. INT 21h
  230.  
  231.  
  232. ErrorCloseRead:
  233. mov ah, 9
  234. mov dx, offset ErrorCloseReadM
  235. int 21h
  236.  
  237. ErrorCloseWrite:
  238. mov ah, 9
  239. mov dx, offset ErrorCloseWriteM
  240. int 21h
  241.  
  242. ErrorWrite:
  243. mov ah, 9
  244. mov dx, offset ErrorWriteM
  245. int 21h
  246.  
  247. ErrorOpenRead:
  248. mov ah, 9
  249. mov dx, offset ErrorOpenReadM
  250. int 21h
  251.  
  252. ErrorOpenWrite:
  253. mov ah, 9
  254. mov dx, offset ErrorOpenWriteM
  255. int 21h
  256.  
  257. ;Proceduros
  258.  
  259. ;Skaitymo procedura
  260. PROC ReadBuf
  261. PUSH cx
  262. PUSH dx
  263.  
  264. MOV ah, 3Fh
  265. MOV cx, 10
  266. MOV dx, offset SkaitBuf
  267. INT 21h
  268. JC ErrorRead
  269.  
  270. SkaitykBufPabaiga:
  271. POP dx
  272. POP cx
  273. RET
  274.  
  275. ErrorRead:
  276.  
  277. mov ah, 9
  278. mov dx, offset ErrorReadM
  279. int 21h
  280.  
  281. MOV ax, 0
  282. JMP SkaitykBufPabaiga
  283. ReadBuf ENDP
  284. ;;;;;;;;;;;;;;;;;;;
  285.  
  286.  
  287. END pradzia
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement