Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.18 KB | None | 0 0
  1. ;ACHTUNG!!!
  2. ;etot kod yavl'ayets'a svobodno rasprostron'ayemim i tak daleye
  3. ;mozhete yevo ispol'zovat' v svoih programmah
  4.  
  5. org 0x7C00
  6.  
  7. startboot: ;eta chast' zapuskayet vs'o
  8. cli
  9. xor ax,ax
  10. mov ds,ax
  11. mov es,ax
  12. mov ss,ax
  13. mov sp,0x7C00
  14. sti
  15. mov ax,2
  16. int 0x10
  17. mov dx,0
  18. call set_cursor_pos
  19. mov bp,msg
  20. mov cx,10
  21. call print_mes
  22. add dh,1
  23. call set_cursor_pos
  24. mov bp,con
  25. mov cx,14
  26. call print_mes
  27. cont:
  28. mov ah,0x10
  29. int 0x16
  30. cmp al,0xD
  31. jz kernel
  32. jmp cont
  33. kernel:
  34.  
  35. mov ax,0
  36. mov es,ax
  37. mov bx,0x7E00 ; dl'a chego????????!!?! mozhno zhe shto ugodno postavit'
  38. mov ch,0 ;/ili net?
  39. mov cl,2
  40. mov dh,0
  41. mov dl,0x80
  42. mov al,2
  43. mov ah,2
  44. int 0x13
  45. jmp 0x7E00
  46. print_mes:
  47. mov bl,3
  48. mov ax,0x1301
  49. int 0x10
  50. ret
  51. set_cursor_pos:
  52. mov ah,2
  53. xor bh,bh
  54. int 0x10
  55. ret
  56.  
  57. ;-------------------------------------------------
  58.  
  59. msg db 'loading...',0
  60. con db 'press Enter...',0
  61. finish: times 0x1FE-finish+startboot db 0
  62. db 0x55,0xAA
  63.  
  64.  
  65.  
  66. ;-------------------------------------------------------------------------------
  67.  
  68.  
  69.  
  70. org 0x7E00
  71.  
  72. startpr:
  73. mov ax,0x13
  74. int 0x10
  75. mov ax,0xA000
  76. mov es,ax
  77.  
  78. mov di,57183 ;koordinata pervoy tochki
  79. mov ax,3240 ;i vtoroy
  80.  
  81. call ris_liniyu
  82. vs:
  83. jmp vs
  84.  
  85. ;-------------------------------------------------
  86.  
  87. ris_liniyu:
  88. mov si, 320 ;\
  89. push ax
  90. xor dx,dx
  91. div si
  92. mov bx,dx
  93. pop ax
  94. xchg ax,di
  95. push ax ;pomen'ayet mestami yesli nado koordinati
  96. xor dx,dx
  97. div si
  98. pop ax
  99. xchg ax,di
  100.  
  101. cmp bx,dx
  102. jl rl1_pom
  103. jmp ris_lin ;/
  104. rl1_pom:
  105. xchg ax,di
  106. ris_lin:
  107. mov [koor1],di
  108.  
  109. xor cx,cx
  110. ;v si 320 uzhe
  111. push ax
  112. xor dx,dx
  113. div si
  114. mov bx,ax
  115. pop ax
  116. xchg ax,di
  117. push ax
  118. xor dx,dx
  119. div si
  120. cmp bx,ax
  121. jl vis_vverh
  122. jmp vis_vniz
  123. vis_vverh:
  124. sub ax,bx
  125. mov [visota],ax
  126. mov cl,1 ;parametr shto nado vverh
  127. jmp vvv_con
  128. vis_vniz:
  129. sub bx,ax
  130. mov [visota],bx
  131. vvv_con:
  132. pop ax
  133.  
  134. xchg ax,di
  135. push ax
  136. xor dx,dx
  137. div si
  138. mov bx,dx
  139. pop ax
  140. xchg ax,di
  141. push ax
  142. xor dx,dx
  143. div si
  144. pop ax
  145. xchg ax,di
  146. sub bx,dx
  147. mov [shirina],bx ;shirinu vichislili
  148.  
  149. push ax
  150. mov ax,[visota] ;nu i visotu
  151. ;v bx shirina
  152. mul [delitel]
  153. push ax
  154. push bx
  155. mov ax,[shirina]
  156. mov bx,[visota]
  157. cmp ax,bx
  158. pop bx
  159. pop ax
  160. jg rl_shir_bolsh
  161. rl_vis_bolsh:
  162. cmp bx,0 ;\
  163. jz rl_kost ; \
  164. jmp rl_vb_con ; malen'kiy kostil'
  165. rl_kost: ; /
  166. inc bx ;/
  167. rl_vb_con:
  168. xor dx,dx
  169. div bx
  170. mov si,ax ;tg, umnozhenniy na delitel', v si
  171. pop ax
  172. mov bx,ax
  173. push bx ;v konce kostil'
  174. xor dx,dx
  175. div [mnozh]
  176. mov bx,dx ;max. koordianata
  177. xor ax,ax ;y
  178. rl_loop_v:
  179. mov di,[koor1]
  180. push ax
  181. mul [mnozh]
  182. cmp cl,1
  183. jz rlv_vverh
  184. jmp rlv_vniz
  185. rlv_vverh:
  186. sub di,ax
  187. jmp rlv_prod
  188. rlv_vniz:
  189. add di,ax
  190. rlv_prod:
  191. pop ax
  192. push ax
  193. mul [delitel]
  194. xor dx,dx
  195. div si
  196. add di,ax
  197. pop ax
  198. inc ax
  199. push ax
  200. mov ax,di
  201. xor dx,dx
  202. div [mnozh]
  203. cmp dx,bx
  204. pop ax
  205. jg rl_end
  206. mov byte[es:di],15
  207. jmp rl_loop_v
  208. rl_shir_bolsh:
  209. dec bx
  210. xor dx,dx
  211. div bx
  212. mov si,ax ;tg, umnozhenniy na delitel', v si
  213. pop ax
  214. mov bx,ax
  215. push bx ;v konce kostil'
  216. xor dx,dx
  217. div [mnozh]
  218. mov bx,dx ;max. koordinata
  219. xor ax,ax ;x
  220. rl_loop_sh:
  221. mov di,[koor1]
  222. add di,ax
  223. push ax
  224. mul si
  225. xor dx,dx
  226. div [delitel]
  227. mul [mnozh]
  228. cmp cl,1
  229. jz rls_vverh
  230. jmp rls_vniz
  231. rls_vverh:
  232. sub di,ax
  233. jmp rls_prod
  234. rls_vniz:
  235. add di,ax
  236. rls_prod:
  237. pop ax
  238. inc ax
  239. push ax
  240. mov ax,di
  241. xor dx,dx
  242. div [mnozh]
  243. cmp dx,bx
  244. pop ax
  245. jg rl_end
  246. mov byte[es:di],15
  247. jmp rl_loop_sh
  248. rl_end:
  249. pop bx
  250. mov byte[es:bx],15 ;yesh'o 1 kostil'
  251. ret
  252.  
  253. ;-------------------------------------------------
  254.  
  255. shirina rw 1
  256. visota rw 1
  257. koor1 rw 1
  258. delitel dw 327
  259. mnozh dw 320
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement