首页 > 解决方案 > 循环不会在 Microsoft Visual Studio ASM 中执行

问题描述

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

但我收到以下错误:

错误 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

标签: loopsassemblyx86

解决方案


推荐阅读