Advertisement
Guest User

domek

a guest
Dec 15th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.68 KB | None | 0 0
  1. ;*******************************************************
  2. ;*** PROGRAM DOMEK ***
  3. ;*** copyright 2003 ;) ***
  4. ;*******************************************************
  5. ;*** napisany przez ***
  6. ;***************** *********************
  7. ;*** Pawła Bochenka ***
  8. ;*** Sebastiana Gregorczyka ***
  9. ;*** Przemysława Umińskiego ***
  10. ;*** Tomasza Mycka ***
  11. ;*******************************************************
  12.  
  13.  
  14. ASSUME CS:CODE, SS:DSTACK, DS:DATA
  15.  
  16. DSTACK SEGMENT STACK
  17. DB 64 DUP ('STACK')
  18. DSTACK ENDS
  19.  
  20.  
  21. DATA SEGMENT
  22.  
  23. dlugosc_lini dw 0
  24. x dw 0
  25. kolor db 0
  26.  
  27. pocz_x dw 0
  28. pocz_y dw 0
  29.  
  30. szer_wyp dw 0
  31. wys_wyp dw 0
  32. DATA ENDS
  33.  
  34.  
  35.  
  36.  
  37. CODE SEGMENT
  38.  
  39.  
  40. Punkt PROC ; Procedura rysuje punkt
  41. push dx
  42. push di
  43.  
  44. mov dl, kolor
  45. mov di,x
  46. mov es:[di+bx],dl
  47.  
  48. pop di
  49. pop dx
  50. ret
  51. Punkt ENDP
  52.  
  53.  
  54. Przelicz_wsp PROC ; Procedura przelicza współrzędne punktu
  55. push cx
  56. push ax
  57.  
  58. mov ax, pocz_x
  59. mov x, ax
  60. mov cx, pocz_y
  61. sss:
  62. add x, 320d
  63. loop sss
  64.  
  65. pop ax
  66. pop cx
  67. ret
  68. Przelicz_wsp ENDP
  69.  
  70. l_pion_d PROC ; Rysuje linię pionow± skierowan± w dół
  71. mov cx, dlugosc_lini
  72.  
  73. call Przelicz_wsp
  74. aa:
  75. add x,320
  76. call Punkt
  77. loop aa
  78. ret
  79. l_pion_d ENDP
  80.  
  81. l_pion_g PROC ; Rysuje linię pionow± skierowan± w górę
  82. mov cx, dlugosc_lini
  83.  
  84. call Przelicz_wsp
  85. bb:
  86. sub x,320
  87. call Punkt
  88. loop bb
  89. ret
  90. l_pion_g ENDP
  91.  
  92.  
  93.  
  94. l_poz_p PROC ; Rysuje linię poziom± skierowan± w prawo
  95. mov cx, dlugosc_lini
  96.  
  97. call Przelicz_wsp
  98. cc:
  99. inc x
  100. call Punkt
  101. loop cc
  102. ret
  103. l_poz_p ENDP
  104.  
  105. l_poz_l PROC ; Rysuje linię poziom± skierowan± w lewo
  106. mov cx, dlugosc_lini
  107.  
  108. call Przelicz_wsp
  109. ee:
  110. dec x
  111. call Punkt
  112. loop ee
  113. ret
  114. l_poz_l ENDP
  115.  
  116. l_skos_p PROC ; Rysuje linię sko¶n± skierowan± w prawo
  117. push cx
  118. mov cx, dlugosc_lini
  119.  
  120. call Przelicz_wsp
  121. ff:
  122. add x,321
  123. call Punkt
  124. loop ff
  125. pop cx
  126. ret
  127. l_skos_p ENDP
  128.  
  129. l_skos_l PROC ; Rysuje linię sko¶n± skierowan± w lewo
  130. push cx
  131. mov cx, dlugosc_lini
  132.  
  133. call Przelicz_wsp
  134. gg:
  135. add x,319
  136. call Punkt
  137. loop gg
  138. pop cx
  139. ret
  140. l_skos_l ENDP
  141.  
  142. Wypelnij PROC ; Rysuje wypełniony kwadrat
  143. push dx
  144. push di
  145. push cx
  146.  
  147. call Przelicz_wsp
  148.  
  149. mov dl, kolor
  150. mov cx,wys_wyp
  151. wyp0:
  152. push cx
  153. mov cx,szer_wyp
  154. wyp1:
  155. inc x
  156. mov di,x
  157. mov es:[di+bx],dl
  158. loop wyp1
  159. mov ax,szer_wyp
  160. sub x,ax
  161. add x,320
  162. pop cx
  163. loop wyp0
  164.  
  165. pop cx
  166. pop di
  167. pop dx
  168. ret
  169. Wypelnij ENDP
  170.  
  171. Trojkat PROC ; Rysuje wypełniony trójk±t
  172. push cx
  173. push dlugosc_lini
  174. mov cx, dlugosc_lini
  175. yy:
  176. mov pocz_x, 160
  177. call l_skos_l
  178.  
  179. mov pocz_x, 160
  180. call l_skos_p
  181. inc pocz_y
  182. dec dlugosc_lini
  183. loop yy
  184.  
  185. mov pocz_x, 160
  186. mov pocz_y, 45
  187. pop dlugosc_lini
  188. call l_pion_d
  189. pop cx
  190. ret
  191. Trojkat ENDP
  192.  
  193.  
  194.  
  195. Start:
  196. mov ax,DATA
  197. mov ds,ax ;rejestr DS wskazuje nam segment z naszymi danymi
  198.  
  199.  
  200. mov ax,0013h ; uruchamia tryb graficzny 320*240
  201. int 10h
  202. mov ax,0A000h
  203. mov es,ax
  204.  
  205. mov dlugosc_lini,0d ; ile razy
  206. mov x,0 ; ustawia współrzędn± x
  207. mov kolor,20 ; ustawia kolor
  208.  
  209.  
  210. ;DOM
  211. mov kolor,1
  212. mov pocz_x, 100
  213. mov pocz_y, 110
  214. mov wys_wyp,60
  215. mov szer_wyp,120
  216. call Wypelnij
  217.  
  218.  
  219.  
  220.  
  221. ; DASZEK
  222. mov pocz_y, 45
  223. mov dlugosc_lini, 70
  224. mov kolor, 6
  225. call Trojkat
  226.  
  227.  
  228. ;KOMIN
  229. mov pocz_x, 190
  230. mov pocz_y, 70
  231. mov wys_wyp,29
  232. mov szer_wyp,20
  233. call Wypelnij
  234.  
  235.  
  236.  
  237. ;OKNO
  238. mov kolor, 16
  239.  
  240. mov pocz_x, 110
  241. mov pocz_y, 120
  242. mov dlugosc_lini, 40
  243. call l_poz_p
  244.  
  245. mov pocz_x, 110
  246. mov pocz_y, 120
  247. mov dlugosc_lini, 30
  248. call l_pion_d
  249.  
  250. mov pocz_x, 150
  251. mov pocz_y, 120
  252. mov dlugosc_lini, 30
  253. call l_pion_d
  254.  
  255. mov pocz_x, 150
  256. mov pocz_y, 150
  257. mov dlugosc_lini, 40
  258. call l_poz_l
  259.  
  260.  
  261. ;DRZWI
  262. mov kolor, 16
  263.  
  264. mov pocz_x, 170
  265. mov pocz_y, 170
  266. mov dlugosc_lini, 40
  267. call l_pion_g
  268.  
  269. mov pocz_x, 200
  270. mov pocz_y, 170
  271. mov dlugosc_lini, 40
  272. call l_pion_g
  273.  
  274. mov pocz_x, 170
  275. mov pocz_y, 130
  276. mov dlugosc_lini, 30
  277. call l_poz_p
  278.  
  279. ;KLAMKA
  280. mov pocz_x, 170
  281. mov pocz_y, 150
  282. mov dlugosc_lini, 5
  283. call l_poz_p
  284.  
  285.  
  286.  
  287.  
  288. ; TRAWA
  289. mov kolor, 165
  290. mov pocz_x, 0
  291. mov pocz_y, 170
  292. mov wys_wyp,29
  293. mov szer_wyp,320
  294. call Wypelnij
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301. xor ax,ax ; czeka na klawisz
  302. int 16h
  303.  
  304. mov ax,0003h ; wraca do trybu dosowego
  305. int 10h
  306.  
  307. mov ax,4c00h ;zakończ
  308. int 21h
  309.  
  310.  
  311.  
  312. CODE ENDS
  313. END Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement