home *** CD-ROM | disk | FTP | other *** search
/ Graphics Programming Black Book (Special Edition) / BlackBook.bin / disk1 / zoa / zen_list.exe / LST7-7.ASM < prev    next >
Assembly Source File  |  1990-02-15  |  972b  |  45 lines

  1. ;
  2. ; *** Listing 7-7 ***
  3. ;
  4. ; Strips the high bit of every byte in a byte-sized array,
  5. ; using a segment override prefix.
  6. ;
  7.     jmp    Skip
  8. ;
  9. ARRAY_LENGTH    equ    1000
  10. TestArray    db    ARRAY_LENGTH dup (0ffh)
  11. ;
  12. ; Strips the high bit of every byte in a byte-sized array.
  13. ;
  14. ; Input:
  15. ;    CX = length of array
  16. ;    ES:BX = pointer to start of array
  17. ;
  18. ; Output: none
  19. ;
  20. ; Registers altered: AL, BX
  21. ;
  22. StripHighBits    proc    near
  23.     mov    al,not 80h    ;bit pattern for stripping
  24.                 ; high bits, loaded into a
  25.                 ; register outside the loop
  26.                 ; so we can use fast
  27.                 ; register-to-memory ANDing
  28.                 ; inside the loop
  29. StripHighBitsLoop:
  30.     and    es:[bx],al    ;strip this byte's high bit
  31.     inc    bx        ;point to next byte 
  32.     loop    StripHighBitsLoop
  33.     ret
  34. StripHighBits    endp
  35. ;
  36. Skip:
  37.     call    ZTimerOn
  38.     mov    bx,seg TestArray
  39.     mov    es,bx
  40.     mov    bx,offset TestArray    ;point to array
  41.                     ; which will have
  42.                     ; high bits stripped
  43.     call    StripHighBits        ;strip the high bits
  44.     call    ZTimerOff
  45.