| STATYSTYKI |
Od 06.09.2000
|
Optymalizacja: 1024x768, IE5 |
|
| Stałe i symbole |
Deklarowanie symboli
Istnieją dwa sposoby deklarowania symboli(stałych):
1. Przy pomocy dyrektywy EQU
Przypisujemy nazwie wyrażenie i wtedy tę nazwę stosujemy tak, jakby się
stosowało to wyrażenie.Przypisanie wykonane za pomocą equ jest stałe i niemożliwa jest redefinicja.
| Przykłady użycia equ | Opis |
| STALA equ 2000 | Przypisanie nazwie STALA wyrażenia 2000 |
| AKUMULATOR equ ax | Nadanie innej nazwy rejestrowi ax |
PI equ 3.1415 DWA_PI equ 2*PI | Dopuszczalne są także proste operacje arytmetyczne na symbolach |
| WYRAZENIE equ mov al, ds:[si] | Można również przypisywać do stałych wyrażenia.Teraz wpisanie w programie: WYRAZENIE spowoduje wykonanie instrukcji: mov al,ds:[si] |
2. Przy pomocy operatora =
Umożliwia przypisanie nazwie wyrażenia arytmetycznego i pozwala na zmianę
wartości symbolu i przedefiniowanie.
| Przykład użycia operatora = | Opis |
SYMBOL = 2 WYNIK= 2*SYMBOL SYMBOL = SYMBOL+1 | Przypisanie nazwie SYMBOL wartości 2 Przypisanie nazwie WYNIK wartości 2xSYMBOL A teraz SYMBOL=3 |
Operacje na symbolach
Operatory arytmetyczne
| Operator | Opis |
| + | Dodawanie. Przykład: X equ 10 Y equ X+2 mov ax,X+Y |
| - | Odejmowanie. Przykład: X equ offset start ;przesuniecie etykiety start Y equ X-5 |
| * | Mnożenie. Przykład: A = 100 B = 200 WYNIK = A * B |
| / | Dzielenie całkowite. Przykład: A = 100 B = 20 WYNIK = A/B ;5 |
| MOD | Reszta z dzielenia. Przykład: X equ 12345 Y equ X mod 10000 ;Y=2345 |
| SHL | Przesunięcie bitów w lewo o zadaną przez wyrażenie liczbę miejsc(mnożenie przez kolejne potęgi 2, czyli przesuwamy argument w lewo o określoną liczbę bitów, a z prawej strony agrumentu dodajemy zera). Przykład: maska equ 111010001001b pole equ 3 wynik equ maska shl pole ;wynik=010001001000b |
| SHR | Przesuwanie bitów w prawo o zadaną przez wyrażenie liczbę miejsc (dzielenie przez kolejne potęgi 2, czyli przesuwamy argument w prawo o określoną liczbę bitów, a z lewej strony argumentu dodajemy zera). Przykład: adres_slowa equ 111010001001b numer equ adres_slowa shl 1 ;numer 011101000100b |
Operatory logiczne
| Operator | Opis |
| AND | Logiczne "i" argumentów. Przykład: X equ 1001b Y equ 1100b mov ax,X AND Y ;mov ax,1000b |
| OR | Logiczne "lub" argumentów. Przykład: X equ 0101b Y equ 1010b mov cx,X OR Y ;mov cx,1111b |
| XOR | Logiczne "albo" argumentów. Przykład: X equ 1100b Y equ 1000b mov bx,X XOR Y ;mov bx,0100b |
| NOT | Negacja bitów argumentu. Przykład: liczba equ 00110011b mov dx,NOT liczba ;mov dx,11001100b |
Operacje binarne:
| X | Y | X AND Y | X OR Y | X XOR Y | NOT X |
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Operatory relacji
Służą do porównywania wartości dwóch wyrażeń. Wynikiem porównań jest wartość 0FFFFh reprezentująca prawdę, albo wartość 0h oznaczjąca falsz.
| Operator | Opis |
| EQ | Zwraca prawdę, gdy agrgumenty są równe. Przykład: mov cx, (warunek EQ 100) AND 1000 Interpretacja: warunek=100 ;mov cx, 0FFFFh AND 1000, czyli mov cx,1000 warunek różny od 100 ;mov cx,0AND 1000, czyli mov cx,0 |
| NE | Zwraca prawdę gdy argumenty są różne. |
| LT | Zwraca prawdę, gdy argument lewy jest mniejszy niż argument prawy. |
| GT | Zwraca prawdę, gdy argument prawy jest mniejszy niż argument lewy. |
| LE | Zwraca prawdę, gdy argument lewy jest mniejszy lub równy argumentowi prawemu. |
| GE | Zwraca prawdę, gdy argument prawy jest mniejszy lub równy argumentowi lewemu. |
Są to instrukcje bardzo pomocne, gdy chcemy np. załadować do jakiegość rejestru wartość z danego przedziału liczbowego, bądź liczbę spełniającą określone warunki: =,<,>,=<,>= argunentów.
Operatory zwracające wartość
| Operator | Opis |
| $ | Zwraca wartość wskaźnika assemblera - przesunięcie aktualnej instrukcji. |
| SEG | Zwraca nr segmentu, w którym znajduje się argument - etykieta. Przykład: mov bx,SEG tablica_znakow Oznacza to ,że do bx ładujemy nr segmentu, w którym jest tablica_znakow |
| OFFSET | Zwraca przesunięcie argumentu - etykiety. Przykład: mov si, offset tablica_znakow Oznacza to, że ładujemy do si przesunięcie tablicy tablica_znakow. |
| LENGHT | Zwraca długość tablicy zdefiniowanej przy pomocy dyrektywy DUP. Jeżeli zmienna została zadeklarowana bez użycia dyrektywy DUP to operator zwraca wartość 1. Przykład: TABLICA db 100 dup(0) mov ax,LENGHT TABLICA ;mov ax,100 |
| TYPE | Zwraca rodzaj zmiennej: 1-byte, 2-word, 4-doubleword. |
| SIZE | Zwraca rozmiar tablicy w bajtach (jest to iloczyn TYPE i LENGHT). Przykład: TABLICA dw 200 dup(0) mov ax,SIZE TABLICA ; zaladowanie 400 do ax mov bx,TYPE TABLICA ;zaladowanie 2 do bx |
| HIGH | Zwraca starszy bajt 16-bitowego argumentu(wartości numerycznej lub wyrażenia typu adresowego) . Przykład: LICZBA equ 01234h mov bh,HIGHT LICZBA ;zaladowanie do bh wartosci 12h |
| LOW | Zwraca młodszy bajt 16-bitowego argumentu(wartości numerycznej lub wyrażenia typu adresowego). Przykład: LICZBA equ 01234h mov bl,LOW LICZBA ;zaladowanie do bl wartosci 34h |
<<
|
|