EMAS: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
Dodane 991 bajtów ,  26 sie 2014
brak opisu 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. Jeden znak w pojedynczych cudzysłowach:
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]].


'a'
Znak w pojedynczych cudzysłowach:


kodowany jest jako jego wartość w kodzie ASCII na młodszym bajcie słowa. Dwuznak:
'a', '\n', '\xa1', '\0177'


'ab'
kodowane są jako ich wartość w kodzie ASCII na młodszym bajcie słowa. Dwuznak:


kodowany jest jako wartości podanych znaków w kodzie ASCII odpowiednio na starszym i młodszym bajcie słowa. Trójznak:
'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 arytmetyczne ===
=== 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)


=== Operatory bitowe ===
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 ==

Menu nawigacyjne