Asembler dla MCS 51

background image

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Informacje ogólne

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Informacje ogólne

Asembler Asem-51 jest w pełni kompatybilny

ze standardowym zestawem instrukcji

mikrokontrolera 8051,

Program po asemblacji może być zapisany w

dwóch rodzajach plików:

Intel-HEX,który jest wykorzystywany przez

większość programatorów (.hex),

absolutny format OMF-51,który jest wymagany

przez większość symulatorów i debagerów (.bin),

Sprawdza się zarówno w małych jak również

dużych, rozbudowanych projektach.

background image

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

najważniejsze cechy

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

najważniejsze cechy

szybki, zwarty, niezawodny, łatwy w użyciu,

uruchamiany z linii komend, plików wsadowych lub z
sieci,

możliwość pracy w systemach: DOS (tryb rzeczywisty i
chroniony), Win32 i Linux,

pięć liczników adresowych obsługujących dostępne
przestrzenie adresowe,

automatyczna optymalizacja rozkazów skoków i wywołań
podprogramów,

możliwość tworzenia makrorozwinięć,

możliwość dołączania plików źródłowych ($INCLUDE),

Możliwość asemblacji warunkowej.

background image

Format pliku źródłowego

Linia pliku źródłowego może przyjąć jedną z trzech

postaci:

symbol:

instruction

arguments

;comment

 

symbol

instruction

argument

;comment

 

$control

(argument)

;comment

Pojedyncza linia nie może być dłuższa niż 255 znaków.

Cały tekst zapisany po znaku komentarza (;) jest przy

asemblacji pomijany.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (1)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (1)

background image

Przykład użycia symboli

 

HERE: MOV A,#0FFH ;definicja etykiety HERE i

załadowanie do akumulatora

wartości 255.

 

YEAR EQU 2005

;definicja symbolu o wartości

bieżącego roku

 

$INCLUDE (80C535.MCU)

;dołącz definicje dla

procesora 535.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (2)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (2)

background image

Przykłady

Stała (etykieta stałej) jest identyfikatorem

reprezentującym wartość liczbową. Składa się z ciągu liter i

cyfr rozpoczynającego się od litery. W skład stałej mogą

wejść znaki: 'a'..'z', 'ą'..'ź', '_', '@'. Wielkość liter nie ma

znaczenia. Do deklaracji wartości stałej służą dyrektywy EQU i

BIT. W programie deklaracja danej stałej może wystąpić

tylko raz, ale może być do niej wiele odwołań.

Przykład:

 

Led1 BIT P3.2

SETB Led1

CLR Led1

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (3)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (3)

background image

Etykiety

Etykieta jest identyfikatorem wyróżniającym rozkaz lub

dyrektywę. Przypisany jest jej adres, do którego przenoszone jest

sterowanie. Gdy użytkownik pragnie skierować wykonywanie programu

w miejsce oznaczone etykietą, posługuje się jej nazwą, zastępującą adres

fizyczny. Etykieta składa się z ciągu liter i cyfr rozpoczynającego się od

litery.Wielkość liter nie ma znaczenia. Etykieta powinna być zakończona

znakiem ':'. W programie dana etykieta może wystąpić tylko raz, ale

może być do niej wiele odwołań.

Przykład:

JC Petla

Add A,R7

Pętla:Jmp $

Cjne A,#99,Petla

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (4)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (4)

background image

Literały

Literały są nazwami stałych.

Asembler dopuszcza całkowite literały arytmetyczne:

dziesiętne (ciągi cyfr dziesiętnych 0..9). Na końcu
literału można postawić znak 'd' lub 'D‘,

szesnastkowe (heksadecymalne; ciągi cyfr 0..F). Na
końcu literału stawiamy znak 'h' lub 'H',

ósemkowe (oktalne; ciągi cyfr 0..7). Na końcu literału
stawiamy znak ‘o’ lub ’O’,

Dwójkowe (binarne; ciągi cyfr 0..1). Na końcu literału
stawiamy znak ‘b’ lub ’B’.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (5)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (5)

background image

Makroinstrukcje

Makroinstrukcja jest uporządkowanym ciągiem

rozkazów realizujących określoną funkcję. Nazwa
makroinstrukcji składa się z ciągu liter i cyfr
rozpoczynającego się od litery. Wielkość liter nie ma
znaczenia. W programie dana makroinstrukcja może
wystąpić tylko raz, ale może być do niej wiele odwołań.

 

