当前位置: 代码迷 >> 汇编语言 >> 初学宏,问个关于宏的小程序的小疑点~
  详细解决方案

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

热度:695   发布时间:2013-02-26 00:00:00.0
初学宏,问个关于宏的小程序的小问题~~
程序是这样的,就是用宏做数组的求和,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
  相关解决方案