visual studio 2013 - What does these errors mean? Assembly Language -


; program checks or odd parities inside of array. displays 1 if or 0 if odd.  include irvine32.inc  true = 1 false = 0  .data  str1 byte "even parity", 0 str2 byte "odd parity", 0 str3 byte "the block of data under checking is: ", 0  array1 byte 1,0,1,0,0,0,1,0,0,1 array2 byte 1,0,0,0,0,0,1,0,0,1  ; declares 2 10-bit arrays  .code main proc  call clrscr                 ; clears screen  mov esi, offset array1      ; pass address  mov ecx, lengthof array1    ; pass length  call display                ; display on console call parity_check cmp eax,0 je l1                       ; if eax = 0 odd mov edx, offset str1 call writestring            ; write str1 call crlf l1: mov edx, offset str2 call writestring            ; write str2 call crlf call crlf                   ; check if array2 or odd  mov esi, offset array2      ; pass address  mov ecx, lengthof array2    ; pass length  call display                ; display on console call parity_check cmp eax, 0 je l2                       ; if eax = 0 odd mov edx, offset str1 call writestring            ;write str1 call crlf l2: mov edx, offset str2 call writestring            ; write str2 call crlf call crlf      invoke exitprocess,0 main endp   parity_check proc uses eax ecx esi edi  ;returns 1 if 0 if odd  mov edi, 0          ; array pointer 0  l1: xor [esi], 0        ; xor data bits inc esi             ; points next bit loop l1             ; continue loop jpe l2              ; jumps l2 if jpo l3              ; jumps l3 if odd l2: mov eax, true       ; copies 1(true) eax jmp l4 l3:  mov eax, false      ; copies 0(false) eax l4: ret  parity_check endp display proc uses esi ecx edx   ; displays array elements  mov edx, offset str3 call writestring                ; writes str3 l1: mov eax, [esi]                  ; store array in eax  call writedec                   ; write eax inc esi                         ; point next item in array loop l1                         ; continue traversing  call crlf ret  display endp end main 

i can't figure out why getting error xor , masm.target (file) error. xor says "invalid instruction operand" while masm.targets error brings me file.

masm.targets file name, error code msb3721 on line 50 column 5 (again brings me page assuming wrong masm setup?). either of these?

you're using notation treats [esi] reference, intended xor esi, 0 -- so, such operation isn't meaningful (esi remain unchanged.)

if meant modify memory location identified value in 'esi' may want consider moving register before 'xor' operation, since not believe xor operates on memory operands (i mistaken, has been while me.)