Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*******************************************************
- ;*** PROGRAM DOMEK ***
- ;*** copyright 2003 ;) ***
- ;*******************************************************
- ;*** napisany przez ***
- ;***************** *********************
- ;*** Pawła Bochenka ***
- ;*** Sebastiana Gregorczyka ***
- ;*** Przemysława Umińskiego ***
- ;*** Tomasza Mycka ***
- ;*******************************************************
- ASSUME CS:CODE, SS:DSTACK, DS:DATA
- DSTACK SEGMENT STACK
- DB 64 DUP ('STACK')
- DSTACK ENDS
- DATA SEGMENT
- dlugosc_lini dw 0
- x dw 0
- kolor db 0
- pocz_x dw 0
- pocz_y dw 0
- szer_wyp dw 0
- wys_wyp dw 0
- DATA ENDS
- CODE SEGMENT
- Punkt PROC ; Procedura rysuje punkt
- push dx
- push di
- mov dl, kolor
- mov di,x
- mov es:[di+bx],dl
- pop di
- pop dx
- ret
- Punkt ENDP
- Przelicz_wsp PROC ; Procedura przelicza współrzędne punktu
- push cx
- push ax
- mov ax, pocz_x
- mov x, ax
- mov cx, pocz_y
- sss:
- add x, 320d
- loop sss
- pop ax
- pop cx
- ret
- Przelicz_wsp ENDP
- l_pion_d PROC ; Rysuje linię pionow± skierowan± w dół
- mov cx, dlugosc_lini
- call Przelicz_wsp
- aa:
- add x,320
- call Punkt
- loop aa
- ret
- l_pion_d ENDP
- l_pion_g PROC ; Rysuje linię pionow± skierowan± w górę
- mov cx, dlugosc_lini
- call Przelicz_wsp
- bb:
- sub x,320
- call Punkt
- loop bb
- ret
- l_pion_g ENDP
- l_poz_p PROC ; Rysuje linię poziom± skierowan± w prawo
- mov cx, dlugosc_lini
- call Przelicz_wsp
- cc:
- inc x
- call Punkt
- loop cc
- ret
- l_poz_p ENDP
- l_poz_l PROC ; Rysuje linię poziom± skierowan± w lewo
- mov cx, dlugosc_lini
- call Przelicz_wsp
- ee:
- dec x
- call Punkt
- loop ee
- ret
- l_poz_l ENDP
- l_skos_p PROC ; Rysuje linię sko¶n± skierowan± w prawo
- push cx
- mov cx, dlugosc_lini
- call Przelicz_wsp
- ff:
- add x,321
- call Punkt
- loop ff
- pop cx
- ret
- l_skos_p ENDP
- l_skos_l PROC ; Rysuje linię sko¶n± skierowan± w lewo
- push cx
- mov cx, dlugosc_lini
- call Przelicz_wsp
- gg:
- add x,319
- call Punkt
- loop gg
- pop cx
- ret
- l_skos_l ENDP
- Wypelnij PROC ; Rysuje wypełniony kwadrat
- push dx
- push di
- push cx
- call Przelicz_wsp
- mov dl, kolor
- mov cx,wys_wyp
- wyp0:
- push cx
- mov cx,szer_wyp
- wyp1:
- inc x
- mov di,x
- mov es:[di+bx],dl
- loop wyp1
- mov ax,szer_wyp
- sub x,ax
- add x,320
- pop cx
- loop wyp0
- pop cx
- pop di
- pop dx
- ret
- Wypelnij ENDP
- Trojkat PROC ; Rysuje wypełniony trójk±t
- push cx
- push dlugosc_lini
- mov cx, dlugosc_lini
- yy:
- mov pocz_x, 160
- call l_skos_l
- mov pocz_x, 160
- call l_skos_p
- inc pocz_y
- dec dlugosc_lini
- loop yy
- mov pocz_x, 160
- mov pocz_y, 45
- pop dlugosc_lini
- call l_pion_d
- pop cx
- ret
- Trojkat ENDP
- Start:
- mov ax,DATA
- mov ds,ax ;rejestr DS wskazuje nam segment z naszymi danymi
- mov ax,0013h ; uruchamia tryb graficzny 320*240
- int 10h
- mov ax,0A000h
- mov es,ax
- mov dlugosc_lini,0d ; ile razy
- mov x,0 ; ustawia współrzędn± x
- mov kolor,20 ; ustawia kolor
- ;DOM
- mov kolor,1
- mov pocz_x, 100
- mov pocz_y, 110
- mov wys_wyp,60
- mov szer_wyp,120
- call Wypelnij
- ; DASZEK
- mov pocz_y, 45
- mov dlugosc_lini, 70
- mov kolor, 6
- call Trojkat
- ;KOMIN
- mov pocz_x, 190
- mov pocz_y, 70
- mov wys_wyp,29
- mov szer_wyp,20
- call Wypelnij
- ;OKNO
- mov kolor, 16
- mov pocz_x, 110
- mov pocz_y, 120
- mov dlugosc_lini, 40
- call l_poz_p
- mov pocz_x, 110
- mov pocz_y, 120
- mov dlugosc_lini, 30
- call l_pion_d
- mov pocz_x, 150
- mov pocz_y, 120
- mov dlugosc_lini, 30
- call l_pion_d
- mov pocz_x, 150
- mov pocz_y, 150
- mov dlugosc_lini, 40
- call l_poz_l
- ;DRZWI
- mov kolor, 16
- mov pocz_x, 170
- mov pocz_y, 170
- mov dlugosc_lini, 40
- call l_pion_g
- mov pocz_x, 200
- mov pocz_y, 170
- mov dlugosc_lini, 40
- call l_pion_g
- mov pocz_x, 170
- mov pocz_y, 130
- mov dlugosc_lini, 30
- call l_poz_p
- ;KLAMKA
- mov pocz_x, 170
- mov pocz_y, 150
- mov dlugosc_lini, 5
- call l_poz_p
- ; TRAWA
- mov kolor, 165
- mov pocz_x, 0
- mov pocz_y, 170
- mov wys_wyp,29
- mov szer_wyp,320
- call Wypelnij
- xor ax,ax ; czeka na klawisz
- int 16h
- mov ax,0003h ; wraca do trybu dosowego
- int 10h
- mov ax,4c00h ;zakończ
- int 21h
- CODE ENDS
- END Start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement