【发布时间】:2012-11-12 13:29:31
【问题描述】:
我有一个问题,我想不通:
在汇编语言中,编写一个函数,该函数接收指向整数数组的指针和该数组的大小,并通过反转其元素来更改数组,而无需将数组复制到堆栈。使用专用指令和寄存器处理数组(esi、edi;lodsb、stosb、cld、std)。
示例:1 2 3 4 5 -> 5 4 3 2 1
大家有什么建议吗?
【问题讨论】:
-
我什至不知道从哪里开始......
-
首先了解指令 lodsb、stosb、cld 和 std 的作用。然后弄清楚它们如何适合这项任务以及需要哪些其他说明。
-
lodsb和stosb不太适合整数数组。lodsd和stosd可能会工作。卡特博士的 tut 可以举一个例子 - drpaulcarter.com/pcasm -
@FrankKotler 对于整数
lodsb和stosb与lodsd和stosd一样合适,取决于使用的整数的大小,OP 没有提及。 8位整数足够大,例如。用于 24 位真彩色图像的常规 8 位位平面。
标签: arrays assembly x86 nasm reverse