循环将不会在Microsoft Visual Studio ASM中执行

时间:2019-04-04 23:59:13

标签: loops assembly x86

使用带有间接寻址的循环指令将数组中的元素反转。

  • 请勿将元素复制到任何其他数组。
  • 如果将来要更改数组大小和类型,请使用SIZEOF,TYPE和LENGTHOF运算符使程序尽可能灵活。
  • 使用XCHG指令。
  • 数组的元素是:“ B”,“ A”,“ D”,“ C”,“ F”,“ E”,“ H”,“ G”。
  • 运行程序后,数组的元素应类似于:A,B,C,D,E,F,G,H。

但是我遇到以下错误:

  

错误A2006:未定义符号:arr
  错误A2006:未定义符号:arr
  错误A2006:未定义符号:已完成
  错误A2006:未定义符号:arr

这是我的代码:

INCLUDE Irvine32.inc

.data

arr DWORD B,A,D,C,F,E,H,G ; Array of integers with 8 elements
len DWORD LENGTHOF arr ; The length of the array

.code
main PROC

mov esi,OFFSET arr
mov ecx, LENGTHOF arr/2

reverseArrayOf32bit:
lea edi,[esi+4] ;edi = address of next entry

.next:
mov eax,0
cmp ecx,eax
je .done ; yes, it's done aleady

mov eax,[esi] ;eax = value at start
xchg ebx,[edi] ;ebx = value at end
mov [esi],eax ;Store value from start at end

add esi,8 ;esi = address of next item at start
add edi,8   
dec ecx
j .next

.done:
main ENDP

0 个答案:

没有答案