Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.
POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI
URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N 1 Ćwiczenie laboratoryjne N 1 TEMAT: WPROWADZENIE DO PRZEDMIOTU Celem ćwiczenia jest zapoznanie się z Turbo Asemblerem (TASM) i jego podstawowymi funkcjami. Program TASM jest wyprodukowanym przez firmę Borland, programem kompilującym pliki *.ASM zawierające programy napisane w języku ASSEMBLER. Innymi znanymi programami asemblującymi są MASN, WASM, NASM. Program TASM umożliwia skompilowanie pliku tekstowego z rozszerzeniem '.ASM' do pliku z rozszerzeniem '.OBJ': tasm [ /parametr] nazwa_pliku Następnie wykorzystując konsolidatora – TLINK tworzy się pliki wykonawcze, z rozszerzeniem '.EXE' lub '.COM' w zależności od wykorzystanych parametrów: tlink [/ parametr ] nazwa_pliku Czym jest Asemblacja (asemble)? W dużym uproszczeniu kompilacja polega na przetłumaczeniu instrukcji języka Assembler na tzw. język wewnętrzny komputera (kos maszynowy). W efekcie kompilacji dla każdego pliku źródłowego (np. .asm) zostanie utworzony plik o tej samej nazwie lecz z rozszerzeniem .obj zawierający skompilowaną postać modułu źródłowego. Celem kompilacji jest: 1. sprawdzenie poprawności składniowej, 2. wygenerowanie kodu wynikowego funkcji i procedur zdefiniowanych w pliku, 3. oznaczenie wywołań funkcji i odwołań do zmiennych zadeklarowanych, lecz nie zdefiniowanych w danym pliku, 4. rozmieszczenie kodu wynikowego w segmentach, 5. utworzenie identyfikatorów funkcji właściwych dla plików '.obj', 6. umieszczenie wszystkich wymienionych informacji w zbiorze .obj, zrozumiałym dla programu łączącego. Czym jest Konsolidator ( linker )? Kolejny etap nazywany jest łączeniem (ang. Linking) i polega na połączeniu w wykonywalną całość modułów programu. Narzędziem wykorzystywanym w tej fazie jest program łączący , zwany też konsolidatorem (linker) . Jego zadaniem jest zapewnienie odwołań między funkcjami i zmiennymi znajdującymi się w różnych modułach i umieszczenie całości programu w wykonywalnym zbiorze. Podczas łączenia wykonywane są trzy podstawowe operacje: 1. segmenty znajdujące się w łączonych modułach są łączone, ewentualnie rozmieszczane odpowiednio w programie, 2. w miejsce odwołań (oznaczonych w czasie kompilacji) są wstawiane rzeczywiste adresy funkcji i zmiennych, 3. całość umieszczana jest w zbiorze o formacie akceptowalnym przez dany system lub odpowiednio zdefiniowanym. 1 z 4 POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N 1 Zadania do wykonania: 1. Utworzyć plik wykonawczy o rozszerzeniu '.COM', wyświetlający na ekranie monitora napis ‘Hello World’. Po pierwsze aby utworzyć plik o zadanym rozszerzeniu należy wiedzieć jak powinien on wyglądać. Więc, oto fragment pliku Tasm_help.txt Q. How do I create a .COM file? A. Your assembler source should be assembled in the tiny model (.MODEL TINY) and should include an ORG 100h following the opening of the code segment, as shown below: .MODEL TINY .CODE ORG 100h start: .... ; body of program END start ; defines the entry point as start Don't include a .STACK directive in a program designed to be a .COM. TLINK will create a .COM file instead of an .EXE file if the /t option is specified. For example, tlink /t SHOW87 will create SHOW87.COM instead of SHOW87.EXE. Tak więc w pierwszej kolejności należy utworzyć plik tekstowy z rozszerzeniem '.ASM', np. używając polecenia shift+F4 w Notron Commander lub korzystając z notatnika w Windows (nazwa pliku dowolna), wykonującego następujące polecenia ASSEMBLERA: MOV DX, OFFSET MASSAGE MOV AH, 9 INT 21H RET MASSAGE DB "Hello World", 0DH, 0AH, '$' (wielkość liter nie ma znaczenia) Opis poszczególnych rozkazów można znaleźć w programie helppc.com, help.exe, intrlist.exe lub w każdej książce poświęconej Asemblerowi, mimo to opiszemy tu kilka z nich: Dyrektywa . MODEL powoduje wybranie standardowego modelu pamięci dla programu w języku asembler. Model pamięci to konfiguracja decydująca o sposobie użycia i połączenia segmentów. Każdy model cechuje się innymi 2 z 4 POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N 1 ograniczeniami w zakresie maksymalnej przestrzeni dostępnej dla kodu i danych. Należy również pamiętać, że wybór modelu ma wpływ na sposób dostępu do procedur i danych programu. Tiny Łączna wielkość kodu i danych nie może być większa niż 64kB Small Segment kodu <= 64 kB, segment danych <= 64 kB; jeden segment kodu i danych Medium Segment danych <= 64 kB, kod o dowolnej wielkości; wiele segmentów kodu i jeden segment danych Compact Segment kodu <= 64 kB, dane o dowolnej wielkości; wiele segmentów danych i jeden segment kodu Large Segment kodu > 64 kB, segment danych > 64 kB wiele segmentów kodu i danych Huge Analogicznie do modelu Large , ale poszczególne zmienne (na przykład tablice) mogą być większe niż 64 kB Flat Brak segmentów; 32-bitowe adresy są używane zarówno dla kodu, jak i dla danych; tylko tryb chroniony Dyrektywa .code oznacza początek segmentu kodu, w którym znajdują się polecenia wykonywalne. Przerwanie INT 21H z atrybutem 09H służy do wyświetlania na ekranie łańcucha znaków (tekstu). DS:DX – adres początku łańcucha, łańcuch kończy się znakiem '$'. Następnie należy skompilować utworzony przez nas plik, przy odpowiednich warunkach, o których można przeczytać w Tasm.txt , jeżeli wystąpią ewentualne błędy należy je poprawić. Jeżeli kompikacja przebiegła poprawnie należy zlinkować plik '.OBJ' przy odpowiednich wspomnianych wyżej warunkach, tj. (fragment pliku Tlink.txt ): Unless otherwise specified, options work with both TLINK and TLINK32. Options are case-sensitive and must be preceded by either a slash (/) or a hyphen (-). To turn off a default option, place a hyphen after the option at the command-line (for example, -P- or /P-). You can place options anywhere in the command line. You don't need spaces after options (/m/f/c is the same as /m /f /c), but you must separate options and files with a space. (…) /t 16-bit Creates a tiny-model DOS .COM file. /x 16/32-bit Doesn't create a map file. (…) Kompilacja i konsolidacja mogą odbyć się automatycznie jeżeli zostanie urzyty plik com.bat w celu uzyskania pliku '*.com' lub exe.bat dla pliku '*.exe'. 2. Utworzyć plik wykonawczy o rozszerzeniu .EXE, wyświetlający na ekranie monitora napis ‘Hello World’. Ponownie należy utworzyć plik z rozszerzeniem .ASM, o treści: TITLE PROGRAM HELLO WORLD .MODEL SMALL .STACK 100H 3 z 4 POLITECHNIKA KOSZALIŃSKA - WYDZIAŁ ELEKTRONIKI URZĄDZENIA ZEWNĘTRZNE Ćwiczenie laboratoryjne N 1 .CODE ORG 100H MAIN PROC MOV AX,@DATA MOV DS,AX MOV DX,OFFSET MASSAGE MOV AH,9 INT 21H MOV AX,4C00H INT 21H MAIN ENDP .DATA MASSAGE DB „Hello World”, 0DH, 0AH, ‘$’ END MAIN Kilka słów wyjaśnienia: Dyrektywa . stack rezerwuje dla programu 100h (256) bajtów na stosie. Dyrektywa data @data contains segment of define by .DATA z Asm.txt w katalogu Tasm\Helpik\ Dyrektywa .data oznacza początek segmentu danych. 0DH i 0AH – sekwencja znaków nowego wiersza. 3. Korzystając z Turbo Debaggerr'a (TD.exe) sprawdzić działanie utworzonego programu wykonyjąc go krok po kroku (F7). 4. Zapoznać się z plikami znajdującymi się w katalogu DOC. Przykładowe pytania i polecenia: 1. Scharakteryzować liczby binarne, szesnastkowe, ze znakiem i bez znaku. 2. Wyjaśnij sposób tworzenia adresu fizycznego korzystając z zapisu logicznego adresu (segment:offset) 3. Opisz zasadę działania przerwania INT 21H z atrybutem AX=4C00H . 4. Wyjaśnij zasadę działania dyrektyw proc i endp. 5. Co oznacza zapis db ? 6. Czym różni sie plik typu .exe od pliku typu .com? Literatura: Stanisław Kruk, Asembler Podręcznik użytkownik, Mikom, Warszawa 1999. Kip r. Irvine, Asembler dla procesorów Intel Vademacum profesjonalisty , Helion, Gliwice 2003 http://free.of.pl/a/asmpage/asmtuts.htm 4 z 4 |
Menu
|