|
@@ -0,0 +1,43 @@
|
|
1
|
+# Jan Potocki 2022
|
|
2
|
+
|
|
3
|
+# Definicje numerow funkcji systemowych i ich argumentow
|
|
4
|
+SYSEXIT = 1
|
|
5
|
+SYSREAD = 3
|
|
6
|
+SYSWRITE = 4
|
|
7
|
+STDIN = 0
|
|
8
|
+STDOUT = 1
|
|
9
|
+SYSCALL32 = 0x80
|
|
10
|
+
|
|
11
|
+# Stale
|
|
12
|
+buff_len = 1
|
|
13
|
+end_char = 'Q'
|
|
14
|
+
|
|
15
|
+.global _start
|
|
16
|
+
|
|
17
|
+.bss
|
|
18
|
+# Bufor na czytany znak
|
|
19
|
+buff: .space buff_len
|
|
20
|
+
|
|
21
|
+.text
|
|
22
|
+_start:
|
|
23
|
+mov $SYSREAD, %eax # Wczytanie znaku ze standardowego wejscia
|
|
24
|
+mov $STDIN, %ebx # ...funkcja systemowa read
|
|
25
|
+mov $buff, %ecx
|
|
26
|
+mov $buff_len, %edx
|
|
27
|
+int $SYSCALL32
|
|
28
|
+
|
|
29
|
+mov $end_char, %eax # Sprawdzenie, czy wczytano znak konczacy
|
|
30
|
+cmp %eax, buff
|
|
31
|
+je koniec # ...jezeli tak, skok na koniec
|
|
32
|
+
|
|
33
|
+mov $SYSWRITE, %eax # Wypisanie znaku na standardowe wyjscie
|
|
34
|
+mov $STDOUT, %ebx # ...funkcja systemowa write
|
|
35
|
+mov $buff, %ecx
|
|
36
|
+mov $buff_len, %edx
|
|
37
|
+int $SYSCALL32
|
|
38
|
+jmp _start # Skok na poczatek (petla)
|
|
39
|
+
|
|
40
|
+koniec:
|
|
41
|
+mov $SYSEXIT, %eax # Funkcja systemowa exit...
|
|
42
|
+mov $0, %ebx # ...kod zakonczenia 0
|
|
43
|
+int $SYSCALL32
|