Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .286
- MODEL small
- STACK 256
- pic_width equ 5
- pic_height equ 6
- DATASEG
- pic db 0,0,0,0,0
- db 0,2,0,2,0
- db 0,0,2,0,0
- db 0,2,0,2,0
- db 0,2,2,2,0
- db 0,0,0,0,0
- picX dw 160 - pic_width/2
- picY dw 100 - pic_height/2
- CODESEG
- Start:
- mov ax, @data
- mov ds, ax
- mov ax, 013h ; init graph mode
- int 010h
- mov ax, 0A000h
- mov es, ax
- call DrawPic
- maincycle:
- call ReadKey
- dec ah
- jnz maincycle
- mov ax, 02h ; restore text mode
- int 010h
- mov ah, 04Ch ; the end
- int 021h
- ReadKey:
- mov ah, 0
- int 016h
- cmp ah, 75 ; Left
- jne Skip1
- dec PicX
- Skip1:
- cmp ah, 77 ; Right
- jne Skip2
- inc PicX
- Skip2:
- cmp ah, 72 ; Up
- jne Skip3
- dec PicY
- Skip3:
- cmp ah, 80 ; Down
- jne Skip4
- inc PicY
- Skip4:
- ret
- PutPixel:
- ; AX<-X, BX<-Y, DL<-Color
- mov di, 0
- mov dx, bx
- shl dx, 8
- shl bx, 6
- add di, ax
- add di, bx
- add di, dx
- mov al, cl
- stosb
- ret
- DrawPic:
- mov dh, pic_height
- mov dl, pic_width
- push 320
- call GenerateRandomNumber ;now we have in x rnd number from 0 - 320
- push ax
- push 200
- call GenerateRandomNumber ;now we have in x rnd number from 0 - 200
- mov bx, ax
- pop ax
- lea si, pic ;mov si,offset pic
- cycle:
- mov cl, byte ptr[si]
- pusha
- call PutPixel
- popa
- inc si
- inc ax
- dec dl
- jnz cycle ; X loop
- mov dl, pic_width
- sub ax, pic_width
- inc bx
- dec dh
- jnz cycle ; Y loop
- ret
- ;---------------------------------------------------------------->
- ;- Parameters: one number.
- ;- action: Generates random number from zero to given number.
- ; and returns the random number in ax...
- ;- author: Or Gany
- GenerateRandomNumber:
- ;----used registers--->
- push cx
- push dx
- ;--------------------->
- push bp
- mov bp, sp
- mov ah, 2ch
- int 21h
- mov ax, dx
- mov dx, [bp + 8]
- div dx
- mov ax,dx
- ;----used registers--->
- pop dx
- pop cx
- pop bp
- ;--------------------->
- ret 2
- END Start
- ;-----------------------END OF PROCEDURE------------------------->
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement