.globl _axel _axel: pushl %ebp movl %esp,%ebp pushl %edx movl 8(%ebp),%eax # char dest Hvor alt ska ende.; movl 12(%ebp),%edx # char format som holder {"en eller annen streng"} .L0: cmpb $0,(%edx) jz .endl movb (%edx),%bl cmpb $37,%bl je .switch movb %bl,(%eax) incl %edx incl %eax jmp .L0 .char: movl basep,%ecx movb (%ecx,%ebp),%bl movb %bl,(%eax) incl %edx incl %eax addl $4,basep jmp .L0 .numb: push %edx push %eax and $0,%edx movl basep,%edi movl (%edi,%ebp),%ecx #hent tallet movl %ecx,nmb movl $10,%esi #for à dele på10 hver gang movl $10000000,%eax # lag deletall .whnmb: cmpl $0,%eax #skjekk om deletall = 0 jz .endnmb cmp %eax,%ecx #Skjekke at dette er riktig vei jle .else push %eax #legg deletall på stakk movl %ecx,%eax #flytt x til der vi skal dele popl %ecx #hent deletall idivl %ecx #del eax/ecx and $0,%edx idivl %esi addl asc,%edx push %ecx #legg deletall på stakk popl %edi #hent deletall og legg i edi popl %eax #hent hvor vi er i dest[] movb %dl,(%eax) #flytt i dest[] incl %eax #pluss 1 paa eax push %eax #legg eax paastak movl nmb,%ecx and $0,%eax and $0,%edx movl %edi,%eax .else: idivl %esi #divide on ten jmp .whnmb .endnmb: addl $4,basep popl %eax popl %edx incl %edx jmp .L0 .L2: movl basep,%edi movl (%edi,%ebp),%ecx #call dumpreg .L3: cmpb $0,(%ecx) jz .L4 movb (%ecx),%bl movb %bl,(%eax) incl %eax incl %ecx jmp .L3 .L4: addl $4,basep incl %edx #incl %edx #incl %eax and $0,%ecx #call dumpreg jmp .L0 .switch: incl %edx movb (%edx),%bl cmpb $99,%bl jz .char cmpb $100,%bl jz .numb cmpb $115,%bl # Her skal det skjekkes etter %s men 115 funker ikke jz .L2 .endl: movb $0,(%eax) popl %edx popl %ebp ret .data basep: .long 16 incecx: .long 0 incedi: .long 0 nmb: .long 0 inctext: .long 0 ant: .long 0 asc: .long 48 big: .long 10