在NASM中创建字符串地址数组(数据元素)?

时间:2016-10-28 09:08:45

标签: assembly x86 nasm

假设我在NASM中有一个3元素阵列

strings: dw 0x00, 0x00, 0x00

,我想填写字符串的地址,也在.data部分中定义,例如

hello_word: db "HelloWorld!", 0

编写strings: dw hello_world, 0x00, 0x00是语法错误。

如何使用地址填充数组,以便我可以在运行时循环遍历它,每次递增索引?

3 个答案:

答案 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 0000 11是指向字符串的两个指针

答案 1 :(得分:1)

啊,“ - f coff”!将地址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的方法更好。