Nazwa MACRO argumenty oddzielone przecinkami

. Zawartość
. Makroinstrukcji

ENDM

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (6)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (6)

background image

Dyrektywy

EQU

(

EQUAL

- równa się)- Służy do deklarowania nazw

stałych.

Składnia:

nazwa

EQU

wyrażenie

 

Przykład:

Stała EQU 5

 

Argumentami wyrażenia mogą być liczby, wcześniej

deklarowane stałe lub kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (7)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (7)

background image

Dyrektywy

DB

(

DATA BYTE

- dana bajtowa)- Umieszcza w kodzie

programu jedną lub ciąg 8-bitowych

danych.Wymienione w ciągu dane zostaną

umieszczone w tej samej kolejności w

pamięci programu bajt po bajcie.

Składnia:

[

Etykieta:

]

DB

ciąg_danych_8-

bitowych_oddzielonych_przecinkami

Przykład:

DB 15,12,Stała,'a','b',‘łańcuch'

Po ostatnim elemencie ciągu nie powinno być przecinka.

Wystąpienie etykiety nie jest wymagane.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (8)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (8)

background image

Dyrektywy

DW

(

DATA WORD

- dana dwubajtowa)- Umieszcza w kodzie

programu jedną lub ciąg 16-bitowych

danych.Wymienione w ciągu dane zostaną

umieszczone w tej samej kolejności w

pamięci programu słowo po słowie.

Składnia:

[

Etykieta:

]

DW

ciąg_danych_16-

bitowych_oddzielonych_przecinkami

Przykład:

DW 1532h,12,Stała,'a','bs'

Po ostatnim elemencie ciągu nie powinno być przecinka.

Wystąpienie etykiety nie jest wymagane.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (9)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (9)

background image

Dyrektywy

DS

(

DATA SEGMENT

– segment danych)- Rezerwuje

wyspecyfikowaną ilość danych w pamięci programu.

Składnia:

[

Etykieta:

]

DS

Rozmiar

Przykład:

Bufor DS 15

DS 10

Rozmiar segmentu danych jest wyrażeniem, na które

mogą składać się liczby, stałe lub kody znaków

ujętych w cudzysłów. Etykieta nie jest wymagana.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (10)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (10)

background image

Dyrektywy

BIT-

Służy do deklarowania nazw stałych.

Składnia:

nazwa

BIT

wyrażenie

 

Przykład:

Stała BIT P3.6

 Argumentami wyrażenia mogą być liczby, wcześniej
deklarowane stałe lub kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (11)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (11)

background image

Dyrektywy

DBIT

(

DATA BIT

- dana bitowa)- Rezerwuje w obszarze

pamięci adresowanym bitowo zadaną
ilość bitów. Argument może być liczbą
całkowitą lub wyrażeniem, którego
wynikiem jest liczba całkowita.

Składnia:

DBIT liczba

Przykład:

DBIT 16 ; rezerwuje obszar 16
bitów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (12)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (12)

background image

Dyrektywy

ORG

- Określa adres początku segmentu

rozkazów lub danych w pamięci programu.

Składnia:

ORG

Wyrażenie

Przykład:

ORG 1Bh

Argumentami wyrażenia mogą być liczby, stałe
lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (13)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (13)

background image

Dyrektywy

DSEG AT

(

DATA SEGMENT

-segment danych)-

Określa adres początku segmentu danych w

pamięci programu.

Składnia:

DSEG AT

Wyrażenie

Przykład:

DSEG AT 0F000h

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (14)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (14)

background image

Dyrektywy

CSEG AT

(

CODE SEGMENT

-segment rozkazów)

Określa adres początku segmentu rozkazów w

pamięci programu.

Składnia:

CSEG AT

Wyrażenie

Przykład:

CSEG AT 0Bh

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (15)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (15)

background image

Dyrektywy

XSEG AT

(

EXTEND SEGMENT

-segment

pamięci zewnętrznej) Określa adres początku

segmentu w pamięci zewnętrznej.

Składnia:

XSEG AT

Wyrażenie

Przykład:

XSEG AT 3Fh

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (16)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (16)

background image

Dyrektywy

BSEG AT

(

BIT SEGMENT

-segment w pamięci

bitów) Określa adres początku segmentu w

pamięci adresowanej bitowo.

Składnia:

BSEG AT

Wyrażenie

Przykład:

BSEG AT 12h

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (17)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (17)

background image

