Assembly 生成IA-32部件中前N个数字的排列

Assembly 生成IA-32部件中前N个数字的排列,assembly,visual-c++,x86,permutation,Assembly,Visual C++,X86,Permutation,我必须使用Visual Studio在IA-32程序集中创建asm块。 我曾尝试按词典顺序使用这一代,但现在我被卡住了,因为我不知道如何继续。 我不能添加变量,也不能更改用C编写的部件。我只能创建asm块 作为指导,我使用了维基百科页面,上面写着: 下面的算法生成下一个置换 在给定的排列之后按字典顺序排列。它改变了给定的 排列到位 求最大索引k,使a[k]

我必须使用Visual Studio在IA-32程序集中创建asm块。 我曾尝试按词典顺序使用这一代,但现在我被卡住了,因为我不知道如何继续。 我不能添加变量,也不能更改用C编写的部件。我只能创建asm块

作为指导,我使用了维基百科页面,上面写着:

下面的算法生成下一个置换 在给定的排列之后按字典顺序排列。它改变了给定的 排列到位

求最大索引k,使a[k] 索引k=2,因为3位于满足条件的索引处 是比[k+1]还小的最大指数 4. 索引l=3,因为4是序列中唯一大于3的值,以满足条件a[k] /******************************************************************************** descripione:生成前N个自然数的所有置换。 生成的置换必须插入到单个 整数数组。例如,如果N=3,则数组必须包含: {1,2,3,1,3,2,2,1,3,2,3,1,3,1,2,3,2,1}. ********************************************************************************/ 包括 真空总管 { //变化无常
int N=4;//整数的数量MSVC使用EBP来处理局部变量,因此如果您需要比寄存器更多的空间,您可以为它创建一些堆栈空间,将其推送或子esp,xx并相对于esp引用。例如,一些您不经常使用的东西,如外循环变量。使用内联asm是一种奇怪的方式,但您可以。但是,gi即使是你必须使用的6个整数寄存器,不包括ESP和EBP,这可能就足够了。那么你的实际问题是什么呢?你找到了一个算法,你有一个实现的一部分。如果你正在寻找反转数组的代码,那么有几个重复的。给定范围末端的指针或索引,load/store相反,当i