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: Sławomir Skrzyński