loops - 循环不会在 Microsoft Visual Studio ASM 中执行
问题描述
使用带有间接寻址的循环指令来反转数组的元素。
- 不要将元素复制到任何其他数组。
- 如果将来要更改数组大小和类型,请使用 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
解决方案
推荐阅读
- android - Delphi 和信标 - AllBeaconsScanner 示例
- visual-studio-code - 是否有 VSCode API 可以在编辑器中插入一些不可编辑的行以显示信息?
- javascript - 在 Axios 和 UseEffect 渲染之后从父级向子级传递道具
- javascript - 连接到 Postgres 错误的 Twilio 函数
- javascript - 子数组上的角度过滤器
- c++ - 使用 DirectX Math 投影和取消投影点
- c++ - 合并向量中具有相同枚举类类型的元素
- r - 为什么一个函数给我的答案与没有该函数的代码不同?
- c++ - For 循环不运行 C++
- azure - 在使用 CICD 管道远程重启应用服务时需要帮助