top of page

TITLE Scanning an Array              (ArryScan.asm)

; Scan an array for the first nonzero value.
; Last update: 2/16/02

INCLUDE Irvine32.inc
.data
intArray SWORD  0,0,0,0,1,20,35,-12,66,4,0
;intArray SWORD  1,0,0,0
;intArray SWORD  0,0,0,0
;intArray SWORD  0,0,0,1
noneMsg  BYTE "A non-zero value was not found",0

.code
main PROC
    mov   ebx,OFFSET intArray        ; point to the array
    mov   ecx,LENGTHOF intArray        ; loop counter

L1:
    cmp   WORD PTR [ebx],0        ; compare value to zero
    jnz   found        ; found a value
    add   ebx,2        ; point to next
    loop  L1        ; continue the loop
    jmp   notFound        ; none found

found:
    movsx eax,WORD PTR [ebx]        ; otherwise, display it
    call  WriteInt
    jmp   quit

notFound:
    mov   edx,OFFSET noneMsg        ; display "not found" message
    call  WriteString

quit:
    call  crlf
    exit
main ENDP
END main

bottom of page