3012
edycji
Nie podano opisu zmian |
|||
Linia 58: | Linia 58: | ||
=== Znaki === | === Znaki === | ||
EMAS pozwala na zapisywanie stałych całkowitoliczbowych również przy pomocy znaków, dwuznaków lub trójznaków. | EMAS pozwala na zapisywanie stałych całkowitoliczbowych również przy pomocy znaków, dwuznaków lub trójznaków. Znaki pojedyncze oraz dwuznaki obejmują cały zakres znaków ASCII i można je podawać również używając sekwencji unikowych. Trójznaki pozwalają kodować jedynie znaki poprawne dla kodu [[R40]]. | ||
Znak w pojedynczych cudzysłowach: | |||
'a', '\n', '\xa1', '\0177' | |||
kodowane są jako ich wartość w kodzie ASCII na młodszym bajcie słowa. Dwuznak: | |||
'ab', '\r\n', '\xaa\0001' | |||
kodowane są jako wartości podanych znaków w kodzie ASCII odpowiednio na starszym i młodszym bajcie słowa. Trójznak: | |||
'abc' | 'abc' | ||
kodowany jest w słowie za pomocą kodu R40. | kodowany jest w słowie za pomocą kodu [[R40]]. | ||
=== Liczby zmiennoprzecinkowe === | === Liczby zmiennoprzecinkowe === | ||
Linia 87: | Linia 89: | ||
Łańcuchy znaków są ciągami 8-bit znaków ujętymi w podwójne cudzysłowy. Poszczególne znaki można zapisywać dosłownie, lub (w przypadku dyrektyw '''.ascii''' i '''.asciiz''') używając jednej z sekwencji unikowych: | Łańcuchy znaków są ciągami 8-bit znaków ujętymi w podwójne cudzysłowy. Poszczególne znaki można zapisywać dosłownie, lub (w przypadku dyrektyw '''.ascii''' i '''.asciiz''') używając jednej z sekwencji unikowych: | ||
* \0'''yyy''' - gdzie '''yyy''' jest ósemkowym kodem znaku | * \0'''yyy''' - gdzie '''yyy''' jest ósemkowym kodem znaku | ||
* \x'''yy''' - gdzie '''yy''' jest szesnastkowym kodem znaku | * \x'''yy''' - gdzie '''yy''' jest szesnastkowym kodem znaku | ||
Linia 159: | Linia 162: | ||
== Wyrażenia == | == Wyrażenia == | ||
=== Operatory | === Operatory === | ||
Poniższa tabela przedstawia operatory arytmetyczne i bitowe, w kolejności malejących priorytetów | |||
{| class="wikitable" | |||
! Operatory !! Działanie | |||
|- | |||
| ~ || negacja bitowa | |||
|- | |||
| \ || skalowanie | |||
|- | |||
| *, /, % || mnożenie, dzielenie, reszta z dzielenia | |||
|- | |||
| +, - || dodawanie, odejmowanie | |||
|- | |||
| <<, >> || przesunięcie bitowe w lewo i w prawo | |||
|- | |||
| &, <nowiki>|</nowiki>, ^ || logiczny iloczyn, suma i suma wykluczająca | |||
|} | |||
Operator skalowania realizuje funkcję dokładnie taką samą, jak przesunięcie bitowe, jest tylko innym sposobem jego zapisu. Poniższe zapisy są równoznaczne: | |||
3\7 = 3 << (15-7) | |||
Skalowanie można rozumieć jako: "umieść liczbę 3 od 7 pozycji bitowej w górę. Bity dla tego zapisu numerowane są od 0 (bit najstarszy) do 15 (bit najmłodszy). Wynikiem będzie więc liczba: | |||
0000001100000000 | |||
== Dyrektywy assemblera == | == Dyrektywy assemblera == |