@sea-live: Wahrscheinlich weil man bei ``my_list.sort()`` nicht lernt wie man einen Sortieralgorithmus selber entwerfen und implementieren kann.
In diesem Fall würde man bei Verzicht auf `all()` und ``in`` zum Beispiel die Komplexität der Lösung deutlicher sehen, weil man sich Gedanken macht, wie diese beiden Konstrukte intern implementiert sind.
In diesem Sinne hier eine Lösung die zeigt, was der Prozessor "wirklich" macht:
Code: Alles auswählen
SYS_EXIT equ 1
SYS_WRITE equ 4
STDOUT equ 1
section .data
wrong_number_of_args:
db "wrong number of arguments", 10
wrong_number_of_args_len equ $ - wrong_number_of_args
true:
db "True", 10
true_len equ $ - true
false:
db "False", 10
false_len equ $ - false
section .text
global _start
_start:
cmp [esp], dword 3
je .correct_number_of_arguments
mov eax, SYS_WRITE
mov ebx, STDOUT
mov ecx, wrong_number_of_args
mov edx, wrong_number_of_args_len
int 0x80
mov ebx, 1
jmp short exit
.correct_number_of_arguments:
mov esi, [esp+8]
mov ebx, [esp+12]
.outer
lodsb
or al, al
jz .print_true
xor ecx, ecx
.inner
mov dl, [ebx+ecx]
or dl, dl
jz .print_false
cmp al, dl
je .outer
inc ecx
jmp short .inner
.print_true
mov ecx, true
mov edx, true_len
jmp short .print
.print_false
mov ecx, false
mov edx, false_len
.print
mov eax, SYS_WRITE
mov ebx, STDOUT
int 0x80
xor ebx, ebx
exit:
mov eax, SYS_EXIT
int 0x80
Testlauf:
Code: Alles auswählen
bj@s8n:~$ nasm -f elf test2.asm && ld test2.o
bj@s8n:~$ ./a.out
wrong number of arguments
bj@s8n:~$ ./a.out test tes
True
bj@s8n:~$ ./a.out hallo tes
False