Problemy z kompilatorami
Użytkownicy kompilatorów zasygnalizowali problemy z wprowadzaniem wartości hex identyfikowaną literą "h" za liczbą. Zagadnienie to opiszę więc dokładniej:
Wartości hex można wprowadzać na dwa sposoby:
1) jako np $fa (poprzedzone znakiem dolara)
2) jako np 0fah (zakończone literą "h")
I z tym drugim sposobem mogą być klopoty. Kłopoty ze stałymi hex nie
są spowodowane kompilatorami. Tak działa każdy kompilator asemblera
dowolnego procesora na każdym komputerze (Amiga, PC, MAC).
Wartość hex identyfikowana znakiem "h" musi rozpoczynac sie od cyfry.
W przeciwnym wypadku wprowadzona liczba zostanie rozpoznana jako etykieta.
Jeśli pierwszym znakiem będzie litera musi więc być poprzedzona liczbą.
Sensowną jest tylko zero które nie zmieni wartości liczby.
dla przykładu zapisy poprawne: dla 8051: mov A,#0A5h ;wartość $a5 mov A,#0c2h ;wartość $c2 mov A,#1fh ;wartość $1f mov A,#01fh ;wartość $1f mov dptr,#0c4h ;wartość $00c4 mov dptr,#0ffffh ;wartość $ffff dla Z80: ld a,#0A5h ;wartość $a5 ld b,#0c2h ;wartość $c2 ld d,#1fh ;wartość $1f ld e,#01fh ;wartość $1f ld hl,#0c4h ;wartość $00c4 ld bc,#0ffffh ;wartość $ffff oraz niepoprawne, gdzie liczby zostaną popraktowane jako etykiety: dla 8051: mov A,#A5h ;etykieta "A5" mov A,#c2h ;etykieta "c2" mov dptr,#c4h ;etykieta "c4" mov dptr,#ffffh ;etykieta "ffff" dla Z80: ld a,#A5h ;etykieta "A5" ld b,#c2h ;etykieta "c2" ld hl,#c4h ;etykieta "c4" ld bc,#ffffh ;etykieta "ffff"
Format zapisu hex z literką "h" wymyślił nikt inny jak firma Intel.
Do niej można mnieć żal za kłopoty z zapisem hex.
Osobiście używam deklaraccji hex ze znakiem dolara przed wprowadzoną
wartością.
Jeśli masz pytania pisz: