Advertisement
Guest User

Untitled

a guest
May 14th, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. STACKSG SEGMENT PARA STACK 'Stack'
  2.                 DW 32 DUP(?)
  3. STACKSG ENDS
  4. ;############    DATA SEGMENT    ##########
  5. DATASG SEGMENT PARA 'Data'
  6. NAMEPAR LABEL   BYTE
  7. r_end DW 00h
  8. l_end DW 00h
  9. DeltaT DW 00h
  10. DATASG ENDS
  11. ;############    CODE SEGMENT    ##########
  12. CODESG SEGMENT PARA 'Code'
  13. BEGIN PROC FAR
  14. ASSUME CS:CODESG, DS:DATASG, SS:STACKSG
  15.        PUSH   DS
  16.        SUB    AX, AX
  17.        PUSH   AX
  18.        MOV    AX, DATASG
  19.        MOV    DS, AX
  20.        
  21. MOV AH, 0   ; SET DISPLAY MODE FUNCTION.
  22. MOV AL, 13h ; MODE 13H = 320X200 PIXELS, 256 COLORS.
  23. INT 10h     ; SET IT!
  24.  
  25. mov dx,3c8h
  26. mov al,1        ; color # 1
  27. out dx,al
  28. mov dx,3c9h
  29. mov al,63       ; red value
  30. out dx,al
  31. mov al,63       ; green value
  32. out dx,al
  33. mov al,63       ; blue value
  34. out dx,al
  35.  
  36. mov dx,3c8h
  37. mov al,2        ; color # 2
  38. out dx,al
  39. mov dx,3c9h
  40. mov al,0        ; red value
  41. out dx,al
  42. mov al,0        ; green value
  43. out dx,al
  44. mov al,0        ; blue value
  45. out dx,al
  46.  
  47.     mov ax,0a000h
  48.     mov es,ax
  49.     mov ax,100
  50.     mov bx,100
  51.     shl ax,8
  52.     shl bx,6
  53.     add ax,bx
  54.     add ax,29
  55.     mov di,ax
  56.    
  57.     mov l_end, ax
  58.     mov r_end, ax
  59.     add r_end, 270
  60.    
  61.     ;mov al, 1
  62.     ;CALL DRAW_SQUARE
  63.    
  64. move_right:     mov al, 2
  65.                 CALL DRAW_SQUARE
  66.                 inc di
  67.                 mov al, 1
  68.                 CALL DRAW_SQUARE
  69.                 ;mov al, 2
  70.                 ;mov es:[di],al
  71.                
  72.                 mov ah, 0bh
  73.                 int 21h
  74.                 cmp al, 0
  75.                 jne stopm
  76.                
  77.                 cmp di, r_end
  78.                 jl move_right
  79.                
  80.                
  81. move_left:      mov al, 2
  82.                 CALL DRAW_SQUARE
  83.                 dec di
  84.                 mov al, 1
  85.                 CALL DRAW_SQUARE
  86.                 ;mov al, 2
  87.                 ;mov es:[di+1],al
  88.                
  89.                 mov ah, 0bh
  90.                 int 21h
  91.                 cmp al, 0
  92.                 jne stopm
  93.                
  94.                 cmp di, l_end
  95.                 jg move_left
  96.    
  97.                 jmp move_right
  98.  
  99.  
  100.                
  101. stopm:
  102. MOV AH,00
  103.   INT 16h          
  104.  
  105.  
  106.  
  107.  
  108.   MOV AH,00
  109.   MOV AL, 2
  110.   INT 10h  
  111.  
  112. ret
  113.  
  114. BEGIN ENDP
  115.  
  116. DRAW_SQUARE PROC
  117.  
  118.         push si
  119.         mov si, di
  120.         push bx
  121.         push cx
  122.         mov bx, 0
  123. vert:   mov cx, 0
  124. horiz:  mov es:[si],al
  125.         inc si
  126.         inc cx
  127.         cmp cx, 4
  128.         jle horiz
  129.        
  130.         sub si, 5
  131.         add si, 320
  132.        
  133.         inc bx
  134.         cmp bx, 4
  135.         jle vert
  136.        
  137.         pop cx
  138.         pop bx
  139.         pop si
  140.         ret
  141. DRAW_SQUARE ENDP
  142.  
  143. CODESG        ENDS
  144. END           BEGIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement