Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania.

Podobne dokumenty
Adam Kotynia, Łukasz Kowalczyk

Zadanie Zaobserwuj zachowanie procesora i stosu podczas wykonywania następujących programów

Przedmiot : Programowanie w języku wewnętrznym. Ćwiczenie nr 4

Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi)

Programowanie niskopoziomowe

Programowanie Niskopoziomowe

Architektura komputerów

PODSTAWOWE ELEMENTY ASEMBLERA TRYBY ADRESOWANIA. OPERATORY ASEMBLERA

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Wykład PASCAL - Pliki tekstowe

Architektura komputerów. Asembler procesorów rodziny x86

organizacja procesora 8086

Laboratorium z systemów operacyjnych. System plików - funkcje systemowe. Anna Wojak

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

end start ; ustawienie punktu startu programu i koniec instrukcji w assemblerze.

Sprzęt i architektura komputerów

PROGRAMY REZYDENTNE Terminate and State Resident, TSR

INSTRUKCJE Instrukcje przeniesienia: Instrukcje konwersji: Arytmetyczne instrukcje:

System plików warstwa logiczna

PROGRAMOWANIE NISKOPOZIOMOWE. Systemy liczbowe. Pamięć PN.01. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

7. Podstawy zarządzania szablonami

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Systemy Operacyjne - Operacje na plikach

Ćwiczenie 3. Konwersja liczb binarnych

Komunikacja za pomocą potoków. Tomasz Borzyszkowski

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Programowanie niskopoziomowe

Pliki. Operacje na plikach w Pascalu

PROGRAMOWANIE NISKOPOZIOMOWE

Biblioteka standardowa - operacje wejścia/wyjścia

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Ćwiczenie nr 4. Zasady kodowania podprogramów

Programowanie Niskopoziomowe

Podstawowe wiadomości o systemach plików.

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Asembler ASMX51 INSTRUKCJA OBSŁUGI

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Kolejki FIFO (łącza nazwane)

Informator techniczny

Wyświetlacz alfanumeryczny LCD zbudowany na sterowniku HD44780

Sprzęt i architektura komputerów

Architektura Systemów Komputerowych

Działanie systemu operacyjnego

Mikroinformatyka. Wielozadaniowość

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Architektura komputerów

Programowanie Niskopoziomowe

Działanie systemu operacyjnego

Sterowanie pracą programu

architektura komputerów w 1 1

Programowanie Niskopoziomowe

CPU ROM, RAM. Rejestry procesora. We/Wy. Cezary Bolek Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki

Programowanie w asemblerze Środowiska 64-bitowe

Działanie systemu operacyjnego

INSTRUKCJA OBSŁUGI PROGRAMU DO ODCZYTU PAMIĘCI FISKALNEJ DATECS OPF

Działanie systemu operacyjnego

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

1 second UPS. Poziom trudności: łatwy. Wersja dokumentacji: 1.3. Aktualizacja: Beckhoff Automation Sp. z o. o.

Ćwiczenia z S Komunikacja S z miernikiem parametrów sieci PAC 3200 za pośrednictwem protokołu Modbus/TCP.

Zgrywus dla Windows v 1.12

Instytut Teleinformatyki

Dlaczego stosujemy edytory tekstu?

Ćwiczenie nr 6. Programowanie mieszane

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

Programowanie hybrydowe C (C++) - assembler. MS Visual Studio Inline Assembler

Infekowanie plików EXE PE amdfanatyk

2 INSTALACJA OPROGRAMOWANIA. 3 3 GŁÓWNE OKNO PROGRAMU 3 4 MODUŁ OBSŁUGI ARCHIWUM 7

Formaty obrazów rastrowych biblioteki PBM

Utworzenie pliku. Dowiesz się:

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Ćwiczenie 2. Siedmiosegmentowy wyświetlacz LED

Operacje wejścia/wyjścia (odsłona druga) - pliki

Instrukcja obsługi urządzenia DS150E z systemem operacyjnym Windows 7. Dangerfield luty 2010 V1.0 Delphi PSS

Programowanie w asemblerze Uruchamianie programów

Programowanie w języku Python. Grażyna Koba

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Opis procedur asemblera AVR

1. Operacje logiczne A B A OR B

Procesory rodziny x86. Dariusz Chaberski

Lista instrukcji mikroprocesora Programowanie w assemblerze

TM PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T

Dariusz Kozak ZESTAW URUCHOMIENIOWY MIKROKOMPUTERÓW JEDNOUKŁADOWYCH MCS-51 ZUX51. Loader LX51 INSTRUKCJA OBSŁUGI DK Wszystkie prawa zastrzeżone

VinCent Administrator

Pliki. Informacje ogólne. Obsługa plików w języku C

16MB - 2GB 2MB - 128MB

Technika mikroprocesorowa I Wykład 2

System plików. Warstwowy model systemu plików

Wprowadzenie do Architektury komputerów. Asembler procesorów rodziny x86

J. Duntemann Zrozumieć Assembler Leo J. Scanlon Assembler 8086/8088/80286 S. Kruk Programowanie w Języku Assembler