Dyrektywy

EQU

(

EQUAL

- równa się)- Służy do deklarowania nazw

stałych.

Składnia:

nazwa

EQU

wyrażenie

 

Przykład:

Stała EQU 5

 

Argumentami wyrażenia mogą być liczby, wcześniej

deklarowane stałe lub kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (18)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (18)

background image

Dyrektywy

DB

(

DATA BYTE

- dana bajtowa)- Umieszcza w kodzie

programu jedną lub ciąg 8-bitowych

danych.Wymienione w ciągu dane zostaną

umieszczone w tej samej kolejności w

pamięci programu bajt po bajcie.

Składnia:

[

Etykieta:

]

DB

ciąg_danych_8-

bitowych_oddzielonych_przecinkami

Przykład:

DB 15,12,Stała,'a','b',‘łańcuch'

Po ostatnim elemencie ciągu nie powinno być przecinka.

Wystąpienie etykiety nie jest wymagane.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (19)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (19)

background image

Dyrektywy

DW

(

DATA WORD

- dana dwubajtowa)- Umieszcza w kodzie

programu jedną lub ciąg 16-bitowych

danych.Wymienione w ciągu dane zostaną

umieszczone w tej samej kolejności w

pamięci programu słowo po słowie.

Składnia:

[

Etykieta:

]

DW

ciąg_danych_16-

bitowych_oddzielonych_przecinkami

Przykład:

DW 1532h,12,Stała,'a','bs'

Po ostatnim elemencie ciągu nie powinno być przecinka.

Wystąpienie etykiety nie jest wymagane.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (20)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (20)

background image

Dyrektywy

DS

(

DATA SEGMENT

– segment danych)- Rezerwuje

wyspecyfikowaną ilość danych w pamięci programu.

Składnia:

[

Etykieta:

]

DS

Rozmiar

Przykład:

Bufor DS 15

DS 10

Rozmiar segmentu danych jest wyrażeniem, na które

mogą składać się liczby, stałe lub kody znaków

ujętych w cudzysłów. Etykieta nie jest wymagana.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (21)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (21)

background image

Dyrektywy

BIT-

Służy do deklarowania nazw stałych.

Składnia:

nazwa

BIT

wyrażenie

 

Przykład:

Stała BIT P3.6

 Argumentami wyrażenia mogą być liczby, wcześniej
deklarowane stałe lub kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (22)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (22)

background image

Dyrektywy

ORG

- Określa adres początku segmentu

rozkazów lub danych w pamięci programu.

Składnia:

ORG

Wyrażenie

Przykład:

ORG 1Bh

Argumentami wyrażenia mogą być liczby, stałe
lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (23)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (23)

background image

Dyrektywy

DSEG AT

(

DATA SEGMENT

-segment danych)-

Określa adres początku segmentu danych w

pamięci programu.

Składnia:

DSEG AT

Wyrażenie

Przykład:

DSEG AT 0F000h

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (24)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (24)

background image

Dyrektywy

CSEG AT

(

CODE SEGMENT

-segment rozkazów)

Określa adres początku segmentu rozkazów w

pamięci programu.

Składnia:

CSEG AT

Wyrażenie

Przykład:

CSEG AT 0Bh

Argumentami wyrażenia mogą być liczby, stałe

lub kody znaków ujęte w apostrofy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (25)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (25)

background image

Dyrektywy

MACRO

- Rozpoczyna zapis makroinstrukcji.

Przykład:

Dziel MACRO

Mov A,R0

Mov B,R1

Div AB

ENDM

Każde wywołanie nazwy makroinstrukcji powoduje

wstawienie kodu rozkazów w niej umieszczonych.

Wywołanie makroinstrukcji może wystąpić dopiero po jej

deklaracji.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (26)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (26)

background image

Dyrektywy

MACRO argumenty

- Rozpoczyna zapis makroinstrukcji.

Przykład:

Dziel MACRO lbA, lbB

Mov A,lbA
Mov B,lbB
Div AB

ENDM

Każde wywołanie nazwy makroinstrukcji powoduje
wstawienie kodu rozkazów w niej umieszczonych z
aktualnymi wartościami argumentów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (27)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (27)

background image

Dyrektywy

ENDM

- Kończy zapis makroinstrukcji.

Przykład:

Dziel MACRO

Mov A,R0

Mov B,R1

Div AB

ENDM

Każde wywołanie nazwy makroinstrukcji powoduje

