home *** CD-ROM | disk | FTP | other *** search
- ;
- ; *** Listing 7-9 ***
- ;
- ; Adds up the elements of a byte-sized array using
- ; base+index+displacement addressing inside the loop.
- ;
- jmp Skip
- ;
- ARRAY_LENGTH equ 1000
- TestArray db ARRAY_LENGTH dup (1)
- TEST_START_OFFSET equ 200 ;we'll add elements 200-299
- TEST_LENGTH equ 100 ; of TestArray
- ;
- Skip:
- call ZTimerOn
- mov bx,TEST_START_OFFSET
- ;for base+index+displacement
- sub si,si ; addressing
- sub ax,ax ;initialize sum
- sub dl,dl ;store 0 in DL so we can use
- ; it for faster register-
- ; register adds in the loop
- mov cx,TEST_LENGTH ;# of bytes to add
- SumArrayLoop:
- add al,[TestArray+bx+si] ;add in the next byte
- adc ah,dl ; to the 16-bit sum
- inc si ;point to next byte
- loop SumArrayLoop
- call ZTimerOff