home *** CD-ROM | disk | FTP | other *** search
- ;
- ; *** Listing 13-1 ***
- ;
- ; Generates the cumulative exclusive-or of all bytes in a
- ; 64-byte block of memory by using the LOOP instruction to
- ; repeat the same code 64 times.
- ;
- jmp Skip
- ;
- ; The 64-byte block for which to generate the cumulative
- ; exclusive-or.
- ;
- X=1
- ByteArray label byte
- rept 64
- db X
- X=X+1
- endm
- ;
- ; Generates the cumulative exclusive-or of all bytes in a
- ; 64-byte memory block.
- ;
- ; Input:
- ; SI = pointer to start of 64-byte block for which to
- ; calculate cumulative exclusive-or
- ;
- ; Output:
- ; AH = cumulative exclusive-or of all bytes in the
- ; 64-byte block
- ;
- ; Registers altered: AX, CX, SI
- ;
- CumulativeXor:
- cld
- sub ah,ah ;initialize our cumulative XOR to 0
- mov cx,64 ;number of bytes to XOR together
- XorLoop:
- lodsb ;get the next byte and
- xor ah,al ; XOR it into the cumulative result
- loop XorLoop
- ret
- ;
- Skip:
- call ZTimerOn
- mov si,offset ByteArray
- ;point to the 64-byte block
- call CumulativeXor ;get the cumulative XOR
- call ZTimerOff