zmienne i stale




Kurs Assemblera by Skowik
















var napis=new Array("Z","M","I","E","N","N","E"," ","I"," ","S","T","A","Ł","E");
var kolory=new Array("EEEE00","FFCC00","FFBB00","FFAA00","FF9900",
"FF7700","FF5500","FF3300","FF1100","FF0011",
"FF0033","FF0055","FF0077","FF0099","FF00AA","FF00CC",
"EE00EE","CC00FF","AA00FF","9900FF","7700FF","5500FF","3300FF");
for(i=0; i< 15; i++)
document.write(napis[i].fontcolor(kolory[i]));


Asemblerze, jak i w innych językach
programowania mamy do dyspozycji kilka dyrektyw, które umożliwiają definiowanie
zmiennych. Rozróżniamy trzy rodzaje zmiennych:1. Pojedyńcze2.
Tablica3. ŁańcuchPojedyńcze zmienne to zmienne które mają tylko
pojedyńczą wartość. Tablice są to struktury złożone z pól które mają pojedyńczą
wartość. Tablice deklarujemy instrukcją DUP (duplikat,powielenie). Format
tablicy:[nazwa] [jednostka pamięci] [ile razy] [masz
zduplikować znak w nawiasach ()] Łańcuchy są to ciągi jednego
typu tj ciągi liczb, napisy itp.Do deklarowania zmiennych używa się
następujących dyrektyw:

DB (define byte) - obszar o rozmiarze jednego bajta
DW (define word) - zmienna
o rozmiarze jednego słowa (dwóch bajtów)
DD (define doubleword) -
zmienna o rozmiarze dwóch słów (cztery bajty)
DF - zmienna o rozmiarze
trzech słów
DQ - zmienna o rozmiarze
czterech słów
DT - zmienna o rozmiarze
pięciu słów
Przykładowe zmienne deklarowanie zmiennych w segmencie danych:
X DW 0LICZBA DW 123HA DD ?LITERA DB "A"
Deklarując zmienne nadajemy im konkretne wartości. Można również przypisać,
tak jak jest w przykładzie literę, co w rezultacie jest przypisaniem liczby o
kodzie ASCII danej litery. Jeśli wartość liczby nie jest wiadoma, dana zmienna
będzie dopiero wykorzystana, wpisujemy znak zapytania. Wówczas zmienna nie ma
określonej wartości.
W zmiennych można przetrzymywać również etykiety, np:
START:...<program>...ADRES16 DW START ; zmienna zawiera
przesunięcie (offset) etykiety STARTADRES32 DD START ; zmienna zawiera
segment i przesunięcie etykiety START
W Asemblerze można również deklarować łańcuchy, np:
POTEGI_LICZBY_2 DW 1, 2, 4, 8, 16, 32, 64KODY DB 123, 54, 12, 143
Można deklarować również teksty, lub teksty i liczby, np:
NAPIS DB "to jest zmienna lancuchowa ktora jest napisem"KOMUNIKAT DB
"Blad drukarki"COS_TAM DB 12,"123",23,56
Teksty można podawać w cudzysłowach bądź apostrofach. Jeśli jednak otworzysz
cudzysłów, to musisz później go zamknąć również cudzysłowem.Jak już
wcześniej wspominałem jeśli chcemy stworzyć tablicę, można posłużyć się
dyrektywą DUP, np.

TABLICA DB 1024 DUP (?)Zostanie stworzona tablica 1KB-owa o
nieokreślonych wartościach. Można jednak nadać jej wartość, np.:

TABLICA DB 1024 DUP (0)Zostanie wówczas stworzona taka sama tablica,
tylko zostanie wyzerowana. Można również tak:

TABLICA DB 1024 DUP ('SKOWICO')Jeśli chcemy zadeklarować bardzo dużą
tablicę, to deklarujemy ją w osobnym segmencie, np. jeśli będziemy przechowywać
w niej obrazek, to zrobimy tak:

SCREEN SEGMENTEKRAN DB 64000 DUP (?)
SCREEN ENDS

