Advertisement
Guest User

Untitled

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