首页 > 解决方案 > 汇编器 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”以外的其他寄存器,这两个寄存器在系统调用后会受到影响。

标签: loopsassemblyx86-64nasm

解决方案


推荐阅读