如何用Syscall显示写入我的寄存器的值

问题描述 投票:0回答:0

全部 我想在终端中显示函数 Additionner(一个添加函数)的返回值 (13)。 它存储在 %eax 寄存器中。

我知道,我不必为这个程序做一个函数,但它是那样做的,因为我正在学习。

`.section .text
.globl _start
_start:
    
    pushl $9
    pushl $4
    call additioner
    movl %eax, %ebx
    
    
    #Show Value
    movl %ebx, %ecx #Content i want to show
    movl $4, %eax #Write
    movl $1, %ebx #StdOut
    movl $1, %edx #Len
    int $0x80 #Syscall
    
    movl $1, %eax
    xorl %ebx, %ebx  
    int $0x80
    
.type additionner, @function
additioner:
    pushl %ebp
    movl %esp, %ebp
    subl $4, %esp
    movl 8(%ebp), %eax
    movl 12(%ebp), %ebx
    add %ebx, %eax
    movl %ebp, %esp
    popl %ebp
    ret`

我在互联网、chatgpt、我的书中搜索,但什么也没有。 我试图改变长度,我想知道write函数是否只能用于显示ascii,如果是这样我如何将我寄存器中的结果传递给ascii字符串并在之后显示它。

非常感谢您的帮助

linux assembly x86 system-calls att
© www.soinside.com 2019 - 2024. All rights reserved.