; CIS-77
; add_16_bytes.asm
;
.586P
.MODEL FLAT ; Flat memory model
option casemap:none ; Treat labels as case-sensitive
.CONST ; Constant data segment
.STACK 100h ; (default is 1-kilobyte stack)
.DATA ; Begin initialized data segment
values db 16 DUP( 5 ) ; 16 bytes of values "5"
; Code segment
.CODE ; Begin code segment
_main PROC ; Beginning of code
mov eax, 0 ; clear result
mov bl, 16 ; init loop counter
lea esi, values ; init data pointer
addup:
add al, [esi] ; add byte to sum
inc esi ; increment data pointer
dec bl ; decrement loop counter
jnz addup ; if BL not zero, continue
mov [esi], al ; save sum
ret ; Exit
_main ENDP
END _main ; Marks the end of the module and sets the program entry point label