【发布时间】:2018-10-10 16:20:30
【问题描述】:
我需要将第一个变量的值更改为第二个,但我编写的代码不起作用。 我试过这个:
mov DWORD [enety_26500], enety_26501
但程序仍然打印我 “Hello, world!”
谁能帮忙?
global _main
extern _ExitProcess@4
extern _printf
section .text
_main:
call main
pop eax
push 0
call _ExitProcess@4
ret
print:
push ebp
mov ebp, esp
mov eax, [ebp+8]
push eax
call _printf
pop ebp
push 0
ret
main:
push ebp
mov ebp, esp
push enety_26500
call print
pop eax
mov DWORD [enety_26500], enety_26501
push enety_26500
call print
pop eax
pop ebp
push 0
ret
section .data
enety_26500:
dw 'Hello, world!', 10, 0
enety_26501:
dw 'Hello,', 10, 0
【问题讨论】:
-
mov DWORD [enety_26500], enety_26501enety_26501的地址覆盖enety_26500的前4个字节。 -
谢谢,但如果我输入 mov DWORD [enety_26500], [enety_26501] 它会显示错误
-
这不是操作数的有效组合。即使是这样也无济于事,因为字符串没有固定的大小。
-
如何使其生效并解决?请帮忙
-
不清楚您真正要解决什么问题。我的意思是,如果您只想打印第二个字符串,您可以执行
push enety_26501。