Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;ACHTUNG!!!
- ;etot kod yavl'ayets'a svobodno rasprostron'ayemim i tak daleye
- ;mozhete yevo ispol'zovat' v svoih programmah
- org 0x7C00
- startboot: ;eta chast' zapuskayet vs'o
- cli
- xor ax,ax
- mov ds,ax
- mov es,ax
- mov ss,ax
- mov sp,0x7C00
- sti
- mov ax,2
- int 0x10
- mov dx,0
- call set_cursor_pos
- mov bp,msg
- mov cx,10
- call print_mes
- add dh,1
- call set_cursor_pos
- mov bp,con
- mov cx,14
- call print_mes
- cont:
- mov ah,0x10
- int 0x16
- cmp al,0xD
- jz kernel
- jmp cont
- kernel:
- mov ax,0
- mov es,ax
- mov bx,0x7E00 ; dl'a chego????????!!?! mozhno zhe shto ugodno postavit'
- mov ch,0 ;/ili net?
- mov cl,2
- mov dh,0
- mov dl,0x80
- mov al,2
- mov ah,2
- int 0x13
- jmp 0x7E00
- print_mes:
- mov bl,3
- mov ax,0x1301
- int 0x10
- ret
- set_cursor_pos:
- mov ah,2
- xor bh,bh
- int 0x10
- ret
- ;-------------------------------------------------
- msg db 'loading...',0
- con db 'press Enter...',0
- finish: times 0x1FE-finish+startboot db 0
- db 0x55,0xAA
- ;-------------------------------------------------------------------------------
- org 0x7E00
- startpr:
- mov ax,0x13
- int 0x10
- mov ax,0xA000
- mov es,ax
- mov di,57183 ;koordinata pervoy tochki
- mov ax,3240 ;i vtoroy
- call ris_liniyu
- vs:
- jmp vs
- ;-------------------------------------------------
- ris_liniyu:
- mov si, 320 ;\
- push ax
- xor dx,dx
- div si
- mov bx,dx
- pop ax
- xchg ax,di
- push ax ;pomen'ayet mestami yesli nado koordinati
- xor dx,dx
- div si
- pop ax
- xchg ax,di
- cmp bx,dx
- jl rl1_pom
- jmp ris_lin ;/
- rl1_pom:
- xchg ax,di
- ris_lin:
- mov [koor1],di
- xor cx,cx
- ;v si 320 uzhe
- push ax
- xor dx,dx
- div si
- mov bx,ax
- pop ax
- xchg ax,di
- push ax
- xor dx,dx
- div si
- cmp bx,ax
- jl vis_vverh
- jmp vis_vniz
- vis_vverh:
- sub ax,bx
- mov [visota],ax
- mov cl,1 ;parametr shto nado vverh
- jmp vvv_con
- vis_vniz:
- sub bx,ax
- mov [visota],bx
- vvv_con:
- pop ax
- xchg ax,di
- push ax
- xor dx,dx
- div si
- mov bx,dx
- pop ax
- xchg ax,di
- push ax
- xor dx,dx
- div si
- pop ax
- xchg ax,di
- sub bx,dx
- mov [shirina],bx ;shirinu vichislili
- push ax
- mov ax,[visota] ;nu i visotu
- ;v bx shirina
- mul [delitel]
- push ax
- push bx
- mov ax,[shirina]
- mov bx,[visota]
- cmp ax,bx
- pop bx
- pop ax
- jg rl_shir_bolsh
- rl_vis_bolsh:
- cmp bx,0 ;\
- jz rl_kost ; \
- jmp rl_vb_con ; malen'kiy kostil'
- rl_kost: ; /
- inc bx ;/
- rl_vb_con:
- xor dx,dx
- div bx
- mov si,ax ;tg, umnozhenniy na delitel', v si
- pop ax
- mov bx,ax
- push bx ;v konce kostil'
- xor dx,dx
- div [mnozh]
- mov bx,dx ;max. koordianata
- xor ax,ax ;y
- rl_loop_v:
- mov di,[koor1]
- push ax
- mul [mnozh]
- cmp cl,1
- jz rlv_vverh
- jmp rlv_vniz
- rlv_vverh:
- sub di,ax
- jmp rlv_prod
- rlv_vniz:
- add di,ax
- rlv_prod:
- pop ax
- push ax
- mul [delitel]
- xor dx,dx
- div si
- add di,ax
- pop ax
- inc ax
- push ax
- mov ax,di
- xor dx,dx
- div [mnozh]
- cmp dx,bx
- pop ax
- jg rl_end
- mov byte[es:di],15
- jmp rl_loop_v
- rl_shir_bolsh:
- dec bx
- xor dx,dx
- div bx
- mov si,ax ;tg, umnozhenniy na delitel', v si
- pop ax
- mov bx,ax
- push bx ;v konce kostil'
- xor dx,dx
- div [mnozh]
- mov bx,dx ;max. koordinata
- xor ax,ax ;x
- rl_loop_sh:
- mov di,[koor1]
- add di,ax
- push ax
- mul si
- xor dx,dx
- div [delitel]
- mul [mnozh]
- cmp cl,1
- jz rls_vverh
- jmp rls_vniz
- rls_vverh:
- sub di,ax
- jmp rls_prod
- rls_vniz:
- add di,ax
- rls_prod:
- pop ax
- inc ax
- push ax
- mov ax,di
- xor dx,dx
- div [mnozh]
- cmp dx,bx
- pop ax
- jg rl_end
- mov byte[es:di],15
- jmp rl_loop_sh
- rl_end:
- pop bx
- mov byte[es:bx],15 ;yesh'o 1 kostil'
- ret
- ;-------------------------------------------------
- shirina rw 1
- visota rw 1
- koor1 rw 1
- delitel dw 327
- mnozh dw 320
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement