Advertisement
Guest User

Untitled

a guest
Jan 1st, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1.  
  2. ; You may customize this and other start-up templates;
  3. ; The location of this template is c:\emu8086\inc\0_com_template.txt
  4.  
  5. org 100h
  6.  
  7.  
  8. .model small
  9.  
  10.  
  11. .stack 100
  12.  
  13.  
  14. .Data
  15. temp dw 0
  16. temp2 dw 0
  17. counter db 1
  18. index dw 0
  19. number dw 50 dup(?)
  20. buffer db 1024 dup(?)
  21. res dw 0
  22. lngw dw 0
  23. now db 0
  24. msg db " , ","$"
  25. msg1 db 0dH,0aH," list of digite in file "0dH,0aH,,"$"
  26. msg2 db 0dH,0aH," Add Result "0dH,0aH,,"$"
  27. msg3 db 0dH,0aH," list of sortes digite in file "0dH,0aH,,"$"
  28. start db " start final project:",0dH,0aH,"$"
  29. end_msg db 0dH,0aH,0dH,0aH,"press any key to exit." ,"$"
  30. line db 0dH,0aH,0dH,0aH,"==============================================================",0dH,0aH,0dH,0aH,"$"
  31. src db 'c:\source.txt',00H
  32. s_Handle dw ?
  33. text db "nm3kfl9nf32k100." ,0dH,0aH, "ljdcl jjds lkjd 54 .#"
  34. buffer_size dw ?
  35.  
  36.  
  37.  
  38. textsize = $ - offset text ;to calculate size of text it minus '$' wHicH is end of text string from start point of string
  39. .CODE
  40.  
  41. ;===================
  42. mov ax,@Data
  43. mov ds,ax
  44. mov ax,0
  45. ;===================
  46.  
  47.  
  48. ;print start message
  49.  
  50. mov dx,offset start
  51. mov aH,09H
  52. int 21H
  53.  
  54.  
  55. ; create and open file: c:\emu8086\vdrive\C\source.txt
  56. mov aH, 3cH
  57. mov cx, 0H
  58. lea dx, src
  59. int 21H
  60. jc err
  61. mov s_Handle, ax
  62.  
  63. ; write to c:\emu8086\vdrive\C\source.txt:
  64.  
  65. mov aH, 40H
  66. mov bx, s_Handle
  67. mov dx, offset text
  68. mov cx, textsize
  69. int 21H
  70.  
  71.  
  72. ; close c:\emu8086\vdrive\C\source.txt
  73. mov aH, 3eH
  74. mov bx, s_Handle
  75. int 21H
  76.  
  77. ;open source file
  78.  
  79. lea dx,src
  80. mov al,00H
  81. mov aH,3dH
  82. int 21H
  83.  
  84.  
  85. ;read source file
  86. mov ax,0
  87. mov bx,s_Handle
  88. mov buffer_size,1024
  89. mov aH,3fH
  90. lea dx,buffer
  91. mov cx,buffer_size
  92. int 21H
  93. jc err
  94. mov buffer_size,ax
  95.  
  96.  
  97.  
  98. ;close source file
  99. mov aH,3eH
  100. mov bx,s_Handle
  101. int 21H
  102. err:
  103. nop
  104. ; set degite in new arraye and add digite in ever section
  105. mov si,0
  106. mov di,0
  107. start0:
  108.  
  109.  
  110. cmp counter,4
  111. jb H
  112. call set_arraye
  113. H:
  114. mov al,buffer[si]
  115. cmp al,48
  116. jnb test2
  117. cmp counter,1
  118. je H1
  119. call set_arraye
  120.  
  121. H1:
  122. inc si
  123. cmp buffer[si],35
  124. je final
  125. jmp start0
  126.  
  127. test2:
  128. cmp al , 58
  129. jb action
  130. cmp counter,1
  131. je H2
  132. call set_arraye
  133. H2:
  134. inc si
  135. cmp buffer[si],35
  136. je final
  137. jmp start0
  138.  
  139. action:
  140. sub al,48
  141.  
  142. cmp counter,1
  143. je firstset
  144.  
  145. cmp counter,2
  146. je tenmull
  147. cmp counter,3
  148. je tenmull
  149.  
  150. firstset:
  151. mov aH,0
  152. mov temp,ax
  153. inc counter
  154. inc si
  155. jmp start0
  156. tenmull:
  157. mov aH,0
  158. mov bx,ax
  159. mov ax, temp
  160. mov dl,10
  161. mul dl
  162. add ax, bx
  163. mov temp,ax
  164. inc si
  165. inc counter
  166. jmp start0
  167.  
  168.  
  169.  
  170. final:
  171. ;print list of digite
  172. mov dx,offset msg1
  173. mov aH,09H
  174. int 21H
  175.  
  176. ;print list of digite
  177. mov si,0
  178. L:
  179. mov ax,number[si]
  180. call print_ax
  181. mov dx,offset msg
  182. mov aH,09H
  183. int 21H
  184. inc si
  185. inc si
  186. cmp si,index
  187. jb L
  188.  
  189.  
  190. call print_nl
  191.  
  192. ;print Result Add
  193. mov dx,offset msg2
  194. mov aH,09H
  195. int 21H
  196.  
  197. ;print result add
  198. mov ax,res
  199. call print_ax
  200. call print_nl
  201. mov temp,0
  202.  
  203. call sort_bubble
  204.  
  205.  
  206. ;print prompt message to end tHe program
  207. mov dx,offset end_msg
  208. mov aH,09H
  209. int 21H
  210.  
  211.  
  212.  
  213. ;wait for any key to end tHe program
  214. mov aH,0
  215. int 16H
  216. mov aH,4cH
  217. int 21H
  218.  
  219.  
  220. ret
  221.  
  222.  
  223. print_ax proc
  224. cmp ax, 0
  225. jne print_ax_r
  226. pusH ax
  227. mov al, '0'
  228. mov aH, 0eH
  229. int 10H
  230. pop ax
  231. ret
  232. print_ax_r:
  233. pusHa
  234. mov dx, 0
  235. cmp ax, 0
  236. je pn_done
  237. mov bx, 10
  238. div bx
  239. call print_ax_r
  240. mov ax, dx
  241. add al, 30H
  242. mov aH, 0eH
  243. int 10H
  244. jmp pn_done
  245. pn_done:
  246. popa
  247. ret
  248. endp
  249.  
  250. print_nl proc
  251. pusH ax
  252. pusH dx
  253. mov aH, 2
  254. mov dl, 0DH
  255. int 21H
  256. mov dl, 0AH
  257. int 21H
  258. pop dx
  259. pop ax
  260. ret
  261. endp
  262.  
  263.  
  264.  
  265. set_arraye proc
  266. mov di,index
  267. mov ax,temp
  268. mov number[di],0
  269. mov number[di],ax
  270. mov ax,number[di]
  271. inc di
  272. inc di
  273. mov index,di
  274. mov temp,0
  275. mov counter,1
  276. add ax,res
  277. mov res,ax
  278. ret
  279. endp
  280.  
  281.  
  282. sort_bubble proc
  283.  
  284.  
  285. ;sort list of digite
  286. mov cx,index
  287.  
  288. sort:
  289. cmp cx , 0
  290. jbe end_sort
  291.  
  292. mov si , 0
  293. mov di , 2
  294. for:
  295. mov ax , number[si]
  296. mov dx , number[di]
  297.  
  298. cmp dx , ax
  299. jbe loopinc
  300. xcHg dx , ax
  301. mov number[si] , ax
  302. mov number[di] , dx
  303. loopinc:
  304. inc si
  305. inc si
  306. inc di
  307. inc di
  308. cmp si,cx
  309. jb for
  310. dec cx
  311. jmp sort
  312. end_sort:
  313. ;print sortest list of Digite
  314. mov dx,offset msg3
  315. mov aH,09H
  316. int 21H
  317. ;print sortes list
  318. mov si,0
  319. mov bx,index
  320. for1:
  321. mov ax,number[si]
  322. call print_ax
  323. mov dx,offset msg
  324. mov aH,09H
  325. int 21H
  326.  
  327. inc si
  328. inc si
  329. cmp si,bx
  330. jb for1
  331. ret
  332. endp
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341. end
  342.  
  343.  
  344.  
  345.  
  346.  
  347. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement