Advertisement
Guest User

Untitled

a guest
Mar 10th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .286
  2. MODEL small
  3. STACK 256
  4. pic_width  equ 5
  5. pic_height equ 6
  6.  
  7. DATASEG
  8.   pic  db 0,0,0,0,0
  9.        db 0,2,0,2,0
  10.        db 0,0,2,0,0
  11.        db 0,2,0,2,0
  12.        db 0,2,2,2,0
  13.        db 0,0,0,0,0
  14.  
  15.   picX dw 160 - pic_width/2
  16.   picY dw 100 - pic_height/2
  17.  
  18. CODESEG
  19.   Start:
  20.   mov ax, @data
  21.   mov ds, ax
  22.   mov ax, 013h               ; init graph mode
  23.   int 010h
  24.   mov ax, 0A000h
  25.   mov es, ax
  26.  
  27.   call DrawPic
  28.  
  29. maincycle:
  30.   call ReadKey
  31.   dec ah
  32.   jnz maincycle
  33.  
  34.   mov ax, 02h                ; restore text mode
  35.   int 010h
  36.  
  37.   mov ah, 04Ch               ; the end
  38.   int 021h
  39.  
  40.   ReadKey:
  41.     mov ah, 0
  42.     int 016h
  43.     cmp ah, 75                 ; Left
  44.     jne Skip1
  45.     dec PicX
  46. Skip1:
  47.     cmp ah, 77                 ; Right
  48.     jne Skip2
  49.     inc PicX
  50. Skip2:
  51.     cmp ah, 72                 ; Up
  52.     jne Skip3
  53.     dec PicY
  54. Skip3:
  55.     cmp ah, 80                 ; Down
  56.     jne Skip4
  57.     inc PicY
  58. Skip4:
  59.     ret
  60.  
  61.     PutPixel:
  62. ; AX<-X, BX<-Y, DL<-Color
  63.  
  64.         mov di, 0
  65.     mov dx, bx
  66.     shl dx, 8
  67.     shl bx, 6
  68.     add di, ax
  69.     add di, bx
  70.     add di, dx
  71.     mov al, cl
  72.     stosb
  73.     ret
  74. DrawPic:
  75.         mov dh, pic_height
  76.         mov dl, pic_width
  77.         push 320
  78.         call GenerateRandomNumber ;now we have in x rnd number from 0 - 320
  79.         push ax
  80.         push 200
  81.         call GenerateRandomNumber ;now we have in x rnd number from 0 - 200
  82.         mov bx, ax
  83.         pop ax
  84.         lea si, pic  ;mov si,offset pic
  85. cycle:
  86.         mov cl, byte ptr[si]
  87.         pusha
  88.         call PutPixel
  89.         popa
  90.         inc si
  91.         inc ax
  92.        dec dl
  93.         jnz cycle                  ; X loop
  94.         mov dl, pic_width
  95.         sub ax, pic_width
  96.         inc bx
  97.        
  98.         dec dh
  99.         jnz cycle                  ; Y loop
  100. ret
  101.  
  102. ;---------------------------------------------------------------->
  103. ;- Parameters: one number.
  104. ;- action: Generates random number from zero to given number.
  105. ;  and returns the random number in ax...
  106. ;- author: Or Gany
  107.  
  108. GenerateRandomNumber:
  109. ;----used registers--->
  110.     push cx
  111.     push dx
  112. ;--------------------->
  113.     push bp
  114.     mov bp, sp
  115.    
  116.     mov ah, 2ch
  117.     int 21h
  118.     mov ax, dx
  119.     mov dx, [bp + 8]
  120.     div dx
  121.     mov ax,dx
  122.    
  123. ;----used registers--->
  124.     pop dx
  125.     pop cx
  126.     pop bp
  127. ;--------------------->
  128. ret 2
  129.  
  130. END Start
  131. ;-----------------------END OF PROCEDURE------------------------->
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement