home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / video / 5 / 5_17.asm < prev    next >
Encoding:
Assembly Source File  |  1988-08-11  |  1.2 KB  |  74 lines

  1.         TITLE    'Listing 5-17'
  2.         NAME    SetPixel13
  3.         PAGE    55,132
  4.  
  5. ;
  6. ; Name:        SetPixel13
  7. ;
  8. ; Function:    Set the value of a pixel in VGA 320x200 256-color mode
  9. ;
  10. ; Caller:    Microsoft C:
  11. ;
  12. ;            void SetPixel(x,y,n);
  13. ;
  14. ;            int x,y;        /* pixel coordinates */
  15. ;
  16. ;            int n;            /* pixel value */
  17. ;
  18.  
  19. ARGx        EQU    word ptr [bp+4]    ; stack frame addressing
  20. ARGy        EQU    word ptr [bp+6]
  21. ARGn        EQU    byte ptr [bp+8]
  22.  
  23. DGROUP        GROUP    _DATA
  24.  
  25. _TEXT        SEGMENT    byte public 'CODE'
  26.         ASSUME    cs:_TEXT,ds:DGROUP
  27.  
  28.         EXTRN    PixelAddr13:near
  29.  
  30.         PUBLIC    _SetPixel13
  31. _SetPixel13    PROC    near
  32.  
  33.         push    bp        ; preserve caller registers
  34.         mov    bp,sp
  35.  
  36.         mov    ax,ARGy        ; AX := y
  37.         mov    bx,ARGx        ; BX := x
  38.         call    PixelAddr13    ; ES:BX -> buffer
  39.  
  40.         mov    al,ARGn        ; AL := pixel value
  41.  
  42.         jmp    word ptr SetPixelOp13    ; jump to Replace, AND,
  43.                         ;  OR or XOR routine
  44.  
  45.  
  46. ReplacePixel13:    mov    es:[bx],al
  47.         jmp    short L01
  48.  
  49. ANDPixel13:    and    es:[bx],al
  50.         jmp    short L01
  51.  
  52. ORPixel13:    or    es:[bx],al
  53.         jmp    short L01
  54.  
  55. XORPixel13:    xor    es:[bx],al
  56.  
  57.  
  58. L01:        mov    sp,bp        ; restore caller registers and return
  59.         pop    bp
  60.         ret
  61.  
  62. _SetPixel13    ENDP
  63.  
  64. _TEXT        ENDS
  65.  
  66.  
  67. _DATA        SEGMENT    word public 'DATA'
  68.  
  69. SetPixelOp13    DW    ReplacePixel13
  70.  
  71. _DATA        ENDS
  72.  
  73.         END
  74.