Es gibt "ABC" aus !
Der Code ist natürlich etwas lange, weil ich testhalber noch einen Loop drin habe. Das Problem, welches ich habe ist, dass für jeden Buchstaben z.Z. 32bit im Stack resserviert werden. Kann man das anders machen ?
;Kompilieren mit
;---------------
;nasm -f elf ausgabe.asm
;gcc -Wall -s -nostdlib ausgabe.o
;./a.out
BITS 32 ;32bit modus
;-------------------------------------------------------------------------------
SECTION .text ;Code muss sich in GCC unter ".text" befinden
GLOBAL _start ;start Eintrittspunkt
_start:
xor eax,eax
_loop1:
inc al
cmp al, 0x43
jne _loop1
push eax
xor eax,eax ;eax auf 0
mov al,0x42 ;letter B
push eax
xor eax,eax ;eax auf 0
mov al,0x41 ;letter A
push eax
mov ebp, esp ;stackpointer -> basepointer
mov edx,0x0b ;Argument 3: Länge des Strings
mov ecx,ebp ;Argument 2: Basepointer hat Adresse von Stackpointer
mov ebx,0x01 ;Argument 1: Auf Bildschirm ausgeben
mov eax,0x04 ;Funktion: Write command
int 0x80 ;Interrupt 80 hex, Kernelaufruf (Systemcall)
mov eax,0x01 ;Argument 1: Call sys_exit()
mov ebx,0x42 ;Argument 2: Rueckgabewert
int 0x80 ;Interrupt beendet prozess
;-------------------------------------------------------------------------------
Kommentar