Advertisement
xAhikox

Untitled

Jan 26th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;podzielniki czestotliwosci
  2. TC equ 9083;36060; 1.19MHz/33Hz
  3. TD equ 8095;32162; 1.19MHz/37Hz
  4. TE equ 7212;29024; 1.19MHz/41Hz
  5. TF equ 6800;27045; 1.19MHz/44Hz
  6. TG equ 6071;24285; 1.19MHz/49Hz
  7. TA equ 5409;21636; 1.19MHz/55Hz
  8. TH equ 4817;19193; 1.19MHz/62Hz
  9. TP equ 1;pauza
  10. ;Q koniec melodii
  11. Progr segment
  12. assume cs:Progr,ss:stosik,ds:dane;
  13.  
  14.  
  15.  
  16.  
  17.  
  18. println proc
  19. mov ah,09h
  20. int 21h
  21. ret
  22. endp
  23.  
  24. readln proc
  25. mov ah,0ah
  26. int 21h
  27. ret
  28. endp
  29.  
  30. no_file proc
  31. lea dx,napis1
  32. call println
  33. jmp exit
  34. endp
  35.  
  36. close_file proc
  37. mov ah,3Eh
  38. mov bx,fileHandle
  39. int 21h
  40. ret
  41. endp
  42.  
  43. open_file proc
  44. mov dx,offset plik
  45. mov ah,3dh
  46. mov al,0
  47. int 21h
  48. jc no_file
  49. mov fileHandle,ax
  50. ret
  51. endp
  52.  
  53. read_file proc
  54. push cx
  55. push dx;
  56. mov bx,fileHandle
  57. mov cx,3
  58. lea dx,bufor;
  59. mov ah,3Fh
  60. int 21h
  61. pop dx
  62. pop cx
  63. ret;
  64. endp;
  65.  
  66.  
  67.  
  68.  
  69.  
  70. nuta proc
  71. push dx;
  72. push cx;
  73. mov cx,7;
  74. mov dx,65535;
  75. mov ah,86h;
  76. int 15h
  77. pop cx
  78. pop dx
  79. ret
  80. nuta endp;
  81.  
  82. polnuta proc
  83. push dx;
  84. push cx;
  85. mov cx,3;
  86. mov dx,65535;
  87. mov ah,86h;
  88. int 15h
  89. pop cx
  90. pop dx
  91. ret
  92. polnuta endp;
  93.  
  94. cwiercnuta proc
  95. push dx;
  96. push cx;
  97. mov cx,1;
  98. mov dx,65535;
  99. mov ah,86h;
  100. int 15h
  101. pop cx
  102. pop dx
  103. ret
  104. cwiercnuta endp;
  105.  
  106. osemka proc
  107. push dx;
  108. push cx;
  109. mov cx,0;
  110. mov dx,32000;
  111. mov ah,86h;
  112. int 15h
  113. pop cx
  114. pop dx
  115. ret
  116. osemka endp;
  117.  
  118. speakerON proc
  119.  
  120. mov ax,ton
  121. out 42h,al
  122. mov al,ah
  123. out 42h,al
  124.  
  125. in al,61h;
  126. or al,00000011b;
  127. out 61h,al;
  128. ret
  129. endp
  130.  
  131. speakerOFF proc
  132. in al,61h;
  133. and al,11111100b;
  134. out 61h,al;
  135. ret
  136. endp;
  137.  
  138. play proc
  139. call speakerON
  140. cmp czas,1
  141. je cala
  142. cmp czas,2
  143. je pol
  144. cmp czas,4
  145. je cwierc
  146. cmp czas,8
  147. je eight
  148. jmp endplay
  149.  
  150. cala: call nuta
  151. jmp endplay
  152. pol: call polnuta
  153. jmp endplay
  154. cwierc: call cwiercnuta
  155. jmp endplay
  156. eight: call osemka
  157. jmp endplay
  158. endplay:
  159. call speakerOFF
  160. ret
  161. endp
  162.  
  163.  
  164.  
  165. println1 proc
  166. mov al,bufor
  167. mov ah,0eh
  168. int 10h
  169.  
  170.  
  171. ret
  172. endp
  173. ;--------------------------------------------------------------------
  174. start: mov ax,dane
  175. mov ds,ax
  176. mov ax,stosik
  177. mov ss,ax
  178. mov sp,offset szczyt
  179.  
  180.  
  181. mov ah, 62h
  182. int 21h
  183. mov es,bx
  184. mov al,es:[0080h]
  185. mov cl,al
  186. sub cl,2
  187. mov si,0
  188. cmp al,0
  189. jbe brak
  190. przepisywanie:
  191. mov al,es:[0081h+si+1]
  192. lea bx,plik
  193. mov ds:[bx+si],al
  194. cmp cl,0
  195. je end_przepisywanie
  196. dec cl
  197. inc si
  198. jmp przepisywanie
  199. end_przepisywanie:
  200.  
  201.  
  202.  
  203. lea dx,napis3
  204. call println
  205. call open_file
  206.  
  207. melodia:
  208. call read_file
  209. call println1
  210. mov dl,bufor(0)
  211. cmp dl,'Q'
  212. je exit1
  213.  
  214. cmp dl,'C'
  215. je do
  216. cmp dl,'D'
  217. je re
  218. cmp dl,'E'
  219. je mi
  220. cmp dl,'F'
  221. je fa
  222. cmp dl,'G'
  223. je so
  224. cmp dl,'A'
  225. je la
  226. cmp dl,'H'
  227. je Zi
  228. cmp dl,'P'
  229. je pauza
  230.  
  231.  
  232. graj:
  233. mov cl,bufor(1)
  234. sub cl,30h
  235.  
  236. shr ton,cl;
  237. graj1:
  238. mov cl,bufor(2)
  239. sub cl,30h
  240. mov czas,cl
  241.  
  242. call play;
  243.  
  244. mov ah,0Bh
  245. int 21h
  246. cmp al,0
  247. jne exit
  248. jmp melodia;
  249.  
  250. brak:
  251. call no_file
  252. jmp exit
  253.  
  254. exit1:
  255. jmp exit
  256.  
  257. do: mov ton,TC
  258. jmp graj
  259. re: mov ton,TD
  260. jmp graj
  261. mi: mov ton,TE
  262. jmp graj
  263. fa: mov ton,TF
  264. jmp graj
  265. so: mov ton,TG
  266. jmp graj
  267. la: mov ton,TA
  268. jmp graj
  269. zi: mov ton,TH
  270. jmp graj
  271. pauza: mov ton,TP
  272. jmp graj1
  273.  
  274. exit:
  275. call close_file
  276. lea dx,napis4
  277. call println
  278. mov ah,4ch
  279. mov al,00h
  280. int 21h;
  281.  
  282. Progr ends;
  283.  
  284.  
  285. dane segment
  286.  
  287. ton dw 0
  288. czas db 0
  289.  
  290.  
  291. plik db HotelCalifornia.txt
  292.  
  293. fileHandle dw 0
  294. bufor db 3 dup(0)
  295.  
  296. napis1 db 10,13,' Plik nie istnieje !!!$';
  297. napis3 db '******************************',10,13,'* Witam w Programie grajacym *',10,13,'******************************',10,13,'$'
  298. napis4 db 10,13,' THE END !$'
  299. enterr db 10,13,10,13,'$'
  300. dane ends
  301.  
  302.  
  303. stosik segment
  304. dw 100h dup(0)
  305. szczyt label word
  306. stosik ends
  307. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement