首页 > 解决方案 > ASM x86_64 小程序

问题描述

我正在学习汇编语言 x86_64(英特尔语法),并且我制作了一个应该打印数字的小程序(现在向后,我稍后会做一个真正的 putnbr)

所以我这样做了,但它不起作用......我想知道它的逻辑是否仍然正确以及我是否走在正确的轨道上。不要给我答案,我会找到的。我只是想知道我是否应该继续这样做,或者我是否完全搞砸了。如果我是我应该寻找的东西。此外,请随时分享有关汇编语言的任何提示和良好实践。

section .text
    global _start

_start:
    mov rax, 123            ;initializing our nbr
    call _printRAXLoop      ;calling printing function
        
    mov rax, 60             ;three lines
    mov rdi, 1              ;for
    syscall                 ;exit(0);

_printRAXLoop:
    mov rdx, 0              ;setting rdx(rest of the div) to 0
    mov rbx, 10             ;setting rbx = 10
    div rbx                 ;dividing rax by rbx
    push rax                ;pushing rax to the stack (to save its value)
    add rdx, 48             ;add 48 to rdx

    mov rax, 1              ;ID for write()
    mov rdi, 1              ;file descriptor
    mov rsi, rdx            ;buffer
    mov rdx, 4              ;buffer_size
    syscall                 ;calling write()
        
    pop rax                 ;getting rax value back
    cmp rax, 0              ;comparing rax to 0
    jne _printRAXLoop       ;if ^ not equal then loop
    ret 

谢谢

标签: assemblyx86-64intel

解决方案


推荐阅读