Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 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 ReadBuf
  71. ;MOV di, offset ResBuf
  72.  
  73. PUSH ax
  74.  
  75. dirbk:
  76. ;MOV dl, [si]
  77. ;CMP dl, '0'
  78. ;JB tesk
  79. ;CMP dl, '9'
  80. ;JA tesk
  81.  
  82. PUSH cx
  83.  
  84. CMP dl, '0'
  85. JE nulisc
  86. CMP dl, '1'
  87. JE vienasc
  88. CMP dl, '2'
  89. JE duc
  90. CMP dl, '3'
  91. JE trysc
  92. CMP dl, '4'
  93. JE keturic
  94. CMP dl, '5'
  95. JE penkic
  96. CMP dl, '6'
  97. JE sesic
  98. CMP dl, '7'
  99. JE septynic
  100. CMP dl, '8'
  101. JE astuonic
  102. CMP dl, '9'
  103. JE devynic
  104.  
  105. nulisc:
  106. MOV ah, 40h
  107. MOV bx, 0
  108. MOV dx, offset nulis
  109. MOV cx, 5
  110. INT 21h
  111. JC ErrorWrite
  112. LOOP dirbk
  113.  
  114. vienasc:
  115. MOV ah, 40h
  116. MOV bx, 0
  117. MOV dx, offset vienas
  118. MOV cx, 6
  119. INT 21h
  120. JC ErrorWrite
  121. LOOP dirbk
  122.  
  123. duc:
  124. MOV ah, 40h
  125. MOV bx, 0
  126. MOV dx, offset du
  127. MOV cx, 2
  128. INT 21h
  129. JC ErrorWrite
  130. LOOP dirbk
  131.  
  132. trysc:
  133. MOV ah, 40h
  134. MOV bx, 0
  135. MOV dx, offset trys
  136. MOV cx, 4
  137. INT 21h
  138. JC ErrorWrite
  139. LOOP dirbk
  140.  
  141. keturic:
  142. MOV ah, 40h
  143. MOV bx, 0
  144. MOV dx, offset keturi
  145. MOV cx, 6
  146. INT 21h
  147. JC ErrorWrite
  148. LOOP dirbk
  149.  
  150. penkic:
  151. MOV ah, 40h
  152. MOV bx, 0
  153. MOV dx, offset penki
  154. MOV cx, 5
  155. INT 21h
  156. JC ErrorWrite
  157. LOOP dirbk
  158.  
  159. sesic:
  160. MOV ah, 40h
  161. MOV bx, 0
  162. MOV dx, offset sesi
  163. MOV cx, 4
  164. INT 21h
  165. JC ErrorWrite
  166. LOOP dirbk
  167.  
  168. septynic:
  169. MOV ah, 40h
  170. MOV bx, 0
  171. MOV dx, offset septyni
  172. MOV cx, 7
  173. INT 21h
  174. JC ErrorWrite
  175. LOOP dirbk
  176.  
  177. astuonic:
  178. MOV ah, 40h
  179. MOV bx, 0
  180. MOV dx, offset astuoni
  181. MOV cx, 7
  182. INT 21h
  183. JC ErrorWrite
  184. LOOP dirbk
  185.  
  186. devynic:
  187. MOV ah, 40h
  188. MOV bx, 0
  189. MOV dx, offset devyni
  190. MOV cx, 6
  191. INT 21h
  192. JC ErrorWrite
  193. LOOP dirbk
  194.  
  195.  
  196. tesk:
  197. MOV ah, 40h
  198. MOV Char, dx
  199. MOV dx, offset Char
  200. INT 21h
  201. POP cx
  202. INC si
  203. LOOP dirbk
  204.  
  205. POP ax
  206. CMP ax, 10
  207. JE read
  208.  
  209.  
  210. Pabaiga:
  211.  
  212. uzdarytiRasymui:
  213. MOV ah, 3Eh
  214. MOV bx, DeskRez
  215. INT 21h
  216. JC ErrorCloseWrite
  217.  
  218. uzdarytiSkaitymui:
  219. MOV ah, 3Eh
  220. MOV bx, DeskDuom
  221. INT 21h
  222. JC ErrorCloseRead
  223.  
  224.  
  225. MOV ah, 4Ch
  226. MOV al, 0
  227. INT 21h
  228.  
  229.  
  230. ErrorCloseRead:
  231. mov ah, 9
  232. mov dx, offset ErrorCloseReadM
  233. int 21h
  234.  
  235. ErrorCloseWrite:
  236. mov ah, 9
  237. mov dx, offset ErrorCloseWriteM
  238. int 21h
  239.  
  240. ErrorWrite:
  241. mov ah, 9
  242. mov dx, offset ErrorWriteM
  243. int 21h
  244.  
  245. ErrorOpenRead:
  246. mov ah, 9
  247. mov dx, offset ErrorOpenReadM
  248. int 21h
  249.  
  250. ErrorOpenWrite:
  251. mov ah, 9
  252. mov dx, offset ErrorOpenWriteM
  253. int 21h
  254.  
  255. ;Proceduros
  256.  
  257. ;Skaitymo procedura
  258. PROC ReadBuf
  259. PUSH cx
  260. PUSH dx
  261.  
  262. MOV ah, 3Fh
  263. MOV cx, 10
  264. MOV dx, offset SkaitBuf
  265. INT 21h
  266. JC ErrorRead
  267.  
  268. SkaitykBufPabaiga:
  269. POP dx
  270. POP cx
  271. RET
  272.  
  273. ErrorRead:
  274.  
  275. mov ah, 9
  276. mov dx, offset ErrorReadM
  277. int 21h
  278.  
  279. MOV ax, 0
  280. JMP SkaitykBufPabaiga
  281. ReadBuf ENDP
  282. ;;;;;;;;;;;;;;;;;;;
  283.  
  284.  
  285. END pradzia
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement