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

  1. ;
  2. ; *** Listing 7-2 ***
  3. ;
  4. ; Calculates the 16-bit sum of all bytes in a 128Kb block.
  5. ;
  6. ; Time with LZTIME.BAT, since this takes more than
  7. ; 54 ms to run.
  8. ;
  9.     call    ZTimerOn
  10.     sub    bx,bx    ;we'll just sum the 128Kb starting
  11.             ; at DS:0
  12.     sub    cx,cx    ;count 128K bytes with SI:CX
  13.     mov    si,2
  14.     mov    ax,cx    ;set initial sum to 0
  15.     mov    dh,ah    ;set DH to 0 for summing later
  16. SumLoop:
  17.     mov    dl,[bx]    ;get this byte
  18.     add    ax,dx    ;add the byte to the sum
  19.     inc    bx    ;point to the next byte
  20.     and    bx,0fh    ;time to advance the segment?
  21.     jnz    SumLoopEnd ;not yet
  22.     mov    di,ds    ;advance the segment by 1; since BX
  23.     inc    di    ; has just gone from 15 to 0, we've
  24.     mov    ds,di    ; advanced 1 byte in all
  25. SumLoopEnd:
  26.     loop    SumLoop
  27.     dec    si
  28.     jnz    SumLoop
  29.     call    ZTimerOff
  30.