假设我在NASM中有一个3元素阵列
strings: dw 0x00, 0x00, 0x00
,我想填写字符串的地址,也在.data
部分中定义,例如
hello_word: db "HelloWorld!", 0
。
编写strings: dw hello_world, 0x00, 0x00
是语法错误。
如何使用地址填充数组,以便我可以在运行时循环遍历它,每次递增索引?
答案 0 :(得分:1)
这对我有用:
segment data
prompt_msg db "Input a string: ",0
output_msg db "The reverse is: ",0
stringPtr dw prompt_msg
dw output_msg
-->
0734:0100 49 6E 70 75 74 20 61 20-73 74 72 69 6E 67 3A 20 Input a string:
0734:0110 00 54 68 65 20 72 65 76-65 72 73 65 20 69 73 3A .The reverse is:
0734:0120 20 00 00 00 11
在0x121:00 00
和00 11
是指向字符串的两个指针
答案 1 :(得分:1)
dd
设为dw
。
答案 2 :(得分:1)
您还可以使用LEA指令(x86)在运行时加载字符串的有效地址:
lea eax, [_str1]
mov [_s_table], eax
lea eax, [_str2]
mov [_s_table + 0x04], eax
lea eax, [_str3]
mov [_s_table + 0x08], eax
但是,很可能,Frank Kotler的方法更好。