StrukturyStruktury deklarujemy w podany
poniżej sposób.
nazwa_struktury STRUCTpole1pole2...nazwa_struktury
ENDSDyrektywa STRUCT umożliwia definiowanie struktur danych, tj.
pewne zgrupowanie zmiennych, niekoniecznie tego samego typu. Sama definicja
struktury nie powoduje włączenia danych do programu. Zapamiętywana jest ona
dopiero przy jej zadeklarowaniu.

Poszczególne pola struktury mają następujący format:
nazwa_pola DB wartość_początkowa
Nazwa_pola określa przesunięcie pola liczone od początku struktury. Struktur
nie można zagnieżdżać.
Ogólny format deklaracji struktury jest następujący:
[nazwa] nazwa_struktury <[wart._pola1],...>
Do struktury odwołujemy się za pomocą kropki, np.:
PRACOWNIK STRUCT NAZWISKO DB ''; nazwisko
IMIE DB ''; imię
WIEK DB ?
STAZ DB ?
PRACOWNIK ENDS
KOWALSKI PRACOWNIK <"Kowalski","jan",,2>

Mając już zadeklarowaną strukturę odwołujemy się do niej
np. tak:
MOV AL,KOWALSKI.STAZ
Do AL zostanie załadowany staż naszego Kowalskiego. Można również
tak:
LEA BX,KOWALSKI......MOV AL,[BX].STAZ
Rekordy
nazwa_rekordu RECORD nazwa_pola:szerokosc [=wyrazenie],...
Dyrektywa RECORD definiuje pewien rodzaj struktury danych, gdzie
operujemy na bitach. Nazwa_rekordu identyfikuje nasz rekord. Nazwa_pola określa
pole w rekordzie, szerokość, liczbę bitów, z których się składa pole, a
opcjonalne "wyrazenie", nadaje początkową wartość, np.:
DATA RECORD ROK:7,MIESIAC:4,DZIEN:5

Tak zadeklarowany rekord tworzy strukturę postaci:






0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

ROKMIESIĄCDZIEŃ
Format deklaracji:
[nazwa] nazwa_struktury <[wartosc],..>
np.:
DZIS DATA <87,12,31>
Z tak zdefiniowanej daty wyizolujemy wartość roku. Użyjemy więc operatora
MASK:
MOV BX,DZISAND BX,MASK ROK ;IZOLUJE BITY ROKUMOV CL,ROK ;LICZBA BITÓW
Z PRAWEJ STRONY POLASHR BX,CL
W BX mamy naszą datę.


Stałe i symbole
Podczas pisania programów często zachodzi potrzeba użycia tych
samych wartości. Wówczas można stworzyć stałą przy pomocy dyrektywy
EQU.
Działanie jej polega na przypisaniu nazwie określonej stałej wartości,
np:
LICZBA EQU 123
Można również przypisywać do stałych wyrażenia, np:
GETAL EQU MOV AL, DS:[SI]
Teraz w programie wpisanie:
GETAL
powoduje wykonanie instrukcji MOV AL,DS:[SI]
W Asemblerze można również przypisać inną nazwę rejestrowi, np:
AKUMULATOR EQU AX











Strona utworzona przez(c)2001


Wyszukiwarka

Podobne podstrony:
zmienne ip stałe
Zmienne IP na stałe
Jaką wartość będzie miała zmienna
6 2 Zmienna losowa
09 funkcje zmiennej rzeczywistej 3 4 pochodna funkcji
zmiennesr
C w6 zmienne dynamiczne wskazniki funkcji
calki nieoznaczone funkcji jednej zmiennej
Ewolucja i zmienność genomu drożdży winiarskichS cerevisiae
zmienne
Sozański Statystyczne miary zmienności a kwantyfikacja nierówności społecznej
3 dobór zmiennych do liniowego modelu ekonometrycznego
Podstawowe stałe fizyczne
Przekształcenia ciągłe zmiennej losowej
fizyka wzory i stale
zmienne

więcej podobnych podstron