Urz Zew Cw1, 1 STUDIA - Informatyka Politechnika Koszalińska, muniol, II rok, 3sem, Laborki systemy cyfrowe, sc paczka zadań, Systemy Cyfrowee, !

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
 
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • alter.htw.pl
  • Powered by WordPress, © Nie obrażaj więc mojej inteligencji poprzez czynione na pokaz zaniżanie własnej.