wstawienie kodu rozkazów w niej umieszczonych.

Wywołanie makroinstrukcji może wystąpić dopiero po jej

deklaracji.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (28)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (28)

background image

Dyrektywy

END

(koniec)- Kończy zapis programu, wszystkie

występujące po niej znaki i rozkazy są
ignorowane.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (29)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (29)

background image

Dyrektywy

USING

- Zmienia aktualny bank rejestrów.

Składnia:

USING

Nr_banku_rejestrów

Przykład:

USING 3
Mov A,AR0
USING 1
Mov AR1, A

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (30)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (30)

background image

Dyrektywy

USING cd...

Aby informacja o numerze banku została uwzględniona należy
posługiwać się symbolami AR0..AR7, zamiast R0..R7. Metoda ta
pozwala posługiwać się rejestrami z banków 0..3 bez zmiany słowa
stanu programu PSW. Odbywa się to jednak kosztem wydłużenia
kodu programu, gdyż w rzeczywistości powoduje jedynie
wprowadzenie 8 stałych AR0..AR7, których wartość obliczana jest na
podstawie bieżącego Nr_banku_rejestrów. Bank rejestrów można
również zmieniać przez modyfikację bitów RS1 i RS0 słowa stanu
programu PSW.
RS1.RS0=00 - bank 0, adresy 0..7
RS1.RS0=01 - bank 1, adresy 8..15
RS1.RS0=10 - bank 2, adresy 16..23
RS1.RS0=11 - bank 3, adresy 24..31

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (31)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (31)

background image

Funkcje

AND

- Zwraca iloczyn logiczny wskazanych

argumentów.

Składnia:

Argument1

AND

argument2

Przykład:

Mov A,#137 AND 0Fh

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów.

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (32)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (32)

background image

Funkcje

OR

- Zwraca sumę logiczną wskazanych

argumentów.

Składnia:

Argument1

OR

argument2

Przykład:

Mov A,#137 OR 4

Argumentami mogą być liczby, stałe lub kody
znaków ujętych w cudzysłów.
 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (33)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (33)

background image

Funkcje

XOR

- Zwraca sumę modulo 2 wskazanych

argumentów.

Składnia:

Argument1

XOR

argument2

Przykład:

Mov A,#137 XOR 4

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów.

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (34)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (34)

background image

Funkcje

MOD

- Zwraca resztę modulo 2 wskazanych

argumentów.

Składnia:

argument1

MOD

argument2

Przykład:

Mov A, #137 MOD 4

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów.

 

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (35)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (35)

background image

Funkcje

HIGH

(

HIGH BYTE

- starszy bajt)- Zwraca

Starszy bajt wyrażenia.

Składnia:

HIGH

(

wyrażenie

)

Przykład:

Inc HIGH(1235h)

Argumentami mogą być liczby, stałe lub

kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (36)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (36)

background image

Funkcje

LOW

(

LOW BYTE

- młodszy bajt)- Zwraca

młodszy bajt wyrażenia.

Składnia:

LOW

(

wyrażenie

)

Przykład:

Inc LOW(1235h)

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów.

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (37)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (37)

background image

Funkcje

SHL

(

SHIFT LEFT

- przesuń w lewo)- Zwraca liczbę

będącą przesunięciem binarnej reprezentacji o

licznik pozycji w lewo.

Składnia:

argument

SHL

licznik

Przykład:

Mov A, #1 SHL 4

Argument i licznik mogą być liczbami, stałymi lub

kodami znaków ujętych w cudzysłów. Funkcja ma

sens dla licznika < 16.

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (38)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (38)

background image

Operatory

#

- w mnemoniku poprzedza argument

bezpośredni.

Przykład:

Mov A,#5; A 5

Mov A, 5; A (5)

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (39)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (39)

background image

Operatory

@

- w mnemoniku poprzedza adres

pośredni.

Przykład:

Mov A,@R0; A (R0)

Mov A, R0; A R0

 

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (40)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (40)

background image

Operatory

+

- w wyrażeniu oznacza funkcję sumy

arytmetycznej wskazanych argumentów.

Składnia:

argument1

+

argument2

Przykład:

Mov A,#137 + 4

Argumentami mogą być liczby, stałe lub

kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (41)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (41)

background image

Operatory

-

- w wyrażeniu oznacza funkcję różnicy

arytmetycznej wskazanych argumentów.

Składnia:

argument1

-

argument2

