From 6fee8ccd482bf01179a730b3cf53d341a5ba752b Mon Sep 17 00:00:00 2001 From: Jan Potocki Date: Mon, 4 Apr 2022 23:09:51 +0200 Subject: [PATCH] Wydanie R2022.04.1 --- lab2-v4/Makefile | 10 ++++++++++ lab2-v4/echo.s | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 lab2-v4/Makefile create mode 100644 lab2-v4/echo.s diff --git a/lab2-v4/Makefile b/lab2-v4/Makefile new file mode 100644 index 0000000..71a5457 --- /dev/null +++ b/lab2-v4/Makefile @@ -0,0 +1,10 @@ +all: echo + +echo: echo.o + ld -melf_i386 echo.o -o echo + +echo.o: echo.s + as --32 echo.s -o echo.o + +clean: + rm echo echo.o diff --git a/lab2-v4/echo.s b/lab2-v4/echo.s new file mode 100644 index 0000000..73150b9 --- /dev/null +++ b/lab2-v4/echo.s @@ -0,0 +1,43 @@ +# Jan Potocki 2022 + +# Definicje numerow funkcji systemowych i ich argumentow +SYSEXIT = 1 +SYSREAD = 3 +SYSWRITE = 4 +STDIN = 0 +STDOUT = 1 +SYSCALL32 = 0x80 + +# Stale +buff_len = 1 +end_char = 'Q' + +.global _start + +.bss +# Bufor na czytany znak +buff: .space buff_len + +.text +_start: +mov $SYSREAD, %eax # Wczytanie znaku ze standardowego wejscia +mov $STDIN, %ebx # ...funkcja systemowa read +mov $buff, %ecx +mov $buff_len, %edx +int $SYSCALL32 + +mov $end_char, %eax # Sprawdzenie, czy wczytano znak konczacy +cmp %eax, buff +je koniec # ...jezeli tak, skok na koniec + +mov $SYSWRITE, %eax # Wypisanie znaku na standardowe wyjscie +mov $STDOUT, %ebx # ...funkcja systemowa write +mov $buff, %ecx +mov $buff_len, %edx +int $SYSCALL32 +jmp _start # Skok na poczatek (petla) + +koniec: +mov $SYSEXIT, %eax # Funkcja systemowa exit... +mov $0, %ebx # ...kod zakonczenia 0 +int $SYSCALL32