INFORMATYKA Studia Niestacjonarne Elektrotechnika

CYKL ROZKAZOWY = 1 lub 2(4) cykle maszynowe

Programowanie w językach

INSTRUKCJA OBSŁUGI PRZYSTAWKI PEN-01 DO PENDRIVE A

Klawiatura. Klawisze specjalne. Klawisze specjalne. klawisze funkcyjne. Klawisze. klawisze numeryczne. sterowania kursorem. klawisze alfanumeryczne

Transkrypt:

Jak wiemy, wszystkich danych nie zmieścimy w pamięci. A nawet jeśli zmieścimy, to pozostaną tam tylko do najbliższego wyłączenia zasilania. Dlatego trzeba je zapisywać do pliku, a potem umieć je z tego pliku odczytać.

W Asemblerze nie ma do tego celu żadnych instrukcji (jak i do innych operacji z tym związanych). By stworzyć plik trzeba użyć pewnych przerwań. DOS - przerwanie systemowe 21h Linux przerwanie systemowe 80h

Do tworzenia pliku używamy przerwania 21H i funkcji 3CH. Przerwania wykonuje się w Asemblerze za pomocą instrukcji INT, a funkcja jest to wartość rejestru AH.

Przed wywołaniem tego przerwania w rejestrze CX podajemy atrybuty naszego pliku (o atrybutach powiemy później), a w DS:DX nazwę, jaką ma mieć. Nazwa ma być zapisana w kodzie ASCIIZ, tzn. musi być zakończona znakiem o kodzie 0, np. jeśli chcemy stworzyć plik o nazwie "PLIK.TXT" napiszemy tak:

MOV AH,3CH MOV CX,0 MOV DX,OFFSET Nazwa INT 21H... Nazwa DB "PLIK.TXT",0 Jeśli operacja zakończy się sukcesem, to w rejestrze AX znajdzie się numer dojścia do pliku. Jest on bardzo ważny. Identyfikuje on plik, do którego będą później zapisywane dane. Jeśli jednak operacja tworzenia pliku zakończy się niepowodzeniem to zostanie ustawiony znacznik C, a rejestr AX będzie posiadał kod powstałego błędu.

By otworzyć plik, należy użyć funkcji 3DH przerwania 21H. Jako parametry podajemy: w DS:DX adres do nazwy pliku (ASCIIZ); AL - tryb dostępu.

Mamy do dyspozycji następujące tryby: bity wartość opis 7 0 Procesy potomne dziedziczą dojście wraz z numerem 4..6 000 Każdy proces może otworzyć plik wielokrotnie z prawem do pisania i/lub czytania, ale tylko w tym trybie 4..6 001 Pełna wyłączność. Nie mogą istnieć żadne inne dojścia do pliku. 4..6 010 Wyłączność pisania, pozostałe dojścia mogą mieć tylko prawo do czytania, jednak nie mogą być otwarte w trybie 000 4..6 011 Wyłączność pisania, pozostałe dojścia mogą mieć prawo tylko do czytania i mogą być otwarte w trybie 000 4..6 100 Mogą istnieć inne dojścia z prawem do czytania i/lub pisania, jednak nie mogą być otwarte w trybie 000 0..3 000 Prawo do czytania 0..3 001 Prawo do pisania 0..3 010 Prawo do czytania i pisania

Zazwyczaj używa się trzech trybów: AL=0 - czytanie AL=1 - pisanie AL=2 - czytanie i pisanie

Jeśli więc chcemy otworzyć istniejący plik o nazwie PLIK.TXT napiszemy: MOV AH,3DH MOV AL,0 MOV DX,OFFSET Nazwa INT 21H... Nazwa DB "PLIK.TXT",0 Podczas otwierania mogą wystąpić również błędy i wtedy znacznik C jest ustawiany, a AX posiada kod błędu. Jeśli operacja została wykonana poprawnie C=0, a AX zawiera numer dojścia.

Jeśli mamy już otwarty plik i chcemy w nim coś zapisać musimy użyć funkcji 40H przerwania 21H. W rejestrze BX podajemy numer dojścia (uzyskaliśmy go podczas otwierania pliku), w rejestrach DS:DX podajemy adres początku danych, które chcemy zapisać, a w rejestrze CX podajmy ilość bajtów do zapisania. Jeśli operacja zakończy się sukcesem znacznik C jest wyzerowany, a AX zawiera liczbę bajtów zapisanych. Jeśli podczas zapisu wystąpił błąd C=1, a AX zawiera kod błędu.

Jeśli więc chcemy zapisać w naszym (otworzonym wcześniej) pliku napis "KURS ASSEMBLERA" napiszemy: MOV AH,40H MOV BX,Numer dojścia MOV DX,OFFSET Napis MOV CX,15 INT 21H... Napis DB HELLO WORLD."