Przykład:

Mov A,#137 - 4

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów. Przed stałą lub

etykietą traktowany jest jako zmiana znaku.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (42)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (42)

background image

Operatory

*

- w wyrażeniu oznacza funkcję mnożenia

wskazanych argumentów.

Składnia:

argument1

*

argument2

Przykład:

Mov A,#13 * 4

Argumentami mogą być liczby, stałe lub

kody znaków ujętych w cudzysłów.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (43)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (43)

background image

Operatory

/

- w wyrażeniu oznacza funkcję dzielenia

wskazanych argumentów.

Składnia:

argument1

/

argument2

Przykład:

Mov A,#13 / 4

Argumentami mogą być liczby, stałe lub kody

znaków ujętych w cudzysłów. W rozkazach ANL

C/bit i ORL C/bit oznacza negację wskazanego

bitu.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (44)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (44)

background image

Operatory

$

- interpretowany jest jako bieżący adres.

Składnia:

Rozkaz_Skoku

$

lub

Nazwa

EQU

$

Przykład:
JMP $;skok pod ten sam adres - pętla
Stała1 EQU $;przypisz Stałej1 bieżący
adres

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (45)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (45)

background image

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (46)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Elementy języka (46)

Operatory

Priorytet

Uwagi

@, #

najwyższ

y

adres pośredni,

argument bezpośredni

-

wyższy

minus przed

argumentem

*, /, or, and,

xor, mod, shl,
shr

niższy

 

+, -

najniższy

dodawanie i

odejmowanie

background image

Rejestry SFR (Specjal function registers)

A

- (

ACCUMLATOR

- akumulator)

Akumulator jest rejestrem współpracującym z

jednostką arytmetyczno-logiczną (ARYTHMETIC-

LOGIC UNIT). Z niego jest pobierany argument i do

niego wpisywany jest wynik większości operacji.

Odgrywa kluczową rolę w rozkazach

MOVC

i

JMP

.

Istnieją dwa sposoby dostępu programowego do

akumulatora:

- za pomocą nazwy A, np. MOV A,#5,

- za pomocą nazwy rejestru specjalnego

adresowanego bezpośrednio

ACC

, np. PUSH ACC.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(1)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(1)

background image

Rejestry SFR (Specjal function
registers)

B

- Wykorzystywany jest przy operacji

mnożenia

MUL

i dzielenia

DIV

.

Poza tym może być wykorzystywany jako
rejestr uniwersalny.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(2)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(2)

background image

Rejestry SFR (Specjal function
registers)

C

- (

CARRY FLAG

- wskaźnik przeniesienia)

Bit CY słowa stanu PSW. Wpisywane
jest do niego przeniesienie z najbardziej
znaczącego bitu.
Jest ustawiany podczas wykonywania
operacji arytmetycznych oraz przesunięć.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(3)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(3)

background image

Rejestry SFR (Specjal function
registers)

DPTR

- (

DATA POINTER

- wskaźnik

danych)
16-bitowy wskaźnik danych składający
się z dwóch rejestrów DPH (starszy) i DPL
(młodszy).

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(4)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(4)

background image

Rejestry SFR (Specjal function
registers)

PC

- (

PROGRAM COUNTER

- licznik

rozkazów)
16-bitowy licznik określający adres
pobieranej komórki pamięci programu.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(5)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(5)

background image

Rejestry SFR (Specjal function
registers)

R0..R7

- Mogą być argumentami

rozkazów wykorzystujących adresowanie
przez nazwę rejestru. Mogą również służyć
do adresowania pośredniego.

Przykład:

MOV Rn,A; Rr A

MOV @Ri,A; (Ri) A

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(6)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Zasoby mikrokontrolera(6)

background image

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku *.HEX firmy INTEL

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku *.HEX firmy INTEL

: DD AAAA TR

DANE

SK

początek rekordu (1

znak)

długość rekordu (2

znaki)

adres początku rekordu (4

znaki)

typ rekordu (2 znaki):
00 - Data record
01 - End of file record
02 - Extended segment address
record
03 - Start segment address
record
04 - Extended linear address
record
05 - Start linear address record

zawartość rekordu (DD
znaków)

suma kontrolna (suma
wszystkich bajtów i znaków
sumy kontrolnej = 0)

Ostatni wiersz pliku ma znaczenie specjalne
i ma zawsze poniższą postać:

:00000001FF

.

Wszystkie dane rekordu są w kodzie
heksadecymalnym.

