Różnice między 'data' a 'equ' w asm dla mikrokontrolera 8051 ? wyjaśnienie Mariusza

asm + 8051





Poprzedni Następny
Wiadomość
Spis treści
From: "Mariusz" <bua_at_nospam_wmc.com.pl>
Subject: asm + 8051
Date: Tue, 12 Mar 2002 18:48:44 +0100


Witam, mam pytanie dotyczace deklaracji w kompilatorze.
Czym rozni sie :
nazwa data 7fh
od :
nazwa equ 7fh

Czy wpisujac dane

mov nazwa,a

dane zostana umieszczone w tym samym miejscu w pamieci wew ?

Mariusz




Poprzedni Następny
Wiadomość
Spis treści
From: "Maciej Gruszecki" <pear_at_nospam_silesianet.pl>
Subject: Odp: asm + 8051
Date: Tue, 12 Mar 2002 20:55:44 +0100


Użytkownik "Mariusz" <bua_at_nospam_wmc.com.pl> napisał w wiadomości
news:a6lf4t$5e7$1_at_nospam_news.tpi.pl...
Witam, mam pytanie dotyczace deklaracji w kompilatorze.
Czym rozni sie :
nazwa data 7fh
od :
nazwa equ 7fh

Czy wpisujac dane

mov nazwa,a

dane zostana umieszczone w tym samym miejscu w pamieci wew ?

W przypadku 8051 w zasadzie nie ma to znaczenia dla kompilatora. Bardziej
dla zasady i czytelności programu. Gdyby to był inny procesor/mikrokontroler
prawdopodobnie w drugim przypadku kompilator zgłosiłby błšd, bo nie można
wpisać akumulatora do stałej wartości.

Pear



Poprzedni Następny
Wiadomość
Spis treści
From: eL eS <el_es_at_nospam_poczta.onet.pl>
Subject: Re: asm + 8051
Date: Tue, 12 Mar 2002 21:19:46 +0100


Mariusz wrote:

Witam, mam pytanie dotyczace deklaracji w kompilatorze.
Czym rozni sie :
nazwa data 7fh
od :
nazwa equ 7fh

Czy wpisujac dane

mov nazwa,a

dane zostana umieszczone w tym samym miejscu w pamieci wew ?

Mariusz

51 ma jak wiadomo osobnš pamięć programu i RAM. Przy pomocy equ
"nazywasz" sobie komórkę (bajt) pamięci RAM. Przy pomocy db, do
miejsca w pamięci programu zależnego od adresu etykiety "nazwa",
wpiszesz stałš wartosć. Ergo: instrukcja
mov nazwa,a
w pierwszym przypadku wpisze akumulator do komorki o adr. 7fh
w drugim przypadku albo zostanie oprotestowana przez kompilator albo
pójscie w maliny. Do dostępu do pamięci programu służy instrukcja movc.

Pozdr.
--
<eL eS>
email#1 : >el_es_at_nospam_poczta.onet.pl<

Poprzedni Następny
Wiadomość
Spis treści
From: "Maciej Gruszecki" <pear_at_nospam_silesianet.pl>
Subject: Odp: asm + 8051
Date: Tue, 12 Mar 2002 21:44:11 +0100


Użytkownik "eL eS" <el_es_at_nospam_poczta.onet.pl> napisał w wiadomości
news:3C8E62E2.58442467_at_nospam_poczta.onet.pl...
Mariusz wrote:

Witam, mam pytanie dotyczace deklaracji w kompilatorze.
Czym rozni sie :
nazwa data 7fh
od :
nazwa equ 7fh

Czy wpisujac dane

mov nazwa,a

dane zostana umieszczone w tym samym miejscu w pamieci wew ?

Mariusz

51 ma jak wiadomo osobnš pamięć programu i RAM. Przy pomocy equ
"nazywasz" sobie komórkę (bajt) pamięci RAM. Przy pomocy db, do

Przy pomocy EQU definiuje się stałe. Do definiowania zmiennych w pamięci
wewnętrznej RAM służy dyrektywa DATA.

miejsca w pamięci programu zależnego od adresu etykiety "nazwa",
wpiszesz stałš wartosć. Ergo: instrukcja
mov nazwa,a
w pierwszym przypadku wpisze akumulator do komorki o adr. 7fh
w drugim przypadku albo zostanie oprotestowana przez kompilator albo
pójscie w maliny. Do dostępu do pamięci programu służy instrukcja movc.

I w pierwszym i w drugim przypadku kompilator dla 8051 wygeneruje dokładnie
taki sam kod. Tutaj chodzi tylko o instrukcję MOV. W mikrokontrolerze
istnieje rozróżnienie adresów w pamięci wewnętrznej od stałych wartości
jeszcze poprzez prefiks #, więc nie ma znaczenia w jaki sposób zdefiniuje
się wartość NAZWA. Można wpisać od razu instrukcję MOV 7Fh,A i też będzie
poprawnie (tylko czy czytelnie, zwłaszcza miesišc po napisaniu programu).

Pear