Do czytania z pliku służy funkcja 3FH przerwania 21H. W rejestrze BX podajemy również numer dojścia, CX ilość bajtów, które chcemy przeczytać, a w DS:DX adres bufora, gdzie mają zostać one zapamiętane. Jeśli operacja zakończy się sukcesem w rejestrze AX będziemy mieli ilość przeczytanych bajtów, a znacznik C=0. Ilość przeczytanych bajtów nie musi być równa ilość bajtów, które kazaliśmy przeczytać. Jeśli plik zawiera np. 30 bajtów danych, a my mu każemy przeczytać 50 bajtów, to AX będzie zawierało 30 bajtów.

Każdy plik, który został wcześniej otwarty trzeba na koniec zamknąć Do tego celu służy funkcja 3EH przerwania 21H. Podajemy w rejestrze BX numer dojścia do pliku, który chcemy zamknąć. Jeśli wystąpi jakiś błąd to znacznik C zostanie ustawiony, a AX zawiera kod powstałego błędu.

Do ustawiania wskaźnika w pliku służy funkcja 42H. W rejestrze BX podajemy numer dojścia, w AL sposób przesunięcia wskaźnika, a w CX:DX odległość na jaką chcemy przesunąć. Istnieją trzy rodzaje przesunięć: AL=0 - licząc od początku pliku AL=1 - licząc od bieżącej pozycji kursora AL=2 - licząc od końca zbioru Przesunięcie względem końca zbioru używa się również do obliczania wielkości zbioru, gdyż wynikiem funkcji 42H jest w DX:AX wartość aktualnego położenia (o ile nie wystąpił błąd, wtedy C=1, a AX kod błędu).

Do usuwania zbiorów z dysku służy funkcja 41H przerwania 21H. W rejestrze DS:DX podajemy nazwę zbioru w kodzie ASCIIZ. Jeśli nie wystąpi błąd znacznik C zostaje ustawiony, a AX zawiera kod powstałego błędu.

Jeśli chcemy sprawdzić jakie dany plik ma atrybuty musimy posłużyć się funkcją 43Hprzerwania 21H. Podajemy wówczas w AL wartość 0, a w DS:DX nazwę pliku w kodzie ASCIIZ. Po wykonaniu przerwania w CX będą atrybuty pliku. Atrybuty mają następujący format: bit0 - tylko do odczytu bit1 - ukryty bit2 - systemowy bit5 - archiwalny

Do nadawania atrybutów dla pliku służy również funkcja 43H. Podajemy teraz w AL wartość 1, w DS:DX nazwę pliku, a w rejestrze CX atrybuty, które chcemy nałożyć.

Czasami zachodzi potrzeba zmiany nazwy pliku. Wtedy trzeba posłużyć się funkcją 56H. W rejestrze DS:DX podajemy pierwotną nazwę pliku, a w rejestrze ES:DI nową nazwę pliku. Jeśli operacja zakończy się niepowodzeniem zostanie ustawiony znacznik C, a rejestr AX będzie zawierał kod błędu.

Numer funkcji 3 Jako argumenty funkcji podajemy: EBX = deskryptor pliku ECX = adres bufora docelowego EDX = liczba bajtów do przeczytania Funkcja zwraca w EAX liczbę odczytanych bajtów lub kod błędu

Numer funkcji 4 Jako argumenty funkcji podajemy: EBX = deskryptor pliku ECX = adres bufora źródłowego EDX = liczba bajtów do zapisania Funkcja zwraca w EAX liczbę zapisanych bajtów lub kod błędu

MOV EAX, 4 ; numer funkcji systemowej: ; sys_write - zapisz do pliku MOV EBX, 1 ; numer pliku, do którego pisze. ; 1 = standardowe wyjście = ekran MOV ECX, tekst ; ECX = adres (offset) tekstu MOV EDX, dlugosc ; EDX = długość tekstu INT 80h ; wywołanie funkcji systemowej... section.data tekst DB "Czesc", 0ah ; napis dlugosc EQU $ - tekst ; długość napisu

Numer funkcji 5 Jako argumenty funkcji podajemy: EBX = adres nazwy pliku ASCIIZ ECX = bity dostępu EDX = prawa dostępu / tryb Funkcja zwraca w EAX deskryptor pliku lub kod błędu

MOV EAX, 5 ; numer funkcji systemowej: MOV EBX, plik ; adres nazwy pliku MOV ECX, 2 ; 2 - otwieranie do odczytu i zapisu MOV EDX, 111000000b ; 700 - zabroń innym dostępu INT 80h section.data plik db "nazwa.txt",0 ; jeśli udalo się otworzyc plik ; w EAX znajdzie się deskryptor pliku ; nazwa pliku

Numer funkcji 6 Jako argumenty funkcji podajemy: EBX = deskryptor pliku Funkcja zwraca w EAX 0 lub kod błędu

MOV EAX, 6 ; numer funkcji systemowej: MOV EBX, <deskryptor_pliku> pliku INT 80h... ; EBX = deskryptor

Numer funkcji 8 Jako argumenty funkcji podajemy: EBX = adres nazwy pliku ASCIIZ ECX = prawa dostępu / tryb Funkcja zwraca w EAX deskryptor pliku lub kod błędu

Numer funkcji 8 Jako argumenty funkcji podajemy: EBX = adres nazwy pliku ASCIIZ Funkcja zwraca w EAX 0 lub kod błędu