POLITECHNIKA KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ć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
zródłowego (np. .asm) zostanie utworzony plik o tej samej nazwie lecz z rozszerzeniem .obj
zawierający skompilowaną postać modułu zró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 KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ć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 znalezć 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 KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ć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 Aą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 KOSZALICSKA - WYDZIAA ELEKTRONIKI
URZDZENIA ZEWNTRZNE
Ć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
Wyszukiwarka
Podobne podstrony:
Urz Zew Cw09Urz Zew Cw3Urz Zew Cw5Urz Zew Cw2Urz Zew Cw10W208 demontaż listwy szyby przedniej zew14 EW ZEW Srodowisko do metody Johna001 PMP cw1Wyniki cw1cw1cw1MS cw1borland cpp builder cw1Dz Urz Min Fin z dnia 10 września 2014 r pozCw1 Matlabwięcej podobnych podstron