Variablenausgabe in Assembler (Linux AT&T)



  • Hallo allerseits 🙂
    Ich habe gerade mit Assembler angefangen und wollte die Zählvariable nach jedem Durchlauf ausgeben aber irgendwie will der nicht so wie ich will 😃
    Ich hab schon gelesen das man nur Texte ausgeben kann und hoffe das mir einer dabei hilft.

    .section .data
            x: .int 0
            ausgabe1: .ascii ""
            ausgabe2: .ascii "Hallo Welt!\n"
    
    .section .text
    
    .globl _start
    _start:
    M1:
            movl $0, %eax
            cmpl $10, x(,%eax, 1)
            jl M2
            jmp M3
    
    M2:
            movl $4, %eax
            movl $1, %ebx
            movl $ausgabe2, %ecx
            movl $13, %edx
            int $0x80
    
            movl $4, %eax
            movl $1, %ebx
            movl $x, %ecx
            movl $4, %edx
            int $0x80
    
            movl (x), %eax
            inc %eax
            movl %eax, (x)
    
            jmp M1
    
    M3:
            movl $1, %eax
            movl $0, %ebx
            int $0x80
    


  • du musst die Zahl vor der Ausgabe in eine String umwandeln. Die einzelnen Ziffern erhältst du durch Division mit Rest (solange bist Quotient = 0). Der ASCI-Code ergibt sich durch Addition von 0x30 zum Rest.

    1.     123 / 10 = 12 R 3
    2.      12 / 10 = 1  R 2
    3.       1 / 10 = 0  R 1
    

Anmelden zum Antworten