assembly - 如何更改 NASM 中的变量(x86,Microsoft Windows 10)
问题描述
我想更改 NASM 中变量的值。
我在互联网上搜索了很长时间,并尝试了很多东西。
我试过这个:
global _main
extern _printf
section .data
original: db "Hello, world", 10, 0
new: db "Hello", 10, 0
section .text
_main:
mov [original], new
push original
call _printf
add esp, 4
ret
这不起作用,所以我试过这个。
global _main
extern _printf
section .data
original: db "Hello, world", 10, 0
new: db "Hello", 10, 0
section .text
_main:
mov eax, new
mov [original], eax
push original
call _printf
add esp, 4
ret
好吧,它可以正常工作,但它会不断打印奇怪的东西。
@@
(其实上面的字符串开头有上下方向的箭头形字符,但是我省略了,因为好像没有识别出来)
我已经尝试并搜索了很多东西。但我找不到解决方案。那么如何更改 NASM 中变量的值呢?(我在 Windows 中使用 x86 程序集)
谢谢。
解决方案
您不能使用单个指令覆盖字符串。您需要使用循环来复制字符串的字节,同时检查标记字符串结尾的空字节。例如:
mov edi, original
mov esi, new
.loop:
mov al, [esi]
mov [edi], al
add esi, 1
add edi, 1
test al, al
jnz .loop
推荐阅读
- django - 从特定查询集中创建 Django 模型 ForeignKey 字段?
- python - 当单词在单词列表中时打印一些东西
- python - MySQL 没有在 Python 中被识别
- module - 如何定义嵌入?
- javascript - 我应该总是深度克隆 React 的状态吗?
- graphql - Netlift 构建:gatsby-source-prismic - 无效的插件选项 | Netlify 中的环境变量
- html - 无法让图像在 CSS 的网格中重复
- html - 视差效果,文字隐藏在照片下
- json - 求和和计数的 psycopg2 postgres sql 请求返回不尊重 json.dump 的格式
- excel - 返回值的 Excel 条件格式