+ -
当前位置:首页 → 问答吧 → 初学宏,问个关于宏的小程序的小问题~~

初学宏,问个关于宏的小程序的小问题~~

时间:2011-12-13

来源:互联网

程序是这样的,就是用宏做数组的求和,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

作者: csdaydayup   发布时间: 2011-12-13

不是吧,你的宏定义里有些问题Assembly code
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 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

作者: zara   发布时间: 2011-12-13