【问题标题】:Why can't I print numbers in assembly?为什么我不能在汇编中打印数字?
【发布时间】:2019-09-02 12:44:43
【问题描述】:

我的代码正确,但 linux 不会打印我指定的 ascii 字符

我没有尝试太多其他方法,因为我的代码是正确的,并且我遵循了教程。

mov rcx, [digitSpacePos]
mov rax, 1
mov rdi, 1
mov rsi, rcx
mov rdx, 1
syscall

它应该打印 123,因为 digitSpace 是 123,但它什么也没打印。

【问题讨论】:

  • 它不可能打印 123,因为您指定了 1 作为长度。此外,write 需要一个指向要写入的内容的指针,如果要打印数字,则需要转换为文本。

标签: linux assembly nasm


【解决方案1】:

这应该有效:

        global    _start

           section   .data
message:  db        "123", 10               ; note the newline at the end

         section   .text
_start:   mov       rax, 1                  ; system call for write
          mov       rdi, 1                  ; file handle 1 is stdout
          mov       rsi, message            ; address of string to output
          mov       rdx, 4                  ; number of bytes
          syscall                           ; invoke operating system to do the write
          mov       rax, 60                 ; system call for exit
          xor       rdi, rdi                ; exit code 0
          syscall                           ; invoke operating system to exit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多