DUP算子在哪里记数?
Where does DUP operator keeps counting number?
我需要在程序的 .DATA 部分初始化一个结构数组。大多数初始化为零,但我需要设置订单号。我可以在 .DATA 部分使用存储 DUP 运算符的寄存器来初始化数组元素的顺序号吗?或者除了在程序的 .CODE 部分使用循环之外还有另一种方法。
这里是示例程序,初始化时三个NODEi_KEY必须分别设置为1..20。项目要求在.DATA部分设置,不能设置可能是错别字
.DATA
NODE STRUCT
NODEi_KEY DWORD ?
NODEi_VALUE DWORD 0
NODE ENDS
THREE NODE 20 DUP ({,,})
虽然 Masm 非常灵活和强大,但我不相信您所要求的正是可能的。但是,您绝对可以这样做:
array DB 3 DUP (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
这不是您要的,但我不相信您可以在不剪切和粘贴或找出告诉 DUP
制作多份副本的方法的情况下完成您要执行的操作里面有什么。我上面的内容将定义三乘以二十个字节。这三个中的每一个都将在字节中具有 0 到 19 的整数值。
您也可以这样做:
array DB 3 DUP (4 DUP (1), 2 DUP (2), 4 DUP (8))
这定义了一个总大小为 3 * 10 字节的区域,其中 1111228888 重复了三次。
你可以为所欲为,但你不能用 DUP 运算符。您需要改用 REPT(重复)指令并创建您自己的计数器:
.DATA
NODE STRUCT
NODEi_KEY DWORD ?
NODEi_VALUE DWORD 0
NODE ENDS
THREE LABEL NODE
counter = 1
REPT 20
NODE {counter,}
counter = counter + 1
ENDM
这将创建一个包含 20 个 NODE 结构的数组,每个 NODEi_KEY 成员使用其在数组中基于 1 的位置进行初始化。
REPT 指令简单地重复所有内容,直到 ENDM 的次数由参数指定。因此,如果您要更改 REPT 指令,使参数仅为 4,它将生成以下内容:
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1
我需要在程序的 .DATA 部分初始化一个结构数组。大多数初始化为零,但我需要设置订单号。我可以在 .DATA 部分使用存储 DUP 运算符的寄存器来初始化数组元素的顺序号吗?或者除了在程序的 .CODE 部分使用循环之外还有另一种方法。
这里是示例程序,初始化时三个NODEi_KEY必须分别设置为1..20。项目要求在.DATA部分设置,不能设置可能是错别字
.DATA
NODE STRUCT
NODEi_KEY DWORD ?
NODEi_VALUE DWORD 0
NODE ENDS
THREE NODE 20 DUP ({,,})
虽然 Masm 非常灵活和强大,但我不相信您所要求的正是可能的。但是,您绝对可以这样做:
array DB 3 DUP (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19)
这不是您要的,但我不相信您可以在不剪切和粘贴或找出告诉 DUP
制作多份副本的方法的情况下完成您要执行的操作里面有什么。我上面的内容将定义三乘以二十个字节。这三个中的每一个都将在字节中具有 0 到 19 的整数值。
您也可以这样做:
array DB 3 DUP (4 DUP (1), 2 DUP (2), 4 DUP (8))
这定义了一个总大小为 3 * 10 字节的区域,其中 1111228888 重复了三次。
你可以为所欲为,但你不能用 DUP 运算符。您需要改用 REPT(重复)指令并创建您自己的计数器:
.DATA
NODE STRUCT
NODEi_KEY DWORD ?
NODEi_VALUE DWORD 0
NODE ENDS
THREE LABEL NODE
counter = 1
REPT 20
NODE {counter,}
counter = counter + 1
ENDM
这将创建一个包含 20 个 NODE 结构的数组,每个 NODEi_KEY 成员使用其在数组中基于 1 的位置进行初始化。
REPT 指令简单地重复所有内容,直到 ENDM 的次数由参数指定。因此,如果您要更改 REPT 指令,使参数仅为 4,它将生成以下内容:
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1
NODE {counter,}
counter = counter + 1