程序是这样的,就是用宏做数组的求和,masm出错,就是打了****那两行的问题,是不是数组太大了?那2个数组的定义有问题么??
.model small
.386
.lall
summing macro array,count,result
local to
mov ebx,0d
mov edx,0
mov ecx,count
mov esi.0
to:
inc esi
add eax,array[esi]
adc edx,0
mov result[2],edx
mov result[1],eax
inc ebx
pushad ebx
imul ebx,4d
mov esi,ebx
popad ebx
loop to
endm
datarea segment
data1 dd 1,10,100,1000,10000
data2 dd 2,20,200,2000
sum1 dq ?,?
sum2 dq ?,?
datarea ends
prognam segment
main proc far
assume cs:prognam,ds:datarea
start:
mov ax,datarea
mov ds,ax
summing data1,5d,sum1 ;********************
summing data2,4d,sum2 ;********************
mov ax,4c00h
int 21h
main endp
prognam ends
end start
------解决方案--------------------------------------------------------
不是吧,你的宏定义里有些问题
- Assembly code
summing macro array,count,resultlocal to mov ebx,0d mov edx,0 mov ecx,count mov esi,0 to: inc esi add eax,array[esi] adc edx,0 mov dword ptr result[2],edx mov dword ptr result[1],eax inc ebx push ebx imul ebx,4d mov esi,ebx pop ebx loop to endm