Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 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. PUSH cx
  76.  
  77. dirbk:
  78. MOV dl, [si]
  79. CMP dl, '0'
  80. JB tesk
  81. CMP dl, '9'
  82. JA tesk
  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, DeskRez
  108. MOV dx, offset nulis
  109. MOV cx, 5
  110. INT 21h
  111. JC ErrorWrite
  112. JMP dummy
  113.  
  114. vienasc:
  115. MOV ah, 40h
  116. MOV bx, DeskRez
  117. MOV dx, offset vienas
  118. MOV cx, 6
  119. INT 21h
  120. JC ErrorWrite
  121. JMP dummy
  122.  
  123. duc:
  124. MOV ah, 40h
  125. MOV bx, DeskRez
  126. MOV dx, offset du
  127. MOV cx, 2
  128. INT 21h
  129. JC ErrorWrite
  130. JMP dummy
  131.  
  132. trysc:
  133. MOV ah, 40h
  134. MOV bx, DeskRez
  135. MOV dx, offset trys
  136. MOV cx, 4
  137. INT 21h
  138. JC ErrorWrite
  139. JMP dummy
  140.  
  141. keturic:
  142. MOV ah, 40h
  143. MOV bx, DeskRez
  144. MOV dx, offset keturi
  145. MOV cx, 6
  146. INT 21h
  147. JC ErrorWrite
  148. JMP dummy
  149.  
  150. penkic:
  151. MOV ah, 40h
  152. MOV bx, DeskRez
  153. MOV dx, offset penki
  154. MOV cx, 5
  155. INT 21h
  156. JC ErrorWrite
  157. JMP dummy
  158.  
  159. sesic:
  160. MOV ah, 40h
  161. MOV bx, DeskRez
  162. MOV dx, offset sesi
  163. MOV cx, 4
  164. INT 21h
  165. JC ErrorWrite
  166. JMP dummy
  167.  
  168. septynic:
  169. MOV ah, 40h
  170. MOV bx, DeskRez
  171. MOV dx, offset septyni
  172. MOV cx, 7
  173. INT 21h
  174. JC ErrorWrite
  175. JMP dummy
  176.  
  177. astuonic:
  178. MOV ah, 40h
  179. MOV bx, DeskRez
  180. MOV dx, offset astuoni
  181. MOV cx, 7
  182. INT 21h
  183. JC ErrorWrite
  184. JMP dummy
  185.  
  186. devynic:
  187. MOV ah, 40h
  188. MOV bx, DeskRez
  189. MOV dx, offset devyni
  190. MOV cx, 6
  191. INT 21h
  192. JC ErrorWrite
  193. JMP dummy
  194.  
  195.  
  196. tesk:
  197. MOV ah, 40h
  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