loops - 汇编器 x64 NASM。为什么循环对我不起作用?
问题描述
您好,我正在学习汇编程序,但我发现这个问题我不知道如何解决。我想问题是由 write 系统调用产生的,它在那部分做了一些事情,我想它修改了 rcx 的值或标志中的一些东西,但我不知道。我知道问题就在那里,因为我评论了那部分并且程序结束,否则它会无限打印“测试”。我澄清说我正在学习,这肯定是我不理解的愚蠢错误。从已经非常感谢了!!!
这是代码
section .data
message: db "Test", 0ah, 0h
section .text
global _start
_start:
mov rcx, 10
loop:
dec rcx
jz end
beginning:
;push rcx -----> Solution
mov rdi, 1
mov rsi, message
mov rdx, 10
mov rax, 1
syscall
;pop rcx -----> Solution
jmp loop
end:
mov rdi, 0
mov rax, 60
syscall
或者将“rcx”寄存器更改为“rcx”或“r11”以外的其他寄存器,这两个寄存器在系统调用后会受到影响。
解决方案
推荐阅读
- reactjs - UI Kitten 和 React Native 无法使用主题道具
- python - 为什么 django 运行命令“python3 manage.py runserver”不在 docker-compose 中执行?
- c# - 在 C# 中以编程方式检查字符串是否包含有效的 C# 代码
- excel - 工作表之间的动态排序和分组数据
- python - 使用 python 和 gmail 发送电子邮件
- flutter - Flutter - 在 ABI 的 NDK 工具链文件夹中找不到工具链
- oracle - Hibernate自定义类型映射设置char的长度
- c++ - 通过 docker multistage build vs mount 构建和部署 C++
- visual-studio-code - 如何在 vscode 的 TERMINAL 窗格中启用测试覆盖率摘要?
- node.js - 图片显示为 http 时未显示在 https 中