Just as the title says I have a question with a program I am doing. I am just starting out using MASM assembly and kind of stuck any help would be great.

I need to calculate the sums and differences of arrays that are shown below. The little bit of code i have now is

x sword 10,20,30,40,50,60,70,80
y sword -80,-70,-60,-50,-40,-30,-20,-10
a sword 8 dup (?)
b sword 8 dup (?)

mov esi,offset x
mov edi,offset a
mov ecx,lengthof x

mov ebx,offset y
mov edi,offset b
mov ecx,lengthof y

mov ah,[esi]
mov [edi],ah
add esi
add edi
loop next

move al,[ebx]
mov [edi],al
add ebx
add edi
loop else

invoke exitProcess,0
end begin
5 Years
Discussion Span
Last Post by zalia64

First, line 10 uses EDI for a, in line 14 EDI is b. Overwriting the command in line 10.

I would have written

begin procedure near
mov ESI, offset X     ; or   LEA ESI, X
mov EDI, offset Y     ; or   LEA EBX, Y
mov EBX, offset a
mov EDX, offset b
mov ECX, lengthof X   ;  or mov ecx,8   ;counter

mov AX,[ESI]        ; X[k]
add AX,[EDI]        ; add Y[k]
mov [EBX],AX        ; store sum

mov AX,[ESI]
sub AX,[EDI]
mov [EDX],AX       ; store X[k]-Y[k],

add ESI,2
add EDI,2
add EBX,2
add EDX,2
  dec ECX
  jg  next           ; do again if ecx >0

invoke exitProcess,0
begin endp
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.