background image

Normalnie każda strona listingu zaczyna się nagłówkiem o

treści:

ASEM-51 V1.3 Copyright (c) 2002 by W.W.Heinz PAGE 1

dodatkowo tylko na pierwszej stronie dopisywany jest
nagłówek:


MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3

=====================================================
 

Source File: demo.a51
Object File: demo.hex
List File: demo.lst

Informuje on o rodzaju asemblera oraz pliku źródłowym,
którego listing dotyczy.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(1)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(1)

background image

Wygląd strony listingu można określić
odpowiednimi dyrektywami asemblera:

$NOPAGING

– nie dzieli listingu na strony,

$PAGING

– dziel listing na strony (domyślnie włączony),

$PAGELENGTH (n)

– długość strony listingu w liniach

(n ilość linii; 12 >= n <= 65535 domyślnie n=64),

$PAGEWIDTH (n)

– szerokość linii listingu w znakach

( n ilość znaków w linii; 72 >= n <= 255 domyślnie
n=132),

$LIST

– włącza generowanie pliku listingu (domyślnie),

$NOLIST

– zapobiega generowaniu pliku z listingiem.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(2)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(2)

background image

Pozostałe linie listingu pogrupowane są w
kolumny:

-

LINE; określa numer linii w pliku źródłowym,

-

I; informuje, że linia należy do pliku

dołączonego lub makra,

-

ADDR; określa adres w aktywnym segmencie,

-

CODE; określa kod rozkazu z bieżącej linii,

-

SOURCE; zawiera postać źródłową programu.

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(3)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(3)

background image

Line I Addr Code Source

 
1: ;A sample List File Demo Program
2: ;-------------------------------
3: $NOMOD51 ;no 8051 SFR
4: N 004F $PAGEWIDTH (79) ;79 columns per
line
5: $NOTABS ;expand tabs
6: N 90 P1 DATA 090H ;port 1 address
7: B 93 INPUT BIT P1.3 ;pulse input
8:
9: N 8000 ORG 08000H ;set location
counter
10: 8000 80 20 SJMP START ;jump to start
address
11:
12: 8002 01 07 DB 1,7 ;define bytes
13: 8004 00 02 00 0C DW 2,12,9 ;define words

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(4)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(4)

background image

Przykład sygnalizowania błędu w programie:

17: 8022 75 30 00 START: MOV COUNT,#0 ;reset counter
18: 8025 30 93 FD LLEVEL: JNB INPUT,LLEVEL ;wait for high
19: 8028 20 93 00 HLEVEL: JB INPUT,HLEUEL ;wait for low

^

@@@@@ symbol not defined @@@@@

 
20: 802B 05 30 INC COUNT ;count pulse
21: 802D 80 F6 JMP LLEVEL ;next pulse

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(5)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(5)

background image

Po wylistowaniu wszystkich linii i ewentualnym poinformowaniu o

błędach listowana jest tabela symboli w postaci ( jeśli nie chcemy aby

była ona tworzona należy użyć dyrektywy $NOSYMBOLS):

L I S T O F S Y M B O L S

=============================

 

 

SYMBOL TYPE VALUE LINE

------------------------------------------------------------

AKKUM REGISTER A 38

COUNT DATA 30 47

HLEVEL CODE 802E 35

INPUT BIT 93 12

LLEVEL CODE 802B 34

MY_PROGRAM MODULE 14

P1 DATA 90

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(6)

ASEMBLER

MIKROKONTROLERÓW RODZINY

MCS-51

Format pliku z listingiem programu(6)


Document Outline


Wyszukiwarka

Podobne podstrony:
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp
fras,systemy wbudowane L, Wstęp do mikrokontrolerów rodziny MCS 51
Asembler dla procesorów Intel Vademecum profesjonalisty
DataSheet MCS 51 Instruction Intel
Faq MCS 51
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp
Schematic Mcs 51
Asembler dla procesorów Intel Vademecum profesjonalisty
Asembler dla procesorow Intel Vademecum profesjonalisty
Mikrokontroler Elektronika analogowa Kurs asemblera dla AVR w przykładach
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp
Słownik Savoir Vivre u Dla Mężczyzn, Henryk Ryszard Żuchowski
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp
Asembler dla procesorow Intel Vademecum profesjonalisty 2
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp
Asembler dla procesorow Intel Vademecum profesjonalisty asinvp

więcej podobnych podstron