Nazwy zmiennych
【Nazwy zmiennych】
(1) Niezależnie od tego, czy używamy wielkich, czy małych liter, nazwa zmiennej zaczyna się od angielskiej litery `A~Z`, `a~z`, `_`(2). „@” nie może być początkiem nazwy zmiennej
(3) Początek nazwy zmiennej może być `A~Z`, `a~z` i `_`, `0~9`
(4) Długość zmiennej nie jest ograniczona.
(5) W przypadku stosowania Mini-C nie ma ograniczeń co do wielkości liter w nazwie zmiennej.
(6). Przykład: BYTE abcd, _123; ( O )
BYTE @ABC; ( X ) => @ nie może być początkiem nazwy zmiennej
【Aby wyświetlić liczby】
(1). System szesnastkowy: Na przykład: 0xAB, 0CDh
(2). System dziesiętny: Na przykład: 12, 34d
(3). Binarny: Na przykład: 0B11_00_1100, 01011010B
(4). znak: Na przykład: „A”, „Z”
(5). Dodanie `_` do pliku binarnego może zwiększyć czytelność programu.
(6). Przykład:
MOV A, 31h
MOV A, 0B11_0001
MOV A, '1'
【Aby pokazać komentarz】
(1) Użyj /* … */ jako komentarz dla całej sekcji
(2) Użyj // jako znaku pojedynczej linii
(3). Na przykład: /* to jest komentarz do sekcji
………………….
…………………. */
MOV A, 12 // To komentarz dotycząca pojedynczego wiersza
【Definicja symbolu `;`】
(1). W projekcie modelu Asm `;` można używać jako komentarz pojedynczego wiersza.
Przykład: MOV A, 34 ; To jest komentarz dotycząca pojedynczego wiersza w projekcie Asm
Mimo że niektórzy użytkownicy nie są przyzwyczajeni do dodawania `;` na końcu polecenia, kompilacja może zostać ukończona.
Jednakże składnia może być zupełnie inna, jeżeli w języku C brakuje `;`.
Przykład: a) while (PA.0)
liczba++;
Gdy PA.0 jest wysokie, liczba będzie stale wzrastać
b) while (PA.0) ;
liczba++;
Liczba będzie rosła i wyniesie 1, gdy PA.0 będzie niskie
c) while (! ADCC.6) ;
liczba++;
Liczba wzrośnie do 1 po zakończeniu konwersji ADC.
d) while (! ADCC.6)
liczba++;
Oblicz całkowitą liczbę zliczeń po zakończeniu konwersji ADC.
(2). W projekcie Mini-C `;` oznacza koniec instrukcji.
Wszystkie zakończenia składni powinny zawierać `;`
Na przykład: A = 56; A += M; // Oznacza to dwie instrukcje.
(3). Dla kompilatora:
Podczas edycji rozszerzenia nazwy pliku ﹒ASM /﹒INC w programie znak `;` na końcu będzie wyświetlany jako uwaga.
Podczas edycji rozszerzenia nazwy pliku ﹒C /﹒H w programie, `;` stanowi jedynie komórkę ograniczającą polecenie.
Różnica w rozszerzeniu nazwy pliku może mieć wpływ jedynie na sposób wyświetlania kompilatora, ale nie ma wpływu na metodę kompilacji.
Metodę kompilacji nadal można zdefiniować w trybie projektu Asm lub Mini-C.
【Aby wyświetlić etykietę】
Cała nazwa etykiety jest kontynuowana znakiem „:”, a następnie kodem instrukcji, jak pokazano w poniższym przykładzie:
Etykieta: mov A, 12;
…
Jump do etykiety;
Ponadto, aby uniknąć zwiększania nazwy etykiety, obsługiwana jest nazwa etykiety uproszczona do @@
jak pokazano w poniższym przykładzie:
goto @F // Jump do etykiety 1 @@ później
…
@@: // Etykieta 1
…
goto @F // Jump do etykiety 2 @@ później
…
goto @B // Jump do etykiety 1 @@ do przodu
…
@@: // Etykieta 2
…
goto @B // Jump do etykiety 2 @@ do przodu
Użytkownik może samodzielnie nadać nazwę prostej etykiecie, aby zapewnić elastyczność skoków, jak pokazano w poniższym przykładzie:
@@.XX: // Etykieta XX
Jump do @F // Jump do @@
…
@@: …
Jump do @B.XX // Jump do następnej etykiety XX @@
…
Jump do @F.XX // Jump do następnej etykiety XX @@
…
@@: …
goto @B // Jump do przodu @@
…
@@.XX: // etykieta XX
【Korzystanie z EQU】
(1) EQU można użyć do zadeklarowania stałej stałej i zapobieżenia drugiej zmianie.
W przypadku stałej stałej zaleca się użycie poniższej deklaracji:
Przykład: Const EQU 20
(2). EQU można użyć do zastąpienia stałego ciągu znaków, jak pokazano w poniższym przykładzie.
Przykład:
GET_HI EQU mov a, hb@
punkt WORD;
GET_HI punkt; // odpowiednik mov a, b@point
(3) EQU można również używać jako aliasu zadeklarowanej zmiennej.
Przykład:
BYTE bb1;
bb2 EQU bb1; // bb2 / bb3 jest aliasem bb1
bb3 EQU bb1; // Jest to przyjęta składnia.
(4). EQU można również stosować do deklaracji bitów.
Przykład:
BIT bit2 : bb2.2; // Standardowa składnia deklaracji BIT.
bit3 EQU bb3.3; // Przyjęta składnia, z której korzysta większość użytkowników.
Zależność tę ilustruje poniższy rysunek:
【Aby użyć symbolu `=>`】
(1). W przypadku zmiennej, która musi być zmieniana wielokrotnie, użytkownik może użyć `=>`, aby zadeklarować zmienną tymczasową.
Przykład:
Temp => 0; .REPEAT 10 // Please refer to the syntax of the .REPEAT
DC Temp Temp => Temp + 1;
.ENDM
Ta składnia jest podobna do DC 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
(2). W większości kompilatorów tę funkcję często oznacza się znakiem `=`.
Może jednak kolidować ze znakiem `=` w języku C.
System Padauk może uniknąć konfliktu stosując `=>`.
【Korzystanie z #DEFINE i #UNDEF】
(1) #DEFINE służy do deklarowania zamiany napisu, a #UNDEF do anulowania definicji.
(2). Jeśli użytkownik chce ponownie zdefiniować inny napis, powinien użyć #UNDEF, aby anulować definicję.
(3) Użycie funkcji #DEFINE wyłącznie do zastępowania znaków pomoże zwiększyć elastyczność programu.
Użytkownik może porównać z instrukcjami MARCO .
Przykład:
#DEFINE EINT ENGINT
#DEFINE Goto_Val(x) goto label_#x
tmp => 0;
_pcadd
{
.repeat 2 // it is likely to generate
Goto_Val(%tmp); // goto label_0;
tmp => tmp + 1; // goto label_1;
.endm
}
(4). Użytkownik może użyć znaku % , aby zamienić przesłany parametr z ciągu znaków na liczby.
Jak pokazano w przykładzie powyżej.
Jeśli chodzi o % transmisji, użytkownik może zapoznać się z aplikacją ECHO w celu uzyskania dalszych informacji.
【Aby użyć ENUM】
(1). Składnia: enum { nazwa0 [= STAŁA] {, nazwa1 [= STAŁA] } … };
Przykład: enum { nazwaA, nazwaB, nazwaC };
Opis: Zdefiniuj nazwę A EQU 0, nazwę B EQU 1, nazwę C EQU 2.
Przykład: enum { nazwaX = 0xAA, nazwaY, nazwaZ = 0xCC };
Opis: Zdefiniuj nazwę X EQU 0xAA, nazwę Y EQU 0xAB, nazwę Z EQU 0xCC.
(2). W przypadku użycia stałej zadeklarowanej przez enum, jej zawartość będzie wyświetlana po poruszeniu myszą.
Jednak użycie stałej zadeklarowanej przez #DEFINE nie spowoduje wyświetlenia zawartości po poruszeniu myszą.
Domyślna wartość zadeklarowanej stałej zostanie automatycznie dodana z 1 w wyliczeniu, co jest łatwiejsze w użyciu niż EQU.
【Deklaracja .CHIP】
(1). Składnia: .CHIP xxxx
(2). Opis: Służy do wyboru układu scalonego. Zazwyczaj ta instrukcja znajduje się na początku programu.
Po przesunięciu myszy na słowo kluczowe .CHIP użytkownik zobaczy wskazówkę zawierającą listę wszystkich obsługiwanych nazw układów scalonych.
【Używanie .INCLUDE do przechowywania innych plików】
(1). Składnia: .INCLUDE nazwa_pliku lub #INCLUDE nazwa_pliku
(2). Opis: Zawiera wybraną nazwę pliku.
Użycie .INCLUDE i #INCLUDE da ten sam wynik.
Przykład: .INCLUDE Src1.asm
.INCLUDE "Src 2.asm" // "Może zakryć puste miejsce"
【Używanie .PRINTF do debugowania】
(1). Składnia .PRINTF ("... %d .. %h", parametr1, parametr2, ...);
(2). Opis: Wyniki w formacie wyjściowym są wyświetlane w oknie dziennika tylko podczas korzystania z emulatora.
Wykonywanie tej funkcji może spowolnić działanie. Dlatego nadaje się ona tylko do aplikacji, które nie wymagają reakcji w czasie rzeczywistym.
Przykład: .PRINTF("Witaj");
.PRINTF ("ALU = %02X, IO = %X, Mem = %d", A, PA, User_Var);
Przejdź do strony głównej Wróć do kategorii MINI-C
